本帖最后由 郑全 于 2024-3-18 14:44 编辑
软件源:
wget https://github.com/zubkov-andrei ... profile--4.4.tar.gz
拷贝文件到extension
tar -xzvf pg_profile--4.4.tar.gz -C /u01/postgre/pg16/share/extension/
创建扩展
postgres=# CREATE EXTENSION dblink;
postgres=# CREATE EXTENSION pg_stat_statements;
postgres=# CREATE SCHEMA profile;postgres=# CREATE EXTENSION pg_profile SCHEMA profile;
不想指定模式限定符,可以设置search_path
postgres=# set search_path="$user",public,profile;
SET
postgres=# show search_path;
search_path
--------------------------
"$user", public, profile
(1 row)
postgres=# alter user postgres set search_path to "$user", public,profile;
ALTER ROLE
/pgdb/data/postgres.conf#
增加track相关参数
track_activities = on #默认on
track_counts = on #默认打开
track_io_timing = on #默认off 跟踪IO消耗的时间
track_functions = all # none, pl, all default none none:不收集 pl:只收集过程语言函数 all:收集所有的函数
#加载动态库
shared_preload_libraries = 'pg_stat_statements' #修改后需重启生效
#增加pg_stat_statements相关参数
pg_stat_statements.max = 10000 #最多保留多少条统计信息,通过LRU算法,覆盖老的记录(即pg_stat_statements视图中行的最大数量)
pg_stat_statements.track = all #跟踪顶层语句(直接由客户端发出的语句)
pg_stat_statements.track_utility = on 是否跟踪非DML语句 (例如DDL,DCL),on表示跟踪, off表示不跟踪
pg_stat_statements.save = on 重启后是否保留统计信息
重启生效
--重启库pg_ctl stop -D /u01/postgre/pgdata/pg_ctl start -D /u01/postgre/pgdata/
也可以通过pg_stat_kcache 加上CPU,IO的支持
软件包:
https://github.com/powa-team/pg_stat_kcache
#编译安装
su - postgres
unzip pg_stat_kcache-master.zip -d /u01/postgre/pg16/share/extension/
cd /u01/postgre/pg16/share/extension/pg_stat_kcache-master
make
make install
-加载动态库
vi /pgdb/data/postgresql.conf
shared_preload_libraries = 'pg_stat_statements,pg_stat_kcache' # (change requires restart)
--重启库
pg_ctl stop -D /u01/postgre/pgdata/
pg_ctl start -D /u01/postgre/pgdata/
--创建扩展
postgres=# CREATE EXTENSION pg_stat_kcache;
CREATE EXTENSION
执行函数创建快照
SELECT profile.snapshot();
profile.show_samples()函数,查看生成的快照
获取2个时间段之间的AWR报告(18,20为两个快照的ID)
psql -Aqtc "select profile.get_report(18,20)" -o awr_report_postgres_18_20.html
定时创建快照
#add by pg_awr 每1个小时生成1次快照 0 */1 * * * /u01/postgre/pg16/bin/psql -p 5439 -c 'SELECT profile.snapshot()' >> /home/postgres/pg_awr.log 2>&1
#add by pg_awr 每半个小时生成1次快照*/30 * * * * /u01/postgre/pg16/bin/psql -p 5439 -c 'SELECT profile.snapshot()' >> /home/postgres/pg_awr.log 2>&1
后面就是常规的看报告。
|