Postgres调整

时间:2009-07-23 04:11:53

标签: postgresql performance

在Postgres中专门编写更快速查询的有效方法是什么?请不要包括通常良好的数据库实践(例如使用索引或规范化)。我正在寻找像派生表的工作速度比子查询更快或使用python字符串函数似乎比pgsql字符串函数更快的提示。理想情况下,此列表将包括现实世界的示例和建议。

感谢。

3 个答案:

答案 0 :(得分:8)

到目前为止,我发现的唯一牢不可破的规则是没有牢不可破的规则。

有时子查询更快,有时加入更快。有时你想要plpgsql,有时你想要一些其他的pl /*.

通常最充分的建议:

  1. 确保您真空并分析(打开autovacuum)
  2. 使用说明分析并学会很好地阅读其输出
  3. 播放与数据库。试着做一些奇怪的事情。通常 - 它没有帮助。但有时会这样,而且你会学到新的技巧。

答案 1 :(得分:7)

确保定期吸尘。在大多数情况下,目前的自动真空系统在这方面表现相当不错,但定期运行全手动真空仍然有帮助(在我们的情况下,这种情况大约每年发生一次)。

如果统计数据可用于表,则仅可靠地使用索引。确保在对表进行任何重大更改(大量插入/删除)之后运行真空 - 分析,以确保正确选择索引。

默认的Postgres配置针对具有相对适中的资源和慢速磁盘的系统进行了优化。如果你的系统有更快的磁盘(可能),更快的CPU(可能),或更多的RAM(几乎可以肯定),那么请确保根据它调整各种参数。主要是增加缓冲区大小,但如果你有极快的磁盘(特别是SSD),那么降低寻道时间的成本估算也是一个好主意。

我在相当复杂的查询中也有一些稍微缓慢的连接经验,但这些更难以概括。通常,与具有更复杂的查询优化器(例如,Oracle或DB2)的数据库中可能需要的相比,查询更明确是有帮助的。

答案 2 :(得分:1)

查看此页面上的所有链接,因为您正在进行实际调整,最好知道所有选项的含义以及它们何时适用于您的配置。

https://wiki.postgresql.org/wiki/Performance_Optimization