当前位置: 首页 > article >正文

国产数据库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_activitieson跟踪数据库中的活动superuser
track_countson跟踪数据库中的计数器superuser
track_io_timingon跟踪 I/O 操作的时间superuser
track_functionsall跟踪所有函数的调用superuser
track_wal_io_timingonPostgres 14版本新增参数,跟踪 WAL I/O 操作的时间superuser

2.2 pg_stat_statements参数说明

pg_stat_statements扩展涉及的参数如下:

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

2.3 参数修改

2.3.1. 集中式

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

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参数需要重启集群生效:

patronictl -c /etc/patroni_antdbcluster.yml restart antdbcluster

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

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节点操作。登录方式:

adbmgr
或
adb -p 16432 postgres

cn节点参数

-- 修改参数
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节点参数

-- 修改参数
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目录:

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数据库中均自带,无需下载。

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

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生成一个快照:

SELECT profile.take_sample();

查看快照:

select * from profile.show_samples();

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

adb -p 15432 -c 'SELECT profile.take_sample()' > /dev/null 2>&1

4.2 生成报告

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

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

adb -p 15432 -Aqtc "SELECT profile.get_report(1,4)" -o awr_report_1_4.html

方式2:指定时间点生成

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:基于最近时间生成

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

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

5.6 Vacuum-related statistics

Vacuum相关统计。

5.7 Cluster settings during the report interval

参数设置详情。

6 拓展插件

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

6.1 pg_stat_kcache

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

6.2 pg_wait_sampling

收集等待事件信息。


http://www.kler.cn/a/465719.html

相关文章:

  • ABAP 两个内表不同名称字段赋值的方法
  • [coredump] 生成管理
  • MIPI_DPU 综合(DPU+MIPI+Demosaic+VDMA 通路)
  • 力扣hot100——贪心
  • 使用python调用翻译大模型实现本地翻译【exe客户端版】
  • Elasticsearch: 高级搜索
  • xdoj isbn号码
  • echarts 饼图超过9种颜色就重复了,如何自定义颜色
  • 【vue项目中漏洞修复】
  • Spring源码分析之事件机制——观察者模式(一)
  • 硬件-射频-PCB-常见天线分类-ESP32实例
  • 855. 考场就座
  • 线性代数自学资源推荐我的个人学习心得
  • Java 代码审计入门-07】SQL关键字
  • HTML5新特性|05 CSS3边框CSS3背景
  • 每天40分玩转Django:Django性能优化
  • wpf 国际化 try catch comboBox
  • C# 设计模式(结构型模式):享元模式
  • 如何在iOS 11 中禁用高效图像格式 (HEIF)
  • 【Vim Masterclass 笔记01】Section 1:Course Overview + Section 2:Vim Quickstart
  • 适用不同业务场景的6种销售预测模型
  • WPF自定义任务栏缩略图
  • CSS进阶和SASS
  • halcon三维点云数据处理(二)
  • 《向量数据库指南》混合检索系统的深度探索与实践:从POC到生产级解决方案的构建
  • 毕设中所学