国产数据库AntDB插件pg_profile安装说明

1 说明

本文主要介绍基于Antdb数据库的pg_proile插件的安装和使用方法。

使用pg_profile插件可以生成类似于Oracle中的AWR报告,通过分析AWR报告可以深入了解数据库资源的消耗情况。pg_profile基于PostgreSQL的标准统计视图,并结合pg_stat_statements和pg_stat_kcache这两个插件来实现其功能。具体的,pg_profile插件在指定时间间隔内生成快照,可以针对任意两个快照的间隔时间进行性能分析,生成html格式报告汇总展示。主要内容包括捕获库中被任意服务器进程执行的命令、收集关于表和索引访问的统计信息、监控对块的读写次数以及对用户定义函数的使用情况进行跟踪。

2 参数修改

2.1 statistics collector参数说明

Statistics Collector涉及的参数如下:

参数名 参数值 说明 参数级别
track_activities on 跟踪数据库中的活动 superuser
track_counts on 跟踪数据库中的计数器 superuser
track_io_timing on 跟踪 I/O 操作的时间 superuser
track_functions all 跟踪所有函数的调用 superuser
track_wal_io_timing on Postgres 14版本新增参数,跟踪 WAL I/O 操作的时间 superuser

2.2 pg_stat_statements参数说明

pg_stat_statements扩展涉及的参数如下:

参数名 参数值 说明 参数级别
shared_preload_libraries pg_stat_statements 预加载pg_stat_statements模块 postmaster
pg_stat_statements.max 5000 默认值,最多存储5000条语句统计信息 postmaster
pg_stat_statements.track 'top' 默认值,只跟踪最消耗资源的 SQL 语句 postmaster
pg_stat_statements.save on 默认值,保存语句统计信息,在会话结束后也能访问 sighup

2.3 参数修改

2.3.1. 集中式

在任意节点使用antdb数据库操作系统用户++依次++执行以下命令:

sql 复制代码
patronictl -c /etc/patroni_antdbcluster.yml edit-config -p "shared_preload_libraries = 'pg_stat_statements'";
patronictl -c /etc/patroni_antdbcluster.yml edit-config -p "track_activities = on";
patronictl -c /etc/patroni_antdbcluster.yml edit-config -p "track_counts = on";
patronictl -c /etc/patroni_antdbcluster.yml edit-config -p "track_io_timing = on";
patronictl -c /etc/patroni_antdbcluster.yml edit-config -p "track_functions = 'all'";

pg_stat_statements参数需要重启集群生效:

sql 复制代码
patronictl -c /etc/patroni_antdbcluster.yml restart antdbcluster

重启后查看参数是否生效:

sql 复制代码
select name,setting  
  from pg_settings
 where name in('track_activities','track_counts','track_io_timing','track_wal_io_timing','track_functions','shared_preload_libraries','pg_stat_statements.max','pg_stat_statements.track','pg_stat_statements.save')
order by 1;

2.3.2. 分布式

登录mgr节点操作。登录方式:

sql 复制代码
adbmgr
或
adb -p 16432 postgres

cn节点参数

sql 复制代码
-- 修改参数
set coordinator all (track_activities=on,track_counts=on,track_io_timing=on,track_functions='all',shared_preload_libraries='pg_stat_statements');
-- 重启全部cn节点
stop coordinator all;
start coordinator all;

dn节点参数

sql 复制代码
-- 修改参数
set datanode all (track_activities=on,track_counts=on,track_io_timing=on,track_functions='all',shared_preload_libraries='pg_stat_statements');
-- 重启全部dn节点
stop datanode all;
start datanode all;

3 安装pg_profile

3.1 插件下载

下载地址:Releases · zubkov-andrei/pg_profile

说明:pg_profile4.6支持PostgreSQL16及以下版本,PostgreSQL 17版本需要下载pg_profile4.7。

3.2 集中式

3.2.1. 插件安装

上传安装包至任意节点,使用antdb数据库os账号解压至extension目录:

sql 复制代码
chown antdb.antdb pg_profile--4.6.tar.gz
tar zxvf pg_profile--4.6.tar.gz --directory $(pg_config --sharedir)/extension

包含3个文件:

3.2.2. 添加extension

pg_profile扩展依赖于plpgsql和dblink扩展,也就是说要使用pg_profile扩展的话,则必须要同时安装plpgsql和dblink扩展。此外,如果要收集sql语句的统计信息,还需要额外安装pg_stat_statements扩展。这三个扩展插件antdb数据库中均自带,无需下载。

登录数据库,执行以下命令添加拓展:

sql 复制代码
create extension dblink;
create extension pg_stat_statements;
create schema profile;
create extension pg_profile schema profile;

查看拓展:

3.3 分布式

3.3.1. 插件安装

安装方式和集中式一样,需注意的是要在mgr节点安装。

3.3.2. 添加extension

需要添加的拓展同集中式,需注意的是要在cn节点上操作。

说明:创建pg_profile扩展报错,分布式集群暂不支持lateral (select...)语法。后续尝试修改pg_profile--4.6.sql中包含lateral语法的语句以支持安装此拓展。

4 生成awr报告

4.1 打快照

添加profile拓展后,使用以下sql生成一个快照:

sql 复制代码
SELECT profile.take_sample();

查看快照:

sql 复制代码
select * from profile.show_samples();

由于系统没有自动生成快照的手段,需要在命令行执行take_sample()函数生成,因此可以配置一个定时任务去跑以下脚本自动生成快照:

sql 复制代码
adb -p 15432 -c 'SELECT profile.take_sample()' > /dev/null 2>&1

4.2 生成报告

使用get_report函数生成报告,支持多种方式生成。

方式1:基于两个快照点的间隔生成

shell 复制代码
adb -p 15432 -Aqtc "SELECT profile.get_report(1,4)" -o awr_report_1_4.html

方式2:指定时间点生成

shell 复制代码
adb -p 15432 -Aqtc "select profile.get_report(tstzrange('2024-12-31 16:16:30+08','2024-12-31 16:42:18+08'))" -o awr_report_241231.html

方式3:基于最近时间生成

shell 复制代码
adb -p 15432 -Aqtc "select profile.get_report(tstzrange(now() - interval '1 hour',now()))" -o awr_last1h_report.html

5 报告解读

5.1 Report details

报告说明,此部分展示的内容有快照点、开始结束时间和数据库版本信息。

5.2 Server statistics

服务器统计,包含了数据库在此快照期间的统计信息,例如事务数、内存命中率、元组的操作统计等、数据库的调用次数等、数据库聚簇的统计信息,表空间的增长等等。

5.3 SQL query statistics

TopSQL,包括了执行时长、执行次数、执行消耗I/O、执行消耗的逻辑读等,还包含了完整的SQL语句。

5.4 Schema object statistics

Schema的对象信息,包含了Top对象的信息,类似于Oracle AWR报告的segment statistics部分,从这里可以定位到DML最频繁的表、增长最快的表等等。

5.5 User function statistics

用户函数统计,可以看哪些函数执行次数最多。

Vacuum相关统计。

5.7 Cluster settings during the report interval

参数设置详情。

6 拓展插件

以下插件可选安装,有助于获取更详细的报告信息。

6.1 pg_stat_kcache

此插件负责采集系统级别的CPU、IO等负载的信息。

6.2 pg_wait_sampling

收集等待事件信息。

相关推荐
web182854825123 分钟前
SQL 建表语句详解
java·数据库·sql
C182981825753 分钟前
Rabbitmq消息补偿机制
数据库·rabbitmq·mybatis
woshilys8 分钟前
sql server 动态执行sql
数据库·sql·sqlserver
Run Out Of Brain31 分钟前
在macOS上安装MySQL
数据库·mysql·macos
浩然缭绕32 分钟前
Mybatis-plus
数据库·oracle·mybatis
潇湘秦35 分钟前
Oracle DG备库数据文件损坏修复方法(ORA-01578/ORA-01110)
数据库·oracle·ffmpeg
前端 贾公子39 分钟前
MySQL数据库基础 === DDL && DML
数据库·oracle
昵称什么的不存在42 分钟前
binwalkv3安装记录新(成功版)
数据库·postgresql
工业通讯探索者42 分钟前
Profinet转EtherNet/IP网关连接AB PLC的应用案例
运维·服务器·数据库·网络协议·自动化·信息与通信
Elastic 中国社区官方博客1 小时前
如何 cURL Elasticsearch:进入 Shell
大数据·服务器·数据库·elasticsearch·搜索引擎·ssh·全文检索