Campaign Classicv7 — 数据库模块pg_stat_statements的用途和用法
了解db(数据库)模块的用途和用法 pg_stat_statements
在Adobe Campaign Classic v7中。
描述 description
环境
Adobe Campaign Classic v7 (ACC v7)
问题/症状
-
什么是db模块
pg_stat_statements
? -
为什么客户端请求启用它?
-
如何激活它?
解决方法 resolution
-
pg_stat_statements模块提供了一种方法,用于跟踪服务器执行的所有SQL语句的执行统计信息。
必须通过添加来加载模块
pg_stat_statements
到shared_preload_libraries
在postgresql.conf
,因为它需要额外的共享内存。这意味着需要重新启动服务器才能添加或删除模块。
链接 https://www.postgresql.org/docs/9.4/pgstatstatements.html
-
在此表上实施视图类型模式,该模式允许我们监视需要很长时间才能完成的查询。
这样,客户端将能够调整这些并优化性能。
此扩展提供有关运行查询的量度:哪些查询最常运行,以及每个查询需要多长时间。
-
pg_stat_statements
-
验证是否已安装postgres版本的正式PostgreSQL参与者包。
code language-none $ dpkg -l | grep postgres postgresql-contrib-9.3
如果未安装,请安装。
code language-none $ apt-get install postgresql-contrib-9.3
-
更改
postgresql.conf
以在启动时预加载模块。默认:
shared_preload_libraries = ''
新增:
shared_preload_libraries = 'pg_stat_statements'
如果同时使用两者
pg_stat_statements
和auto_explain
,使用 一 用逗号记录和分隔。code language-none shared_preload_libraries = 'auto_explain,pg_stat_statements'
-
在要监视的数据库中,执行
CREATE
查询:无需创建扩展
auto_explain
,仅用于pg_stat_statements
.code language-none psql postgres=# \c mydatabase mydatabase=# CREATE EXTENSION pg_stat_statements;
-
在的自定义OPTIONS部分
postgresql.conf
,添加以下行:code language-none pg_stat_statements.max = 5000 pg_stat_statements.track = all pg_stat_statements.save = on
-
重新启动postgresql服务。
示例:获取数据库中开销最大的5个查询。
code language-none SELECT query, calls, total_time, rows, 100.0*shared_blks_hit/nullif(shared_blks_hit+shared_blks_read,0) AS hit_percent from pg_stat_statements as s inner join pg_database as d on d.oid = s.dbid where d.datname = 'Database_Name' order by total_time desc limit 5;
-