
postgresql 有类似oracle的AWR报告的东西吗?

官方社区没有。中国的瀚高做了一个,挺像的,也不错。


postgresql 11版本
参数修改:
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启用对用户定义函数使用的跟踪。
打开上述4个参数之后,还需要配置pg_stat_statements
pg_stat_statements.max是跟踪语句的最大数目(即pg_stat_statements视图中行的最大数量)。如果语句超过这个数量,最少被执行的语句的信息将会被丢弃。作者说此参数的设置太低可能会导致在抽取样本之前会清除某些语句的统计信息。建议设置大一些。当前参数我们设置的50000,足够使用。
pg_stat_statements.track指定top可以跟踪顶层语句(直接由客户端发出的语句),指定all还可以跟踪嵌套的语句(例如在函数中调用的语句),指定none则禁用语句统计信息收集。默认值是top。如果你设置的是all,作者说可能会影响报告中%Totalfields字段的精确值。
上面参数修改稍为简单,因为基本上都是默认打开的。只有少数没开,打开也不需要重启。
重新加载下:
pg_ctl -D /postgresql/data reload
解压pg_profile包后,放到指定的目录(/usr/pgsql-11/share/extension/)
# cp pg_profile* `pg_config --sharedir`/extension
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数据,提供有关语句CPU使用率和文件系统负载的信息
注:如果是通过网络yum安装的,需要安装一个包,yum install -y postgresql11-contrib
创建快照
postgres=# SELECT profile.snapshot();
snapshot
------------------------
(local,OK,00:00:00.16)
(1 row)
执行完成之后,可以通过profile.show_samples()函数,查看生成的快照。
postgres=# select profile.show_samples();
show_samples
-----------------------------------
(1,"2021-11-24 13:40:52+08",t,,,)
(2,"2021-11-24 15:23:28+08",t,,,)
(2 rows)
当前总共有2个快照,执行profile.get_report命令,取2个时间段就可以生成AWR报告了。如果要生产对比报告,可以执行profile.get_diffreport命令。
psql -qtc "select profile.get_report(1,2)" --output awr_report_postgres_1_2.html
如果要每半个小时生成快照,需要把脚本放在corntab下执行。
*/30 * * * * psql -c 'SELECT profile.snapshot()' > tmp/pg_awr.log 2>&1


