PG的pg_stat_statements插件

太阳2年前技术文章1343

pg_stat_statements可追踪一个服务器所执行的所有 SQL 语句的执行统计信息,可以用于统计数据库的资源开销,分析TOP SQL。


一、插件安装

1、编译安装

进入postgresql源码目录的contrib目录下,查看是否有pg_stat_statements子目录

# pwd
/usr/local/postgresql-12.2/contrib/pg_stat_statements
# make && make install


进入postgresql的安装目录,若在share/extension目录下以下pg_stat_statements相关文件,说明该工具安装成功

# pwd
/usr/local/pgsql/share/extension
[postgres@sansi_test extension]$ ll | grep pg_stat_statements
-rw-r--r-- 1 root root  1246 Oct 25 15:46 pg_stat_statements--1.0--1.1.sql
-rw-r--r-- 1 root root  1336 Oct 25 15:46 pg_stat_statements--1.1--1.2.sql
-rw-r--r-- 1 root root  1454 Oct 25 15:46 pg_stat_statements--1.2--1.3.sql
-rw-r--r-- 1 root root   345 Oct 25 15:46 pg_stat_statements--1.3--1.4.sql
-rw-r--r-- 1 root root   305 Oct 25 15:46 pg_stat_statements--1.4--1.5.sql
-rw-r--r-- 1 root root  1427 Oct 25 15:46 pg_stat_statements--1.4.sql
-rw-r--r-- 1 root root   376 Oct 25 15:46 pg_stat_statements--1.5--1.6.sql
-rw-r--r-- 1 root root   806 Oct 25 15:46 pg_stat_statements--1.6--1.7.sql
-rw-r--r-- 1 root root   191 Oct 25 15:46 pg_stat_statements.control
-rw-r--r-- 1 root root   449 Oct 25 15:46 pg_stat_statements--unpackaged--1.0.sql

2、修改配置文件

-- 预加载插件
shared_preload_libraries='pg_stat_statements,pg_pathman'        //若数据库同时使用pg_pathman,该顺序不可改变
-- pg_stat_statements记录最大行数,默认为1000
pg_stat_statements.max = 10000
pg_stat_statements.track = all

重启数据库生效

# su - postgres
$ pg_ctl -D /data/pgsql12/data restart

3、载入pg_stat_statement

-- 登录数据库,载入pg_stat_statement插件
postgres=# SELECT * FROM pg_available_extensions WHERE name = 'pg_stat_statements';               //查看可用模块
-[ RECORD 1 ]-----+----------------------------------------------------------
name              | pg_stat_statements
default_version   | 1.7
installed_version |
comment           | track execution statistics of all SQL statements executed

postgres=# create extension pg_stat_statements;         //载入模块,载入后pg_stat_statements表可正常使用
CREATE EXTENSION

二、指标含义

postgres=# select * from  pg_stat_statements limit 1;
-[ RECORD 1 ]-------+------------------------------------------------------------------------
userid              | 10                        //用户id
dbid                | 13547                     //数据库oid
queryid             | 1194713979                //查询id
query               | SELECT * FROM pg_available_extensions WHERE name = 'pg_stat_statements'   //查询SQL
calls               | 1                         //调用次数
total_time          | 53.363875                 //SQL总共执行时间
min_time            | 53.363875                 //SQL最小执行时间
max_time            | 53.363875                 //SQL最大执行时间
mean_time           | 53.363875                 //SQL平均执行时间
stddev_time         | 0                         //SQL花费时间的表中偏差
rows                | 1                         //SQL返回或者影响的行数
shared_blks_hit     | 1                         //SQL在在shared_buffer中命中的块数
shared_blks_read    | 0                         //SQL从page cache或者磁盘中读取的块数
shared_blks_dirtied | 0                         //SQL语句弄脏的shared_buffer的块数
shared_blks_written | 0                         //SQL语句写入的块数
local_blks_hit      | 0                         //临时表中命中的块数
local_blks_read     | 0                         //临时表需要读的块数
local_blks_dirtied  | 0                         //临时表弄脏的块数
local_blks_written  | 0                         //临时表写入的块数
temp_blks_read      | 0                         //从临时文件读取的块数
temp_blks_written   | 0                         //从临时文件写入的数据块数
blk_read_time       | 0                         //从磁盘或者读取花费的时间
blk_write_time      | 0                         //从磁盘写入花费的时间


标签: PostgreSQL

相关文章

pg_restore

逻辑备份恢复PG提供了pg_restore的命令可以为通过pg_dump转储的数据进行逻辑恢复。对于SQL脚本可通过psql进行恢复语法pg_restore [connection_option] [...

pgbench 压测工具

pgbench 压测工具

一、基本参数pgbench工具是Postgres自带的一款轻量型基准压测工具。它自定义相关场景下脚本进行1.1 初始化参数参数含义-i / --initialize调用初始化模式-I init_ste...

REPMGR-PG高可用搭建(二)

REPMGR-PG高可用搭建(二)

REPMGR搭建步骤一、介绍repmgr是第二象限开源的一套流复制集群管理工具,用于管理PostgreSQL服务器群集中的复制和故障转移。 支持故障自动转移和手动切换;支持分布式管理集群节点,易扩展,...

PG的analyze与vacuum

analyze-统计信息用于收集表的统计信息,只会对表加读锁,不影响表上其它SQL并发执行,对于大表只会读取表中部分数据 vacuum-碎片回收标记旧版本行的信息为可用,以重复使用这部分空间 更新统计...

pg_probackup

一、pg_probackup概述pg_probackup 是一款免费的postgres数据库集群备份工具,与其他备份工具相比,它主要有如下一些优势:提供增量备份,增量备份一定程度上可以节省磁盘空间的使...

PG的锁(一)

一、表级锁1.1 表级锁模式常见锁模式以及应用场景:ACCESS SHARE :select操作获取该模式锁资源,通常情况下所有只读取不修改表的查询都会获取该模式锁资源ROW SHARE : sele...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。