# 28.4.进度报告
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 如果没有。 |
元组 比基特 已由处理的元组数 复制 命令 |
不包括元组 比基特 未处理的元组数,因为它们被 哪里 合同条款复制 命令 |