目录标题
PostgreSQL 慢查询优化与 pg_stat_statements
使用
在 PostgreSQL 中,优化慢查询的过程通常包括启用慢查询日志、收集慢查询信息、分析查询执行计划并进行查询优化。以下是如何有效地识别和优化 PostgreSQL 中的慢查询的步骤:
1. 启用慢查询日志
首先,确认慢查询日志是否已启用。可以通过查询 pg_settings
视图来检查 log_min_duration_statement
的值。如果该值为 -1
,表示慢查询日志未开启。你可以将其设置为一个正数值(以毫秒为单位),例如5000毫秒,以记录执行时间超过5秒的查询。
-- 查看当前的设置
SELECT name, setting FROM pg_settings WHERE name = 'log_min_duration_statement';
-- 启用慢查询日志,设置为 5000 毫秒(即超过 5 秒的查询将被记录)
SET log_min_duration_statement = 5000;
通过开启慢查询日志,你可以捕获到所有执行时间超过 5 秒的查询。
2. 使用 pg_stat_statements
扩展收集查询统计信息
pg_stat_statements
是 PostgreSQL 的一个扩展,用于收集所有 SQL 查询的执行统计信息。确保该扩展已经启用:
-- 启用扩展
CREATE EXTENSION pg_stat_statements;
启用后,可以使用以下查询来查看所有查询的统计信息,包括查询文本、执行时间、执行次数等:
SELECT * FROM pg_stat_statements;
3. 查找执行时间较长的查询
使用 pg_stat_statements
查看执行时间超过 5 秒(5000 毫秒)的查询,帮助识别慢查询:
SELECT quer