pg awr报告资料
pg_profile建议默认配置
track_activities = on
track_counts = on
track_io_timing = on
track_functions = all/p1
建议打开,track_activities和track_counts默认是打开的。track_activities允许监控当前被任意服务器进程执行的命令。track_counts控制是否收集关于表和索引访问的统计信息。track_io_timing启用对块读写次数的监控。参数track_functions启用对用户定义函数使用的跟踪。
pg_stat_statements建议配置
shared_preload_libraries = 'pg_stat_statements'
pg_stat_statements.max = 10000
pg_stat_statements.track = 'top'
pg_stat_statements.save = off
pg_stat_statements.max是跟踪语句的最大数目(即pg_stat_statements视图中行的最大数量)。如果语句超过这个数量,最少被执行的语句的信息将会被丢弃。作者说此参数的设置太低可能会导致在抽取样本之前会清除某些语句的统计信息。
pg_stat_statements.track指定top可以跟踪顶层语句(直接由客户端发出的语句),指定all还可以跟踪嵌套的语句(例如在函数中调用的语句),指定none则禁用语句统计信息收集。默认值是top。如果你设置的是all,可能会影响报告中%Totalfields字段的精确值。
查看修改
show pg_stat_statements.max ;
show pg_stat_statements.track ;
更改
alter system set pg_stat_statements.track = top ;
安装
1、安装比较简单,可以直接将压缩包解压放入postgres的extension扩展目录下面即可
#1
tar xzf pg_profile--0.3.4.tar.gz --directory $(pg_config --sharedir)/extension
#2
软件下载:https://github.com/zubkov-andrei/pg_profile
unzip pg_profile-master.zip
cd pg_profile-master
EXPORT PG_CONFIG = /u01/postgresql/pg12/bin/pg_config
make USE_PGXS=y install
cp pg_profile* /u01/postgresql/pg12/share/extension/
cd /u01/postgresql/pg12/share/extension/
chown postgres.postgres pg_*
2、安装扩展
这里有两种方式安装,一种是公共模式安装,这种安装方式最简单。第二种是独立Schema专用安装模式(扩展将创建自己的表、视图、序列和函数。将它们分开是个好主意。如果您不想在使用模块时指定模式限定符,请考虑更改search_path设置。
),这种安装将在自己创建的Schema中建自己的表,视图,序列和函数,可以和其他用户有效的进行隔离。
postgres=# CREATE EXTENSION dblink;
postgres=# CREATE EXTENSION pg_stat_statements;
postgres=# CREATE SCHEMA profile;
postgres=# CREATE EXTENSION pg_profile SCHEMA profile
;
默认pg_profile需要使用dblink和pg_stat_statements扩展包,这两个属于系统自带插件,可选插件是pg_stat_kcache
还可以安装pg_stat_kcache数据,提供有关语句CPU使用率和文件系统负载的信息
查看组件
postgres=# \dx
创建快照生成报告
执行函数创建快照
postgres=# select * from take_sample();
server | result | elapsed
--------+--------+-------------
local | OK | 00:00:02.98
(1 row)
--也可以调用snapshot()来生成快照,pg_profile 0.1.2开始snapshot()函数重命名为take_sample()
执行完之后可以调用show_samples()函数,查看生成的快照
postgres=# select show_samples();
show_samples
---------------------------------
执行get_report命令,任意两个时间段就可以生成AWR报告,如果要生产对比报告,可以使用get_diffreport命令
psql -qtc "select profile.get_report(1,2)" --output awr_report_postgres_1_2.html
每半个小时生成快照的方法:
注意里面的参数是:1与2之间的快照 和 3与4 之间的快照进行对比
psql -h 127.0.0.1 -p 5432 -qtc "select profile.get_diffreport(1,2,3,4)" --output awr_report_postgres_8_9.html
*/30 * * * * psql -c 'SELECT profile.snapshot()' > tmp/pg_awr.log 2>&1
报告总共有六个部分
第一部分是服务器统计,包含了整个数据库再此快照期间的统计信息,例如事务数,内存名中率,元组的操作统计数据,以及数据库调用次数数据库聚簇的统计信息,表空间增长等等
第二部分是TopSQL,包括执行时长,次数,执行消耗的io,以及逻辑读等topN的排序,还包括完整的sql,根据Query ID可以查看具体的SQL。这里根据rows和executions都是10208可能是同一个事务生成
第三部分是Schema的对象统计,包含了Top对象的信息,类似OracleAWR报告的segmentstatistics部分,从这里我们可以定位到DML最频繁的表,增长最快的表等等
第四部分是函数的统计,可以看到调用的次数以及消耗的时间
第五部分是vacuum相关的统计
第六部分是报告快照期间的参数设置