是否有任何(最好是开源的)软件无法分析PostgreSQL EXPLAIN,并推荐必要的索引以加快查询速度?
是否有任何(最好是开源的)软件无法分析PostgreSQL EXPLAIN,并推荐必要的索引以加快查询速度?
Answers:
我实际上是在几分钟前找到的:http : //explain.depesz.com/。您粘贴EXPLAIN ANALYZE的结果,它会向您显示可能存在问题的位置(甚至使用颜色编码)。
从帮助部分...
describe.depesz.com是用于查找导致查询缓慢的真正原因的工具。通常,将使用EXPLAIN ANALYZE查询;并读取输出。问题在于,并非所有人都能轻易理解输出的所有部分,并且并非总是很明显,在第一个17.3毫秒内执行的节点比在100毫秒内运行的节点更快或更慢-鉴于第一个节点已执行7次。要使用该站点,只需转到其第一页并粘贴在那里,以解释psql的输出分析。此输出可能看起来像这样。上传后,您将被定向到显示已解析的页面,并且很好地着色(很好,至少对我来说是好:)。看起来可能像这样。旁注:彩色输出的url是持久的,因此,您可以简单地使用它向其他人展示它-例如,在freenode上的IRC频道#postgresql上向那些好人展示。该图使用4种颜色标记重要的事物:白色背景-一切都很好黄色背景-给定节点令人担忧的棕色背景-给定节点更加令人担忧的红色背景-给定节点非常令人担忧使用哪种颜色,是根据哪种模式选择的您将使用:“独占”,“包含”或“行X”。
我不知道有任何算法可用于Postgres的工具,而且我认为人脑(通常是在开发环境中进行一些实验)确实是这里唯一合适的工具。涉及很多因素,包括查询计划程序是否甚至认为您的索引值得使用-这取决于您的安装调整查询计划程序设置的方式以及所涉及表的大小/统计信息( s)。
我可以提出的最佳建议是做一个EXPLAIN ANALYZE
(这ANALYZE
很重要-它会为您提供查询和子计划的运行时间),亲自查看结果并攻击您看到的最大数量。您可能会编写一个解析器来分解EXPLAIN输出(尤其是在9.0中带有JSON输出),但是我还不知道有人解决了这个问题(这基本上是MS-SQL的优化程序的工作...)