
在较少数据量(不到 100 条)的情况下,做单次 sqlite 查询大概要多久? 1~2ms 感觉还是很长(使用 ORM 框架)
1 saulshao 2020-12-08 10:02:34 +08:00 1~2m 是啥时间?这种数数量级你讨论耗时一点意义都没有,主要的耗时估计都在硬盘存取上。并且 1ms 和 0.5ms 你基本上都没法统计了。你换成 C 也不会比 Python 快多少。 |
2 msg7086 2020-12-08 10:20:23 +08:00 感觉长可以换 SSD ? |
3 maocat 2020-12-08 10:23:38 +08:00 测一下原生的 sql 试试? ORM 的话它有一个数据序列化成对象,这个也要时间的,你试试一万条数据,结果你会发现查询的很快,时间都耗费在序列化上了 |
4 Vegetable 2020-12-08 10:26:38 +08:00 sqlite3 模块本身就是 c 写的,可能是你硬盘有问题,比如 ECS 的自带硬盘什么的性能比较差。可以和 file:memory 对比一下 |
5 RangerWolf 2020-12-08 10:32:41 +08:00 sqlite 不支持多线程查询 。。。 本身就是一个文件而已 。。。 |
6 CallMeReznov 2020-12-08 10:51:10 +08:00 数据库,先从硬盘 IO 上找毛病基本不会错. |
7 wellsc 2020-12-08 18:41:45 +08:00 单表耗时难道不应该看数据库嘛?和语言关系不大吧 |
8 paddistone OP @saulshao 怎样统计是比较有价值的? @RangerWolf @maocat @msg7086 应用框架已经设计成如此了,因为要支持多种数据库,目前比较方便的方式就是 ORM (反射慢一点比较有名的),然而即使不用 ORM 的话,我也一下想不到其他的方案实现多数据库支持。 原生 sql 语句查询起来必然会快的,只是对工程没多大意义。 @Vegetable 对于 sqlite:memory 这个好像官方不兼容文件方式,只有数据量过大才会写盘? @CallMeReznov 硬盘 IO 问题切入点?这个对应用层是否有可控方案? @wellsc 加索引这种优化都感受不到多大变化,而且原生 sql 速度可以接受(表字段比较多) |
9 msg7086 2020-12-09 10:11:41 +08:00 @paddistone 可我说的是换 SSD 啊? |
10 paddistone OP @msg7086 回错了。。。SSD 的话客户节点机暂不支持,所以就忽略了 |