V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
paddistone
V2EX  ›  数据库

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

  •  
  •   paddistone · Dec 8, 2020 · 2437 views
    This topic created in 1971 days ago, the information mentioned may be changed or developed.

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

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