如
SQLite Documentation所述,人们可以使用:
sqlite> .timer ON
或者向〜/ .sqliterc添加相同的命令
当这样做完成时,SQLite shell会响应执行的每个查询的CPU Time的用户和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
当我发现this answer为几秒钟的时间单位提供证据时,我很难同意.当使用秒表计时执行查询时,我发现几乎每个查询的花费要比使用shell的时间长.例如,上述示例中的查询大概花了1分54秒的时间.这个差异的原因是什么?
那么再一次,单位是什么?什么是用户和系统组件?
我在运行SQLite 3.7.14的Debian GNU / Linux 6.0.6(挤压)分发可通过NFS访问.
解决方法
用户是CPU花费在用户空间中执行代码(即数据库本身)的时间; 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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。