暂无图片
postgresql 有类似oracle的AWR报告的东西吗?
我来答
分享
暂无图片 匿名用户
postgresql 有类似oracle的AWR报告的东西吗?

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

我来答
添加附件
收藏
分享
问题补充
3条回答
默认
最新
薛晓刚

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

暂无图片 评论
暂无图片 有用 0
打赏 0
肖杰

PG_PROFILE

暂无图片 评论
暂无图片 有用 0
打赏 0
Together

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















暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交