目录
1、PostgreSQL 维护任务进度报告概述
2、ANALYZE 进度报告
3、CLUSTER 和 VACUUM FULL 进度报告
4、COPY 进度报告
5、CREATE INDEX 进度报告
6、VACUUM 进度报告
7、基础备份进度报告
8、注意事项
9、总结
PostgreSQL 维护任务进度报告概述
PostgreSQL 提供了一系列的工具和视图来帮助数据库管理员监控各种维护任务的进度。
1. ANALYZE 进度报告
ANALYZE 是一个用于收集统计信息的命令,以便优化器可以更好地决定查询计划。在 PostgreSQL 中,可以通过使用 pg_stat_progress_analyze 视图来监控 ANALYZE 进程的进度。
2. CLUSTER 和 VACUUM FULL 进度报告
CLUSTER 命令重新组织表中的行,以物理上按照索引排序的方式存储它们。VACUUM FULL 则重新排序表中的行并回收已删除行的空间。这两种命令都会重写整个表,并且可以使用 pg_stat_progress_cluster 视图来查看它们的进度。
3. COPY 进度报告
COPY 命令用于从标准输入或文件中读取数据并将其插入到表中,或者从表中读取数据并将其输出到标准输出或文件中。COPY 的进度报告可通过 pg_stat_progress_copy 视图获取。
4. CREATE INDEX 进度报告
创建索引 (CREATE INDEX) 的进度可以通过 pg_stat_progress_create_index 视图来查看。这有助于了解创建索引操作的进展情况。
5. VACUUM 进度报告
VACUUM 命令用于清理表中的废弃行并更新统计信息。VACUUM 的进度报告可以通过 pg_stat_progress_vacuum 视图获取。
6. 基础备份进度报告
基础备份是创建数据库完整副本的过程,通常用于灾难恢复。pg_basebackup 命令用于创建基础备份,其进度可以通过 pg_stat_progress_basebackup 视图来监控。
ANALYZE 进度报告
每当 ANALYZE 命令运行时,视图 pg_stat_progress_analyze 将包含一条记录,表示正在执行 ANALYZE 命令的每个后端(进程)。以下表格描述了 pg_stat_progress_analyze 视图中报告的信息及其解释。
pg_stat_progress_analyze 视图
列名 |
类型 |
描述 |
pid |
integer |
后端(进程)的 ID。 |
datid |
oid |
后端所连接数据库的 OID。 |
datname |
name |
后端所连接数据库的名称。 |
relid |
oid |
正在分析的表的 OID。 |
phase |
text |
当前处理阶段。参见下表。 |
sample_blks_total |
bigint |
将要采样的堆块总数。 |
sample_blks_scanned |
bigint |
已扫描的堆块数。 |
ext_stats_total |
bigint |
扩展统计信息的数量。 |
ext_stats_computed |
bigint |
已计算的扩展统计信息的数量。此计数器仅在 phase 为 computing extended statistics 时递增。 |
child_tables_total |
bigint |
子表的数量。 |
child_tables_done |
bigint |
已扫描的子表数量。此计数器仅在 phase 为 acquiring inherited sample rows 时递增。 |
current_child_table_relid |
oid |
当前正在扫描的子表的 OID。此字段仅在 phase 为 acquiring inherited sample rows 时有效。 |
ANALYZE 阶段
阶段 |
描述 |
initializing |
命令正在准备开始扫描堆。这一阶段预计很短暂。 |
acquiring sample rows |
命令正在扫描由 relid 指定的表以获取样本行。 |
acquiring inherited sample rows |
命令正在扫描子表以获取样本行。child_tables_total, child_tables_done, 和 current_child_table_relid 列包含此阶段的进度信息。 |
computing statistics |
命令正在根据表扫描期间获取的样本行计算统计信息。 |
computing extended statistics |
命令正在根据表扫描期间获取的样本行计算扩展统计信息。 |
finalizing analyze |
命令正在更新 pg_class 表。当这一阶段完成时,ANALYZE 命令将结束。 |
注意
当 ANALYZE 命令运行在分区表上时,其所有的子分区也会被递归分析。在这种情况下,进度首先为父表报告,其中收集继承的统计信息,然后为每个子分区报告。
通过监视 pg_stat_progress_analyze 视图,你可以了解 ANALYZE 命令的执行进度,包括扫描了多少堆块、计算了多少统计信息等。这对于理解 ANAL