他のバージョンの文書9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

28.4. 進捗状況のレポート

PostgreSQLは、何らかのコマンドの実行中に進捗状況をレポートする能力があります。 現在、進捗状況のレポートを唯一サポートしているのはVACUUMです。 将来的にサポートされるコマンドが拡大される可能性があります。

28.4.1. VACUUM進捗状況のレポート

VACUUMを実行するときはいつでも、pg_stat_progress_vacuumビューは、現在バキューム処理している(自動バキュームワーカプロセスを含む)それぞれのバックエンドごとに1行を格納します。 その情報を説明している以下のテーブルにおいて、何がレポートされ、どのように解釈するかについての情報を提供します。 進捗状況のレポートは、現在VACUUM FULLはサポートされておらず、VACUUM FULLを実行しているバックエンドはこのビューの一覧に表示されません。

表28.20 pg_stat_progress_vacuumビュー

説明
pidintegerバックエンドのプロセスID。
datidoidこのバックエンドが接続されたデータベースのOID。
datnamenameこのバックエンドが接続されたデータベース名。
relidoidバキューム処理が行われているテーブルのOID。
phasetext現在のバキュームの処理フェーズ。表28.21「VACUUMのフェーズ」を参照してください。
heap_blks_totalbigintテーブルのヒープブロックの総数。 この数字は、スキャンの開始を基点としてレポートされます。 後に追加されるブロックは、このVACUUMによって処理されません(必要もありません)。
heap_blks_scannedbigintスキャンされたヒープブロックの数。 可視性マップがスキャンを最適化するために使用されるため、いくつかのブロックが検査されずに読み飛ばされます。 読み飛ばされたブロックはこの総数に含まれ、そのためこの数字はバキューム処理が完了した時に、最終的にheap_blks_totalと同じになります。 このカウンタは、フェーズがscanning heapの時にのみ増加します。
heap_blks_vacuumedbigintバキューム処理されたヒープブロックの数。 テーブルにインデックスが1つでも存在するなら、このカウンタはフェーズがvacuuming heapの時にのみ増加します。 無効なタプルが含まれていないブロックは読み飛ばされ、それゆえカウンタは時々大きな増加量で早送りされます。
index_vacuum_countbigint完了したインデックスバキュームサイクルの数。
max_dead_tuplesbigintインデックスバキュームサイクルの実行に必要となる前に格納することが出来る、maintenance_work_memに基づいた、無効なタプルの数。
num_dead_tuplesbigint最後のインデックスバキュームサイクルから収集された無効タプルの数。

表28.21 VACUUMのフェーズ

フェーズ説明
initializingVACUUMは、ヒープをスキャンし始める準備をしています。 このフェーズは、非常に短時間であると予想されます。
scanning heapVACUUMは、現在ヒープをスキャン中です。 必要であればそれぞれのページを切り取り、デフラグし、場合によってはフリーズ活動を実行します。 スキャンの進捗状況の監視にheap_blks_scanned列が使用できます。
vacuuming indexesVACUUMは、現在インデックスをバキューム処理中です。 テーブルにインデックスが存在する場合、ヒープが完全にスキャンされた後に、バキューム実行ごとに少なくとも1回発生します。 maintenance_work_memが、発見された無効タプルの数量を格納するのに不十分な場合は、バキューム実行ごとに複数回発生する可能性があります。
vacuuming heapVACUUMは、現在ヒープをバキューム処理中です。 ヒープのバキュームは、ヒープのスキャンと異なり、インデックスをバキューム処理するそれぞれのインスタンスの後に発生します。 heap_blks_scannedheap_blks_totalより少ない場合、システムはこのフェーズの完了後にヒープのスキャン処理に戻ります。 さもなければ、このフェーズの完了後にインデックスの整理を始めます。
cleaning up indexesVACUUMは、現在インデックスの整理処理中です。 これは、ヒープが完全にスキャンされ、インデックスとヒープが完全にすべてバキューム処理された後に発生します。
truncating heapVACUUMは、現在リレーションの終点の空のページをオペレーティングシステムに戻すためにヒープを削除しています。 これは、インデックスの整理処理後に発生します。
performing final cleanupVACUUMは、最終クリーンアップ処理をしています。 このフェーズの間、VACUUM空き領域マップをバキュームし、pg_classの統計情報を更新し、統計情報コレクタに統計情報を報告します。 このフェーズが完了した時、VACUUMは終了します。