PostgreSQL数据库性能监控手段之慢SQL、死锁
之前接触PostgreSQL数据库甚少(此前经常使用mysql、db2),直至入职当前某安全公司后,发现数据库都采用PostgreSQL,由于负责性能测试方向,经常需要诊断数据库方面是否存在性能问题,于是整理了PostgreSQL设置慢SQL、查看死锁等常用监控手段。一、慢SQL设置步骤1、笔者以工作中使用的docker为例,PostgreSQL版本为9.5:Postgr...
之前接触PostgreSQL数据库甚少(此前经常使用mysql、db2),直至入职当前某安全公司后,发现数据库都采用PostgreSQL,由于负责性能测试方向,经常需要诊断数据库方面是否存在性能问题,于是整理了PostgreSQL设置慢SQL、查看死锁等常用监控手段。
一、慢SQL设置步骤
1、笔者以工作中使用的docker为例,PostgreSQL版本为9.5:
PostgreSQL正常安装成功后,在docker 的/var/lib/postgresql/9.5/main/postgresql.conf文件中,
添加以下信息,保存并重启PostgreSQL数据库。
#shared_preload_libraries = '' # (change requires restart)
shared_preload_libraries = 'pg_stat_statements'
pg_stat_statements.max = 1000
pg_stat_statements.track = top
2、在 PostgreSQL库中执行以下SQL:
CREATE EXTENSION pg_stat_statements;
3、初始化信息(清除历史监控信息):
select pg_stat_reset();
select pg_stat_statements_reset();
4、慢SQL查询(TOP 10):
SELECT query, calls, total_time, (total_time/calls) as average ,rows,
100.0 * shared_blks_hit /nullif(shared_blks_hit + shared_blks_read, 0) AS hit_percent
FROM pg_stat_statements
ORDER BY average DESC LIMIT 10;
二、查看是否存在死锁
在 PostgreSQL库中执行以下SQL:
SELECT * FROM pg_stat_activity WHERE datname='数据库名称' and waiting='t';
注:waiting等于t时为死锁
更多推荐
所有评论(0)