# 28.4.进度报告

28.4.1. 分析进度报告

28.4.2. 创建索引进度报告

28.4.3. 真空进度报告

28.4.4. 集群进度报告

28.4.5. 基本备份进度报告

28.4.6. 复制进度报告

PostgreSQL能够在命令执行期间报告某些命令的进度。目前,支持进度报告的命令只有分析,,创建索引,真空,复制基础_备份(即复制命令)pg_基本备份需要进行基本备份的问题)。这可能会在未来扩大。

# 28.4.1.分析进度报告

无论何时分析他在跑步pg_统计_进度_分析视图将包含当前运行该命令的每个后端的一行。下表描述了将报告的信息,并提供了有关如何解释的信息。

表28.34. pg_统计_进度_分析看法

列类型

描述
pid 整数

后端的进程ID。
达蒂德 老年人

此后端连接到的数据库的OID。
datname 名称

此后端连接到的数据库的名称。
重温 老年人

正在分析的表的OID。
阶段 文本

当前处理阶段。看见表28.35.
样本总数 比基特

将被采样的堆块总数。
样本_blks _扫描 比基特

扫描的堆块数。
ext_stats_total 比基特

扩展统计数据的数量。
外部统计数据 比基特

计算的扩展统计信息数。此计数器仅在相位为计算扩展统计.
儿童表总计 比基特

子表的数量。
孩子们_桌子_完成了 比基特

扫描的子表数。此计数器仅在相位为获取继承的样本行.
当前\u子\u表\u relid 老年人

当前正在扫描的子表的OID。此字段仅在相位为时有效获取继承的样本行.

表28.35.分析阶段

阶段 描述
初始化 命令正在准备开始扫描堆。这一阶段预计将非常短暂。
获取样本行 该命令当前正在扫描重温以获取样本行。
获取继承的样本行 该命令当前正在扫描子表以获取样本行。柱儿童表总计, 孩子们_桌子_完成了当前_子_表_relid包含此阶段的进度信息。
计算统计 该命令从表扫描期间获得的样本行计算统计信息。
计算扩展统计 该命令从表扫描期间获得的样本行计算扩展统计信息。
完成分析 命令正在更新pg_类.本阶段完成后,分析一切都会结束。

# 笔记

注意,当分析在分区表上运行时,其所有分区也会递归分析。那样的话分析首先报告父表的进度,由此收集父表的继承统计信息,然后是每个分区的继承统计信息。

# 28.4.2.创建索引进度报告

无论何时创建索引重新索引他在跑步pg_统计_进度_创建_索引视图将为当前正在创建索引的每个后端包含一行。下表描述了将报告的信息,并提供了有关如何解释的信息。

表28.36. pg_统计_进度_创建_索引看法

列类型

描述
pid 整数

后端的进程ID。
达蒂德 老年人

此后端连接到的数据库的OID。
datname 名称

此后端连接到的数据库的名称。
重温 老年人

要在其上创建索引的表的OID。
索引 老年人

正在创建或重新编制索引的索引的OID。在非并发的创建索引,这是0.
命令 文本

正在运行的命令:创建索引, 同时创建索引, 重新索引同时重新编制索引.
阶段 文本

索引创建的当前处理阶段。看见表28.37.
储物柜总计 比基特

等待的储物柜总数(如适用)。
储物柜没问题 比基特

已经等待的储物柜数量。
当前的_locker _pid 比基特

当前正在等待的储物柜的进程ID。
街区总数 比基特

当前阶段中要处理的块的总数。
完成了吗 比基特

当前阶段中已处理的块数。
元组总数 比基特

当前阶段中要处理的元组总数。
tuples_done 比基特

当前阶段中已处理的元组数。
分区总数 比基特

在分区表上创建索引时,此列设置为要在其上创建索引的分区总数。这个领域是0重新索引.
完成了吗 比基特

在分区表上创建索引时,此列设置为已创建索引的分区数。这个领域是0重新索引.

表28.37.创建索引阶段

阶段 描述
初始化 创建索引重新索引正在准备创建索引。这一阶段预计将非常短暂。
在构建之前等待编剧 同时创建索引同时重新编制索引正在等待具有写锁的事务,这些事务可能会看到表完成。当不处于并发模式时,将跳过此阶段。柱储物柜总计, 储物柜没问题当前的_locker _pid包含此阶段的进度信息。
建筑索引 索引是由访问方法特定的代码构建的。在这个阶段中,支持进度报告的访问方法填写自己的进度数据,子阶段在本栏中显示。典型的街区总数完成了吗将包含进度数据,以及潜在的元组总数tuples_done.
在验证前等待作者 同时创建索引同时重新编制索引正在等待具有可能写入表的写锁的事务完成。当不处于并发模式时,将跳过此阶段。柱储物柜总计, 储物柜没问题当前的_locker _pid包含此阶段的进度信息。
索引验证:扫描索引 同时创建索引正在扫描索引以搜索需要验证的元组。当不处于并发模式时,将跳过此阶段。柱街区总数(设置为索引的总大小)和完成了吗包含此阶段的进度信息。
索引验证:对元组排序 同时创建索引正在对索引扫描阶段的输出进行排序。
索引验证:扫描表 同时创建索引正在扫描表以验证前两个阶段收集的索引元组。当不处于并发模式时,将跳过此阶段。柱街区总数(设置为桌子的总尺寸)和完成了吗包含此阶段的进度信息。
等待旧的快照 同时创建索引同时重新编制索引正在等待可能看到表的事务释放其快照。当不处于并发模式时,将跳过此阶段。柱储物柜总计, 储物柜没问题当前的_locker _pid包含此阶段的进度信息。
在标记死亡之前等待读者 同时重新编制索引正在等待表上带有读锁的事务完成,然后将旧索引标记为死。当不处于并发模式时,将跳过此阶段。柱储物柜总计, 储物柜没问题当前的_locker _pid包含此阶段的进度信息。
在放弃之前等待读者 同时重新编制索引正在等待表上带有读锁的事务完成,然后再删除旧索引。当不处于并发模式时,将跳过此阶段。柱储物柜总计, 储物柜没问题当前的_locker _pid包含此阶段的进度信息。

# 28.4.3.真空进度报告

无论何时真空他在跑步pg_状态_进度_真空视图将为当前正在抽真空的每个后端(包括autovacuum worker进程)包含一行。下表描述了将报告的信息,并提供了有关如何解释的信息。进展真空满命令通过pg_统计_进度_集群因为两者都有真空满重写表格,同时保持常规真空只在适当的地方修改它。看见第28.4.4节.

表28.38. pg_状态_进度_真空看法

列类型

描述
pid 整数

后端的进程ID。
达蒂德 老年人

此后端连接到的数据库的OID。
datname 名称

此后端连接到的数据库的名称。
重温 老年人

桌子被吸尘的样子。
阶段 文本

当前真空处理阶段。看见表28.39.
堆_blks _总计 比基特

表中堆块的总数。该数字在扫描开始时报告;之后添加的块将不会(也不需要)被该用户访问真空.
堆_blks _扫描 比基特

扫描的堆块数。因为了望台联络图用于优化扫描,一些块将在不检查的情况下跳过;跳过的块包括在这个总数中,因此这个数字最终将等于堆_blks _总计当真空完成时。此计数器仅在相位为扫描堆.
堆_blks_吸尘器 比基特

清空的堆块数。除非该表没有索引,否则该计数器仅在阶段结束时前进吸尘堆。不包含死元组的块将被跳过,因此计数器有时可能会以较大的增量向前跳过。
指数_真空_计数 比基特

完成的指数真空循环次数。
max_dead_tuples 比基特

在需要执行索引真空循环之前,我们可以存储的死元组数,基于维修_工作_记忆.
num_dead_tuples 比基特

自上次索引真空循环以来收集的死元组数。

表28.39.真空相

阶段 描述
初始化 真空正在准备开始扫描堆。这一阶段预计将非常短暂。
扫描堆 真空正在扫描堆。如果需要,它将对每个页面进行修剪和碎片整理,并可能执行冻结活动。这个堆_blks _扫描列可用于监视扫描的进度。
抽真空指数 真空目前正在清理索引。如果一个表有任何索引,那么在堆被完全扫描之后,每个真空至少会发生一次。如果出现以下情况,每个真空可能会发生多次:维修_工作_记忆(或者,如果是自动真空,自动真空_工作_记忆如果已设置),则不足以存储找到的死元组数。
吸尘堆 真空正在清空堆。清空堆与扫描堆不同,它发生在每次清空索引之后。如果堆_blks _扫描不到堆_blks _总计,此阶段完成后,系统将返回扫描堆;否则,它将在该阶段完成后开始清理索引。
清理索引 真空目前正在清理索引。这发生在堆被完全扫描,索引和堆的所有清空都完成之后。
截断堆 真空当前正在截断堆,以便在与操作系统的关系结束时返回空页。这发生在清理索引之后。
执行最终清理 真空正在进行最后的清理。在这个阶段,真空将真空的自由空间地图,更新统计数据pg_类,并向统计数据采集器报告统计数据。这一阶段完成后,真空一切都会结束。

# 28.4.4.集群进度报告

无论何时真空满他在跑步pg_统计_进度_集群视图将包含当前正在运行任一命令的每个后端的一行。下表描述了将报告的信息,并提供了有关如何解释的信息。

表28.40. pg_统计_进度_集群看法

列类型

描述
pid 整数

后端的进程ID。
达蒂德 老年人

此后端连接到的数据库的OID。
datname 名称

此后端连接到的数据库的名称。
重温 老年人

正在聚集的表的OID。
命令 文本

正在运行的命令。任何一个真空满.
阶段 文本

当前处理阶段。看见表28.41.
聚类索引 老年人

如果正在使用索引扫描表,则这是正在使用的索引的OID;否则,它是零。
堆\u元组\u扫描 比基特

扫描的堆元组数。此计数器仅在相位为扫描堆, 索引扫描堆写新堆.
堆_元组 比基特

写入的堆元组数。此计数器仅在相位为扫描堆, 索引扫描堆写新堆.
堆_blks _总计 比基特

表中堆块的总数。这个数字是在本月初报告的扫描堆.
堆_blks _扫描 比基特

扫描的堆块数。此计数器仅在相位为扫描堆.
索引重建计数 比基特

重建的索引数。此计数器仅在相位为重建索引.

表28.41.团簇和真空全相

阶段 描述
初始化 命令正在准备开始扫描堆。这一阶段预计将非常短暂。
扫描堆 该命令当前正在使用顺序扫描扫描表。
索引扫描堆 当前正在使用索引扫描扫描表。
排序元组 正在对元组进行排序。
写新堆 正在编写新堆。
交换关系文件 该命令当前正在将新构建的文件交换到位。
重建索引 该命令当前正在重建索引。
执行最终清理 该命令正在执行最终清理。这一阶段完成后,真空满一切都会结束。

# 28.4.5.基本备份进度报告

每当像pg这样的应用程序_basebackup正在进行一次基本备份pg_stat_progress_basebackup视图将包含当前正在运行的每个WAL发件人进程的一行基地备份复制命令和流式传输备份。下表描述了将报告的信息,并提供了有关如何解释的信息。

表28.42. pg_stat_progress_basebackup看法

列类型

描述
pid 整数

WAL发送方进程的进程ID。
阶段 文本

当前处理阶段。看见表28.43.
备份总数 比基特

将被传输的数据总量。这是截至2010年初的估计和报告流式数据库文件阶段请注意,这只是一个近似值,因为数据库在运行期间可能会发生更改流式数据库文件阶段和WAL日志可能会包含在以后的备份中。这个值始终与备份流一旦传输的数据量超过估计的总大小。如果在pg中禁用了估算_basebackup(即。,--没有估计大小选项),这是无效的.
备份流 比基特

传输的数据量。此计数器仅在相位为流式数据库文件传输wal文件.
表空间_总计 比基特

将被流化的表空间总数。
表空间 比基特

流化的表空间数。此计数器仅在相位为流式数据库文件.

表28.43.基本备份阶段

阶段 描述
初始化 WAL发送方进程正在准备开始备份。这一阶段预计将非常短暂。
等待检查站结束 WAL发送方进程当前正在执行pg_启动_备份准备进行基本备份,并等待备份检查点的开始完成。
估计备份大小 WAL sender进程目前正在估计作为基本备份传输的数据库文件总量。
流式数据库文件 WAL sender进程目前正在将数据库文件作为基本备份进行流式传输。
等待完成 WAL发送方进程当前正在执行pg_停止_备份完成备份,并等待基本备份所需的所有WAL文件成功存档。如果有的话--wal方法=无--wal方法=流在pg中规定_basebackup,此阶段完成后备份将结束。
传输wal文件 WAL发送方进程当前正在传输备份期间生成的所有WAL日志。这个阶段发生在等待完成阶段if--wal method=fetch在pg中规定_基本备份。此阶段完成后,备份将结束。

# 28.4.6.复制进度报告

无论何时复制他在跑步pg_统计_进度_副本视图将为当前正在运行的每个后端包含一行复制命令下表描述了将报告的信息,并提供了有关如何解释的信息。

表28.44. pg_统计_进度_副本看法

列类型

描述
pid 整数

后端的进程ID。
达蒂德 老年人

此后端连接到的数据库的OID。
datname 名称

此后端连接到的数据库的名称。
重温 老年人

桌子的OID复制命令被执行。设定为0如果从选择查询
命令 文本

正在运行的命令:抄袭抄送.
类型 文本

读取或写入数据的io类型:文件, 程序, (用于从STDIN复制复制到标准输出),或回拨(例如,在逻辑复制中的初始表同步期间使用)。
已处理字节数 比基特

已由处理的字节数复制命令
字节总数 比基特

的源文件大小抄袭以字节为单位的命令。设定为0如果没有。
元组 比基特

已由处理的元组数复制命令
不包括元组 比基特

未处理的元组数,因为它们被哪里合同条款复制命令