暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PostgreSQL 查询调优清单

alitrack 2021-04-02
271


作者:Tushar Ahuja

原文:PostgreSQL query tuning checklist

网址: https://www.enterprisedb.com/postgres-tutorials/postgresql-query-tuning-checklist


本文提供了可用于改善PostgreSQL查询性能的工具清单。

  1. EXPLAIN

  1. VACUUM

  1. ANALYZE

  1. Database indexes

  1. auto_explain module

  1. pg_stat_statements

  1. Logging

  1. pgBadger

  1. PostgreSQL configuration parameters

在本文中,我们将学习如何改进PostgreSQL查询。性能是最终用户最重要的因素之一。没有人愿意等待10分钟以获得SELECT查询的结果。

没有改进PostgreSQL查询的固定公式,因为查询性能会受到很多因素的影响,例如系统的硬件(RAM,CPU,磁盘类型,磁盘配置)。

这是一份清单(或提示),这些清单是我们应该用来分析工作负载或运行缓慢的查询的地方。

性能是一个非常广泛的主题,因此建议您参考该主题的官方在线PostgreSQL文档:http://postgres.cn/docs/12/performance-tips.html

1. EXPLAIN

EXPLAIN命令显示语句的执行计划,并且基于有关表的统计信息。永远记住正确的计划对于取得良好的业绩至关重要。EXPLAIN命令将分解PostgreSQL执行SQL查询的方式,但这更多是一种估计。我们可以在解释计划中使用ANALYZE关键字,该关键字实际上执行查询,然后显示每个计划节点中累积的真实行数和真实运行时间。

2. VACUUM

VACUUM命令基本上删除由更新删除或过时但未从表中物理删除的元组。这对避免腹胀很有帮助。最好使用VACUUM分析关键字。

有关更多详细信息,请参考PostgreSQL文档:http://postgres.cn/docs/12/sql-vacuum.html。

3. ANALYZE

ANALYZE收集有关数据库中表内容的统计信息,这有助于查询计划者找到最有效的查询执行计划。

有关更多详细信息,请参考PostgreSQL文档:http://postgres.cn/docs/12/sql-analyze.html。

4. Database Indexes数据库索引

始终建议在表上创建索引。否则,PostgreSQL将执行全表扫描,这会使执行查询非常缓慢。

PostgreSQL中可用的索引类型为B树(默认索引),哈希,GiST,SP-GiST和GIN。当表具有主键/唯一键时,PostgreSQL将创建隐式索引。

另外,我们应尽量避免在表上创建未使用或不必要的索引,因为它们也可能影响性能。

我们还可以使用REINDEX命令修复无法使用的索引或索引膨胀时。

有关更多详细信息,请参考PostgreSQL文档:http://postgres.cn/docs/12/sql-createindex.html。

5. auto_explain module

auto_explain模块用于自动记录慢速语句的执行计划。

有关更多详细信息,请参考PostgreSQL文档:

6. pg_stat_statements

pg_stat_statements模块用于跟踪SQL语句的执行统计信息,以识别缓慢的查询。

有关更多详细信息,请参考PostgreSQL文档:http://postgres.cn/docs/12/pgstatstatements.html。

7. Logging

log_min_duration_statement (integer) 有助于跟踪未优化的查询。

8. pgBadger

pgBadger是一个开源工具,可以生成有关数据库服务器活动的详细报告,包括临时文件,慢速查询等。可以从此处下载:https://pgbadger.darold.net/

9. PostgreSQL configuration parameters

我们可能会使用某些PostgreSQL配置参数,可以对其进行更改以获得更好的性能。为此,我们需要编辑postgresql.conf文件,该文件位于安装的$data 目录下。我们可以配置的参数包括max_connections,checkpoint_segments,work_mem和random_page_cost。

有关更多详细信息,请参考PostgreSQL文档:

http://postgres.cn/docs/12/runtime-config-resource.html

http://postgres.cn/docs/12/runtime-config-query.html

另外参数配置方面,有个不错的工具可供借鉴,不会PostgreSQL调优?这款开源工具送给你


每个知识点如果展开都会很长,如果想快速解决问题,还有两个办法:

  • 向专业人士寻求帮助

  • 参加专业的培训,比如中国PostgreSQL DBA认证培训,里面的老师都是这领域的专家

如果需要,可以和我联系,不论是引荐专家还是介绍中国PostgreSQL DBA认证培训。


文章转载自alitrack,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论