PostgreSQL pg_profile 报告

1 背景知识

pg_profile 有两种报告:

  1. 常规报告,包含报告期间的示例工作负载的统计信息。可以使用 get_report 函数快照生成报告。
  2. 差异报告,包含两个区间的数据,用于比较两个区间的对象统计值。可以使用 get_diffreport 函数快照生成报告。

2 性能测试

完成 PostgreSQL BenchMarksql 6.0 性能测试 。并生成报告。

3 查看快照列表

查看快照列表确定需要报告的生成区间。

SELECT profile.show_samples('omega');
SELECT profile.show_samples('local');

4 常规报告生成

  1. 使用 local 本地服务器的快照 ID 665714 生成常规报告。
psql -U postgres -d testdb -Aqtc "SELECT profile.get_report(665,714)" -o report_local_Last24h_665_714.html
  1. 指定 omega 远程服务器的快照 ID 5960 生成常规报告。
psql -U postgres -d testdb  -Aqtc "SELECT profile.get_report('omega',334,388)" -o report_omega_Last24h_334_388.html
  1. 指定 omega 远程服务器的快照时间在 2024-06-28 23:51:35+032024-06-29 00:52:18+03 生成常规报告。
psql -U postgres -d testdb -Aqtc "select profile.get_report('omega',tstzrange('2024-07-04 09:00:01+08','2024-07-05 09:00:01+08'))" -o report_omega_070409_070509.html
  1. 指定 omega 远程服务器的快照时间在过去 24H 之内的时间范围,生成常规报告。
psql -U postgres -d testdb -Aqtc "select profile.get_report('omega',tstzrange(now() - interval '1 day',now()))" -o report_omega_last24h.html
Note

这里是一个常规报告的示例,请点击查看。
[[report_local_Last24h_665_714.html]]
[[report_omega_Last24h_334_388.html]]
[[report_omega_070409_070509.html]]
[[report_omega_last24h.html]]

5 差异报告生成

5.1 指定快照 ID 生成差异报告

  1. 使用 318326 作为第一个区间,使用 372380 作为第二个区间。生成差异报告
psql -U postgres -d testdb -Aqtc "SELECT profile.get_diffreport('omega', 318, 326, 372, 380)" -o report_diff_omega_0704_0705_range_01:00_05:00.html

5.2 指定基线名称生成差异报告

  1. 创建 7月04日 01:00-05:00 时间区间 的基线。
SELECT profile.drop_baselinename,'omega_318_326';
SELECT profile.create_baselinename,'omega_318_326',318,326;
  1. 创建 7月05日 01:00-05:00 时间区间的基线。
SELECT profile.drop_baselinename,'omega_372_380';
SELECT profile.create_baselinename,'omega_372_380',372,380;
  1. 查看已创建的基线。
SELECT profile.show_baselinesname;
show_baselines      
--------------------------
 (omega_318_326,318,326,)
 (omega_372_380,372,380,)
(2 rows)

更多生成差异报告的方式请见 pg_profile 的基线

  1. 使用 omega_06_28_15 基线作为第一个区间,使用 omega_06_29_15 作为第二个区间。生成差异报告。
psql -U postgres -d testdb -Aqtc "SELECT profile.get_diffreportname,'omega_318_326','omega_372_380'" -o report_diff_baseline_omega_0704_0705_01:00_05:00.html
Note

这里是一些差异报告的示例。
[[report_diff_omega_0704_0705_range_01_00_05_00 1.html]]
[[report_diff_baseline_omega_0704_0705_01_00_05_00.html]]

更多生成差异报告的方式请见 get_diffreport 函数。