W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
PostgreSQL具有在命令執(zhí)行過程中報告某些命令進度的能力。 目前,支持進度報告的命令只有ANALYZE
,CLUSTER
,CREATE INDEX
, VACUUM
, 和 BASE_BACKUP(例如 pg_basebackup 發(fā)出的進行基礎(chǔ)備份的復制命令。)。未來可能還會擴展。
每當ANALYZE
運行時,pg_stat_progress_analyze
視圖將包含當前運行該命令的每個后端的一行。 下面的表描述了將要報告的信息,并提供了關(guān)于如何解釋它們的信息。
表 27.32. pg_stat_progress_analyze
視圖
列類型 描述 |
---|
后端的進程ID。 |
后端連接到的數(shù)據(jù)庫的OID。 |
后端連接到的數(shù)據(jù)庫的名稱。 |
被分析的表的OID。 |
當前處理階段。參見 本文中的表 27.33。 |
將被采樣的堆塊的總數(shù)。 |
掃描的堆塊數(shù)量。 |
擴展統(tǒng)計信息的數(shù)量。 |
已經(jīng)計算的擴展統(tǒng)計的數(shù)量. 此計數(shù)器僅在 |
子表的數(shù)量。 |
掃描的子表數(shù)。此計數(shù)器只有在 |
當前正在掃描的子表的OID。此字段僅在 |
表 27.33. ANALYZE phases
階段 | 描述 |
---|---|
initializing
|
命令正在準備開始掃描堆。這個階段預計會非常短暫。 |
acquiring sample rows
|
該命令當前正在掃描relid 給出的表以獲得示例行。 |
acquiring inherited sample rows
|
該命令當前正在掃描子表以獲得示例行。列child_tables_total ,child_tables_done , 和current_child_table_relid 包含此階段的進度信息。 |
computing statistics
|
該命令從表掃描期間獲得的樣例行計算統(tǒng)計信息。 |
computing extended statistics
|
該命令從表掃描期間獲得的樣例行計算擴展統(tǒng)計信息。 |
finalizing analyze
|
該命令在更新pg_class 。當此階段完成時,ANALYZE 將結(jié)束。 |
注意當在分區(qū)表上運行ANALYZE
時,它的所有分區(qū)也會被遞歸分析,如在ANALYZE中曾提到過。 在這種情況下,首先報告父表的ANALYZE
進度,收集它的繼承統(tǒng)計信息,然后是每個分區(qū)的(繼承統(tǒng)計信息)。
每當運行CREATE INDEX
或REINDEX
時,pg_stat_progress_create_index
視圖將包含當前正在創(chuàng)建索引的每個后端的一行。 下面的表描述了將要報告的信息,并提供了關(guān)于如何解釋它的信息。
表 27.34. pg_stat_progress_create_index
視圖
列類型 描述 |
---|
后端的進程ID。 |
后端連接到的數(shù)據(jù)庫的OID。 |
后端連接到的數(shù)據(jù)庫的名稱。 |
正在創(chuàng)建索引的表的OID。 |
正在創(chuàng)建或重建索引的OID。在非并發(fā) |
在運行的命令: |
索引創(chuàng)建的當前處理階段。 參見本文中的表 27.35。 |
在適用的情況下,需要等待的儲物柜總數(shù) |
已經(jīng)等待的儲物柜數(shù)量。 |
目前正在等待的儲物柜的進程ID。 |
本階段要處理的區(qū)塊總數(shù)。 |
當前階段已經(jīng)處理的區(qū)塊數(shù)量。 |
當前階段要處理的元組總數(shù)。 |
在當前階段已經(jīng)處理的元組數(shù)量。 |
在分區(qū)表上創(chuàng)建索引時,該列被設(shè)置為要在其上創(chuàng)建索引的分區(qū)總數(shù)。 |
當在分區(qū)表上創(chuàng)建索引時,該列被設(shè)置為在其上完成索引的分區(qū)數(shù)。 |
表 27.35. CREATE INDEX 的階段
階段 | 描述 |
---|---|
初始化
|
CREATE INDEX 或REINDEX 正在準備創(chuàng)建索引。 這個階段預計會非常短暫。 |
構(gòu)建前等待讀寫器
|
CREATE INDEX CONCURRENTLY 或REINDEX CONCURRENTLY 正在等待有可能看到表的寫鎖的事務(wù)完成。 當不在并發(fā)模式時,這個階段會被跳過。lockers_total 、 lockers_done 和 current_locker_pid 列包含了這個階段的進度信息。 |
新建索引
|
索引是由訪問方法專用代碼建立的。 在這一階段,支持進度報告的訪問方法填寫自己的進度數(shù)據(jù),子階段在這一欄中表示。 通常情況下,blocks_total 和blocks_done 將包含進度數(shù)據(jù),也可能包含tuples_total 和tuples_done 。 |
在驗證前等待讀寫器
|
CREATE INDEX CONCURRENTLY 或REINDEX CONCURRENTLY 正在等待有可能寫入表的事務(wù)完成寫鎖的事務(wù)。當不在并發(fā)模式時,這個階段會被跳過。lockers_total 、 lockers_done 和 current_locker_pid 列包含了這個階段的進度信息。 |
索引驗證:掃描索引
|
CREATE INDEX CONCURRENTLY 正在掃描索引,搜索需要驗證的圖元組。如果不是在并發(fā)模式下,這個階段會被跳過。列 blocks_total (設(shè)置為索引的總大?。┖?blocks_done 包含了這個階段的進度信息。 |
指數(shù)驗證:排序元組
|
CREATE INDEX CONCURRENTLY 正在對索引掃描階段的輸出進行排序。 |
索引驗證:掃描表
|
CREATE INDEX CONCURRENTLY 正在掃描表,以驗證前兩個階段收集的索引圖元。當不在并發(fā)模式時,這個階段被跳過。blocks_total 列(設(shè)置為表的總大小)和blocks_done 列包含這個階段的進度信息。 |
等待舊照
|
CREATE INDEX CONCURRENTLY 或REINDEX CONCURRENTLY 正在等待可能看到表的事務(wù)釋放快照。 當不處于并發(fā)模式時,這個階段會被跳過。 lockers_total 、lockers_done 和 current_locker_pid 列包含了這個階段的進度信息。 |
標記 dead之前等待readers
|
REINDEX CONCURRENTLY 等待表上有讀鎖的事務(wù)完成后,再將舊索引標記為死索引。當不在并發(fā)模式時,這個階段被跳過。lockers_total 、lockers_done 和 current_locker_pid 列包含了這個階段的進度信息。 |
在 dropping之前等待readers
|
REINDEX CONCURRENTLY 等待表上有讀鎖的事務(wù)完成后,再丟棄舊索引。當不在并發(fā)模式時,這個階段被跳過。列 lockers_total 、lockers_done 和 current_locker_pid 包含了這個階段的進度信息。 |
只要VACUUM
正在運行,每一個當前正在清理的后端(包括autovacuum工作者進程)在pg_stat_progress_vacuum
視圖中都會有一行。下面的表描述了將被報告的信息并且提供了如何解釋它們的信息。VACUUM FULL
命令的進度是通過pg_stat_progress_cluster
報告的,因為
VACUUM FULL
和CLUSTER
都是重寫表,而普通的VACUUM
只是原地修改表。見本文中的第 27.4.4 節(jié).
表 27.36. pg_stat_progress_vacuum
視圖
列類型 描述 |
---|
后端的進程ID。 |
這個后端連接的數(shù)據(jù)庫的OID。 |
這個后端連接的數(shù)據(jù)庫的名稱。 |
被vacuum的表的OID。 |
vacuum的當前處理階段。參見本文中的表 27.37。 |
該表中堆塊的總數(shù)。這個數(shù)字在掃描開始時報告,之后增加的塊將不會(并且不需要)被這個 |
被掃描的堆塊數(shù)量。由于visibility map被用來優(yōu)化掃描,一些塊將被跳過而不做檢查, 被跳過的塊會被包括在這個總數(shù)中,因此當清理完成時這個數(shù)字最終將會等于 |
被清理的堆塊數(shù)量。除非表沒有索引,這個計數(shù)器僅在處于 |
已完成的索引清理周期數(shù)。 |
在需要執(zhí)行一個索引清理周期之前我們可以存儲的死亡元組數(shù),取決于maintenance_work_mem。 |
從上一個索引清理周期以來收集的死亡元組數(shù)。 |
表 27.37. VACUUM的階段
階段 | 描述 |
---|---|
初始化
|
VACUUM 正在準備開始掃描堆。這個階段應(yīng)該很簡短。 |
掃描堆
|
VACUUM 正在掃描堆。如果需要,它將會對每個頁面進行修建以及碎片整理,并且可能會執(zhí)行凍結(jié)動作。heap_blks_scanned 列可以用來監(jiān)控掃描的進度。 |
清理索引
|
VACUUM 當前正在清理索引。如果一個表擁有索引,那么每次清理時這個階段會在堆掃描完成后至少發(fā)生一次。如果maintenance_work_mem不足以存放找到的死亡元組,則每次清理時會多次清理索引。 |
清理堆
|
VACUUM 當前正在清理堆。清理堆與掃描堆不是同一個概念,清理堆發(fā)生在每一次清理索引的實例之后。如果heap_blks_scanned 小于heap_blks_total ,系統(tǒng)將在這個階段完成之后回去掃描堆;否則,系統(tǒng)將在這個階段完成后開始清理索引。 |
清除索引
|
VACUUM 當前正在清除索引。這個階段發(fā)生在堆被完全掃描并且對堆和索引的所有清理都已經(jīng)完成以后。 |
截斷堆
|
VACUUM 正在截斷堆,以便把關(guān)系尾部的空頁面返還給操作系統(tǒng)。這個階段發(fā)生在清除完索引之后。 |
執(zhí)行最后的清除
|
VACUUM 在執(zhí)行最終的清除。在這個階段中,VACUUM 將清理空閑空間映射、更新pg_class 中的統(tǒng)計信息并且將統(tǒng)計信息報告給統(tǒng)計收集器。當這個階段完成時,VACUUM 也就結(jié)束了。 |
每當CLUSTER
或VACUUM FULL
運行時,pg_stat_progress_cluster
視圖將包含當前正在運行的每一個后臺的記錄。下面的表格描述了將被報告的信息,并提供了關(guān)于如何解釋這些信息的信息。
表 27.38. pg_stat_progress_cluster
視圖
列類型 描述 |
---|
后臺的進程ID。 |
該后端連接的數(shù)據(jù)庫的OID。 |
與此后端連接的數(shù)據(jù)庫的名稱。 |
被集群的表的OID。 |
正在運行的命令。 |
當前處理階段。參見本文中的表 27.39。 |
如果正在使用索引對表進行掃描,這就是正在使用的索引的OID;否則為0。 |
掃描的堆元組數(shù)。 這個計數(shù)器只有在階段為 |
寫入的堆元組的數(shù)量。這個計數(shù)器只有在階段為 |
表中的堆塊總數(shù)。 這個數(shù)字是在 |
掃描的堆塊數(shù)量。 這個計數(shù)器只有在階段為 |
重建的索引數(shù)。 該計數(shù)器僅在 |
表 27.39. CLUSTER 和 VACUUM FULL 階段
階段 | 描述 |
---|---|
初始化
|
該命令準備開始掃描堆棧。 這個階段預計會非常短暫。 |
seq掃描堆
|
該命令目前采用順序掃描的方式對表進行掃描。 |
索引掃描堆
|
CLUSTER 目前正在使用索引掃描表。 |
元組排序
|
CLUSTER 目前正在對元組進行排序。 |
新寫入堆
|
CLUSTER 目前正在編寫新的堆。 |
交換關(guān)系文件
|
目前,該命令正在將新建立的文件調(diào)換到位。 |
重建索引
|
該命令目前正在重建一個索引。 |
清理
|
該命令正在執(zhí)行最后的清理工作。 當此階段完成后,CLUSTER 或VACUUM FULL 將結(jié)束。 |
每當像pg_basebackup這樣的應(yīng)用程序進行基本備份時, pg_stat_progress_basebackup
視圖將包含當前運行BASE_BACKUP
復制命令和流備份的每個WAL發(fā)送進程的一行。 下面的表描述了將要報告的信息,并提供了關(guān)于如何解釋它的信息。
表 27.40. pg_stat_progress_basebackup
視圖
列類型 描述 |
---|
WAL發(fā)送方進程ID。 |
目前的處理階段。 參見本文中表 27.41。 |
將被流輸送的數(shù)據(jù)總量。這是在 |
數(shù)據(jù)流的總量。這個計數(shù)器只在 |
要流輸送的表空間總數(shù)。 |
流輸送的表空間數(shù)。此計數(shù)器僅在 |
表 27.41. 基礎(chǔ)備份階段
階段 | 描述 |
---|---|
initializing
|
WAL發(fā)送器進程正在準備開始備份。這個階段預計會非常短暫。 |
waiting for checkpoint to finish
|
WAL發(fā)送器進程目前正在執(zhí)行pg_start_backup 以準備進行基礎(chǔ)備份,并等待啟動備份檢查點完成。 |
estimating backup size
|
WAL發(fā)送程序目前正在估計將作為基礎(chǔ)備份流傳輸?shù)臄?shù)據(jù)庫文件的總量。 |
streaming database files
|
WAL發(fā)送器當前正在流數(shù)據(jù)庫文件作為基礎(chǔ)備份。 |
waiting for wal archiving to finish
|
WAL發(fā)送方進程目前正在執(zhí)行pg_stop_backup 以完成備份,并等待基礎(chǔ)備份所需的所有WAL文件成功存檔。 如果在pg_basebackup中指定了--wal-method=none 或--wal-method=stream ,則備份將在此階段完成后結(jié)束。 |
transferring wal files
|
WAL發(fā)送器進程正在傳輸備份過程中產(chǎn)生的所有WAL日志。 如果pg_basebackup中指定了--wal-method=fetch , 則該階段發(fā)生在waiting for wal archiving to finish 階段之后。當此階段完成時備份將結(jié)束。 |
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: