PostgreSQL pg_stat_statements 安装与配置

1 背景知识

本文主要介绍如何在 PostgreSQL16 环境下安装 pg_stat_statements 插件。

2 pg_stat_statements 安装

2.1 数据库配置

此插件在启动数据库时,还需使用共享缓存存放SQL 的统计信息。所以需要配置 shared_preload_libraries 参数。并且还需要配置 pg_stat_statements 插件。

su - postgres
#postgres>
vi $PGDATA/postgresql.conf
# postgresql.conf
shared_preload_libraries = 'pg_stat_statements'

重启数据库之后,在每个数据库中安装扩展。

pg_ctl restart -D $PGDATA
waiting for server to shut down.... done
server stopped
waiting for server to start....2024-06-09 14:40:59.919 CST   [2381]LOG:  00000: redirecting log output to logging collector process
2024-06-09 14:40:59.919 CST   [2381]HINT:  Future log output will appear in directory "pg_log".
2024-06-09 14:40:59.919 CST   [2381]LOCATION:  SysLogger_Start, syslogger.c:712
 done
server started
su - postgres
#postgres>
psql -U postgres -d testdb -c "CREATE EXTENSION pg_stat_statements CASCADE;"
psql -U postgres -d template1 -c "CREATE EXTENSION pg_stat_statements CASCADE;"
psql -U postgres -d postgres -c "CREATE EXTENSION pg_stat_statements CASCADE;"

2.2 pg_stat_statements 配置

psql -U postgres -d testdb -c "ALTER SYSTEM SET pg_stat_statements.max=10000;"
pg_ctl restart -D $PGDATA
psql -U postgres -d testdb -c "SHOW  pg_stat_statements.max;"
pg_stat_statements.max 
------------------------
 10000
(1 row)

关于 pg_stat_statements.max 参数的详细说明,请参考 pg_stat_statements.max 章节。