在较少数据量(不到 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 的话客户节点机暂不支持,所以就忽略了
|