代码之家  ›  专栏  ›  技术社区  ›  User1

后调谐

  •  7
  • User1  · 技术社区  · 15 年前

    在Postgres中,有哪些有效的方法可以更快地编写查询?请不要包括一般良好的数据库实践(如使用索引或规范化)。我在寻找一些提示,比如派生表比子查询工作得更快,或者使用python字符串函数比pgsql字符串函数更快。理想情况下,这个列表将包括现实世界的例子和建议。

    谢谢。

    3 回复  |  直到 10 年前
        1
  •  7
  •   jsight TaherT    15 年前

    确保定期真空。目前的自动真空系统在大多数情况下都能很好地实现这一点,但是定期运行全手动真空仍然很有帮助(在我们的情况下,这种情况每年大约发生一次)。

    只有当统计信息可用于表时,才可靠地使用索引。确保在对表进行任何重大更改(大量插入/删除)后运行真空分析,以确保正确选择索引。

    默认的Postgres配置针对资源相对较少、磁盘速度较慢的系统进行了优化。如果您的系统有更快的磁盘(可能),更快的CPU(可能),或者更多的RAM(几乎可以肯定),那么请确保根据这些调整各种参数。主要的事情是增加缓冲区的大小,但是如果您有非常快的磁盘(特别是SSD),最好也降低搜索时间的成本估计。

    在相当复杂的查询中,我也有过一些连接速度稍慢的经验,但这些经验更难概括。一般来说,与使用更复杂的查询优化器(例如,Oracle或DB2)的数据库中可能需要的内容相比,使用查询更显式会有所帮助。

        2
  •  8
  •   user80168    15 年前

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

    有时子查询更快,有时连接更快。有时需要plpgsql,有时需要其他pl/*。

    最常见的建议是:

    1. 确保真空和分析(打开自动真空)
    2. 使用explain analyze和learn很好地阅读其输出
    3. 使用数据库。试着做一些奇怪的事情。通常-没用。但有时会,你会学到新的技巧。
        3
  •  1
  •   ART GALLERY    10 年前

    签出此页面上的所有链接,因为您正在进行实际的优化,所以最好知道所有选项的含义以及它们中的任何一个何时应用于您的配置。

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