SQLite查询的执行时间:单位

 江西风起如斯 发布于 2022-12-19 16:30

如SQLite文档中所述,可以使用:

sqlite> .timer ON

或者向〜/ .sqliterc添加相同的命令

完成此操作后,SQLite shell将为每个执行的查询响应CPU时间的用户和sys组件:

user@machine% sqlite3 test.db
-- Loading resources from ~/.sqliterc

SQLite version 3.7.14 2012-09-03 15:42:36
Enter ".help" for instructions
Enter SQL statements terminated with a ";"

sqlite> select count(*) from my_table;
count(*)
10143270
CPU Time: user 0.199970 sys 1.060838

虽然我发现这个答案提供了时间单位的证据,但是我很难同意它.当使用秒表计时执行查询时,我发现几乎所有查询都需要花费的时间超过shell的时间.例如,在上面的例子中定时查询大约花了1分54秒实时.造成这种差异的原因是什么?

再一次,这些单位是什么?什么是用户sys组件?

我在可通过NFS访问的Debian GNU/Linux 6.0.6(squeeze)发行版上运行SQLite 3.7.14.

1 个回答
  • userCPU是用于在用户空间中执行代码的时间(即,在数据库本身中); sys用于内核中的代码.

    在进行I/O时,CPU花费大部分时间等待.

    SQLite的最新版本也显示已用实时:

    SQLite version 3.8.6 2014-08-15 11:46:33
    Enter ".help" for usage hints.
    Connected to a transient in-memory database.
    Use ".open FILENAME" to reopen on a persistent database.
    sqlite> .timer on
    sqlite> UPDATE ...;
    Run Time: real 36.591 user 17.362911 sys 1.809612
    

    2022-12-19 16:32 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有