pg_profile: 模式对象统计信息

三月 7, 2024

摘要:报告的此部分包含了热点数据库对象,它基于统计收集器视图中的统计信息。

目录

按顺序扫描数据量排列的热表

热点数据库表,按照顺序扫描读取的估计数据量排序。它基于 pg_stat_all_tables 视图。在这里你可以搜索表,可能缺少一些索引。当没有使用 pg_relation_size() 收集的关系大小时,大小估计将基于 pg_class.relpages 字段来计算。这会不太准确,因此这些值将出现在方括号中。

  • DB - 表的数据库名称
  • Tablespace - 表所在的表空间名称
  • Schema - 表的模式名称
  • Table - 表名
  • ~SeqBytes - 通过顺序扫描读取的估计数据量。它是针对报表中的所有样本,其中涉及的关系大小乘以 seq_scan 的总和来计算得出的。
  • SeqScan - 对表执行的顺序扫描次数(seq_scan 字段)
  • IxScan - 在表上启动的索引扫描次数(idx_scan 字段)
  • IxFet - 索引扫描获取的活跃行数(idx_tup_fetch 字段)
  • Ins - 插入的行数(n_tup_ins 字段)
  • Upd - 更新的行数(包括 HOT)(n_tup_upd 字段)
  • Del - 删除的行数(n_tup_del 字段)
  • Upd(HOT) - HOT 更新的行数(n_tup_hot_upd 字段)

按获取块数排列的热表

获取的块是从磁盘(读取)或从共享缓冲区(命中)处理的块。该列表中的表按照表关系、表索引、TOAST 表(如果存在)和 TOAST 索引(如果存在)的获取块数进行排序。本节可以让您聚焦于处理块过多的表。它基于 pg_statio_all_tables 视图的数据。

  • DB - 表的数据库名称
  • Tablespace - 表所在的表空间名称
  • Schema - 表的模式名称
  • Table - 表名
  • Heap - 获取的关系块的统计信息(heap_blks_read + heap_blks_hit
  • Ix - 获取的所有关系索引块的统计信息(idx_blks_read + idx_blks_hit
  • TOAST - 获取的 TOAST 表块的统计信息(toast_blks_read + toast_blks_hit
  • TOAST-Ix - 获取的 TOAST 索引块的统计信息(tidx_blks_read + tidx_blks_hit

此表中的每个统计字段分为两列:

  • Blks - 在关系堆、索引、TOAST 或 TOAST 索引上获取的块数
  • %Total - 在关系堆、索引、TOAST 或 TOAST 索引上获取的块数,占整个实例中获取的所有块数的百分比

按读取块数排列的热表

按块读取次数排序的热表。该列表中的表按照表关系、表索引、TOAST 表(如果存在)和 TOAST 索引(如果存在)的读取块数进行排序。本节可以让您聚焦于读取块过多的表。它基于 pg_statio_all_tables 视图的数据。

  • DB - 表的数据库名称
  • Tablespace - 表所在的表空间名称
  • Schema - 表的模式名称
  • Table - 表名
  • Heap - 读取的关系块的统计信息(heap_blks_read
  • Ix - 读取的所有关系索引块的统计信息(idx_blks_read
  • TOAST - 读取的 TOAST 表块的统计信息(toast_blks_read
  • TOAST-Ix - 读取的 TOAST 索引块的统计信息(tidx_blks_read
  • Hit(%) - 从共享缓冲区中获取的堆、索引、TOAST 和 TOAST 索引块的数量,占从共享缓冲区和文件系统中获取的所有块的百分比

此表中的每个读取统计分为两列:

  • Blks - 在关系堆、索引、TOAST 或 TOAST 索引上读取的块数
  • %Total - 在关系堆、索引、TOAST 或 TOAST 索引上读取的块数,占整个实例中读取的所有块数的百分比

DML 影响行数多的表

按 DML 影响行数排序的热表,即 n_tup_insn_tup_updn_tup_del 的总和(包括 TOAST 表)。

  • DB - 表的数据库名称
  • Tablespace - 表所在的表空间名称
  • Schema - 表的模式名称
  • Table - 表名
  • Ins - 插入的行数(n_tup_ins 字段)
  • Upd - 更新的行数(包括 HOT)(n_tup_upd 字段)
  • Del - 删除的行数(n_tup_del 字段)
  • Upd(HOT) - HOT 更新的行数(n_tup_hot_upd 字段)
  • SeqScan - 对表执行的顺序扫描次数(seq_scan 字段)
  • SeqFet - 顺序扫描获取的活跃行数(seq_tup_read 字段)
  • IxScan - 在表上启动的索引扫描次数(idx_scan 字段)
  • IxFet - 索引扫描获取的活跃行数(idx_tup_fetch 字段)

按更新/删除元组数排列的热表

按触发自动清理负载的操作数排序的热表,即 n_tup_updn_tup_del 的总和(包括 TOAST 表)。可以考虑根据提供的运行清理和分析的统计信息,对 vacuum 相关参数进行适当调整。

  • DB - 表的数据库名称
  • Tablespace - 表所在的表空间名称
  • Schema - 表的模式名称
  • Table - 表名
  • Upd - 更新的行数(包括 HOT)(n_tup_upd 字段)
  • Upd(HOT) - HOT 更新的行数(n_tup_hot_upd 字段)
  • Del - 删除的行数(n_tup_del 字段)
  • Vacuum - 该表被手动清理过的次数(不包括 VACUUM FULL)(vacuum_count 字段)
  • AutoVacuum - autovacuum 守护进程清理该表的次数(autovacuum_count 字段)
  • Analyze - 该表被手动分析过的次数(analyze_count 字段)
  • AutoAnalyze - autovacuum 守护进程分析该表的次数(autoanalyze_count 字段)

按新页更新元组数排列的热表

按更新行数排列的热表,其中在堆表中更新的版本会放入新的页面,原始版本的元组中的 t_ctid 字段会指向一个不同的堆表页面。这些都是非 HOT 更新。

  • DB - 表的数据库名称
  • Tablespace - 表所在的表空间名称
  • Schema - 表的模式名称
  • Table - 表名
  • NP Upd - 更新到堆表中新页的行数
  • %Upd - 新页更新的行数,占所有更新行数的百分比
  • Upd - 更新的行数(包括 HOT 更新的行)
  • Upd(HOT) - HOT 更新的行数(即,不需要单独更新索引)

增长最快的表

按增长排序的热表。当没有使用 pg_relation_size() 收集的关系大小时,表的增长会基于 pg_class.relpages 字段来计算。这会不太准确,因此这些值将出现在方括号中。

  • DB - 表的数据库名称
  • Tablespace - 表所在的表空间名称
  • Schema - 表的模式名称
  • Table - 表名
  • Size - 表大小,与报告时间范围内最后一个样本中记录的表大小相同
  • Growth - 表的增长量
  • Ins - 插入的行数(n_tup_ins 字段)
  • Upd - 更新的行数(包括 HOT)(n_tup_upd 字段)
  • Del - 删除的行数(n_tup_del 字段)
  • Upd(HOT) - HOT 更新的行数(n_tup_hot_upd 字段)

按获取块数排列的热点索引

获取的块是从磁盘(读取)或从共享缓冲区(命中)处理的块。它基于 pg_statio_all_tables 视图的数据。

  • DB - 索引的数据库名称
  • Tablespace - 索引所在的表空间名称
  • Schema - 索引的模式名称
  • Table - 表名
  • Index - 索引名称
  • Scans - 对索引执行的扫描次数(idx_scan 字段)
  • Blks - 从该索引中获取的块数(idx_blks_read + idx_blks_hit
  • %Total - 从该索引获取的块数,占整个实例获取的所有块数的百分比

按读取块数排列的热点索引

按块读取次数排序的热点索引。它基于 pg_statio_all_tables 视图的数据。

  • DB - 索引的数据库名称
  • Tablespace - 索引所在的表空间名称
  • Schema - 索引的模式名称
  • Table - 表名
  • Index - 索引名称
  • Scans - 对索引执行的扫描次数(idx_scan 字段)
  • Blk Reads - 从该索引读取的磁盘块数(idx_blks_read
  • %Total - 从该索引读取的块数,占整个实例读取的所有块数的百分比
  • Hits(%) - 从缓冲区获取的索引块数,占从该索引获取的所有索引块数的百分比

增长最快的索引

按增长排序的热点索引。当没有使用 pg_relation_size() 收集的关系大小时,增长估计会基于 pg_class.relpages 字段来计算。这会不太准确,因此这些值将出现在方括号中。

  • DB - 索引的数据库名称
  • Tablespace - 索引所在的表空间名称
  • Schema - 索引的模式名称
  • Table - 表名
  • Index - 索引名称
  • Index - 索引统计信息
    • Size - 索引大小,与报告时间范围内最后一个样本中记录的大小相同
    • Growth - 报告时间范围内的索引增长量
  • Table - 基础表统计信息
    • Ins - 插入到基础表中的行数(n_tup_ins 字段)
    • Upd - 基础表中更新的行数(不含 HOT 更新)(n_tup_upd - n_tup_hot_upd
    • Del - 从基础表中删除的行数(n_tup_del 字段)

未使用的索引

在报告产生的时间范围内未访问过的索引,它按照基础表上使用过索引的 DML 操作数排序。排除了约束索引。

  • DB - 索引的数据库名称
  • Tablespace - 索引所在的表空间名称
  • Schema - 索引的模式名称
  • Table - 表名
  • Index - 索引名称
  • Index - 索引统计信息
    • Size - 索引大小,与报告时间范围内最后一个样本中记录的大小相同
    • Growth - 报告时间范围内的索引增长量
  • Table - 基础表统计信息
    • Ins - 插入到基础表中的行数(n_tup_ins 字段)
    • Upd - 基础表中更新的行数(不含 HOT 更新)(n_tup_upd - n_tup_hot_upd
    • Del - 从基础表中删除的行数(n_tup_del 字段)

了解更多

pg_profile: PostgreSQL 历史工作负载报告