【问题标题】:Is there a tool to profile sqlite queries?是否有分析 sqlite 查询的工具?
【发布时间】:2011-03-13 02:28:57
【问题描述】:

我正在使用 SQLite 数据库,并希望加快查询速度,可能使用索引或完全重组它们。

是否有分析查询的工具,它可以帮助我确定事情在哪里变慢了?

我知道我可以在 SQLite Administrator 之类的工具中输入查询来为它们计时,但我正在寻找比这更系统的东西——也许是一些位于后台并查看我的所有查询的东西输入一段时间,给出任何瓶颈的细分。

【问题讨论】:

  • +1 提出一个好问题。我也想要其中之一。显然你在这里问之前用谷歌搜索过,所以可能不太可能。您是否也查看过 SOURceForge 和 FreshMeat?
  • 在 google 上搜索“sqlite 配置文件”会产生:katastrophos.net/andre/blog/2007/01/04/… 但这是 sqlite shell 的补丁,我希望避免使用它,而且我认为它不会起到我的作用想。 Sourceforge/FM 没有产生任何感兴趣的结果(不是我在问原始问题之前在那里检查过的)。

标签: profiling sqlite


【解决方案1】:

这只会回答问题的一部分(很遗憾,这是最无用的部分)。

我在谷歌上搜索了这个,因为我正在寻找一些时间查询的东西,而 sqlite3 客户端有一个计时器元命令。

sqlite> .timer 开启

从那时起,所有查询结果都将附加 cpu 计时器统计信息。 希望这至少有一点帮助。

【讨论】:

  • +1 虽然这不能回答问题,但我敢打赌,访问此页面的 50% 的人都在寻找什么
【解决方案2】:

你在这里有各种各样的问题。要查看运行了哪些查询以及每个查询需要多长时间,您需要修改 sqlite3.dll(如果有应用程序链接到该应用程序,或者如果它是您自己的应用程序,您可以更轻松地将其写入您的代码中(我们会这样做,而且很长)查询、交易、时间安排等)。

对于单个查询分析,您可以使用EXPLAIN。它不会告诉您查询中各个步骤的时间安排,但会告诉您查询是如何执行的。

http://www.sqlite.org/lang_explain.html

SQL 语句前面可以有关键字“EXPLAIN”或短语“EXPLAIN QUERY PLAN”。任一修改都会导致 SQL 语句表现为查询,并返回有关在 EXPLAIN 关键字或短语被省略时 SQL 语句将如何操作的信息。

当 EXPLAIN 关键字单独出现时,它会使语句表现为一个查询,该查询返回虚拟机指令序列,如果没有 EXPLAIN 关键字,它将用于执行命令。当 EXPLAIN QUERY PLAN 短语出现时,该语句返回有关将使用哪些索引的高级信息。

EXPLAIN 和 EXPLAIN QUERY PLAN 的输出仅用于交互式分析和故障排除。输出格式的详细信息可能会从 SQLite 的一个版本到下一个版本发生变化。应用程序不应使用 EXPLAIN 或 EXPLAIN QUERY PLAN,因为它们的确切行为未记录、未指定且可变。

【讨论】:

  • 我会接受这个答案,尽管这不是我想听到的答案。我希望有一个稍微高级一点的工具来完成这项工作。
  • @bryn,我同意你的观点,SQLite 通常缺乏好的高级工具。考虑到它的使用范围有多广,这实际上是相当令人惊讶的。也许它的绝大多数用途都与小型数据库(即嵌入式设备)隔离,这些数据库具有简单的架构,不需要良好的管理或分析工具。
【解决方案3】:

现在 SQLite 有实验性的sqlite3_tracesqlite3_profile(详见https://www.sqlite.org/c3ref/profile.html)。它们可以派上用场,以便在长时间测试期间进行统计/调查罪魁祸首。

【讨论】:

  • 提供一个简单的例子来说明如何使用它会非常好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-17
  • 2020-05-30
  • 1970-01-01
  • 2010-11-02
  • 2010-11-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多