Python 单次查表耗时多少才正常?

2020-12-08 09:42:53 +08:00
 paddistone

在较少数据量(不到 100 条)的情况下,做单次 sqlite 查询大概要多久? 1~2ms 感觉还是很长(使用 ORM 框架)

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

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/733175

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX