PostgreSQL 9.6.5文書 | |||
---|---|---|---|
前のページ | 上に戻る | 第 28章データベース活動状況の監視 | 次のページ |
PostgreSQLは、何らかのコマンドの実行中に進捗状況をレポートする能力があります。 現在、進捗状況のレポートを唯一サポートしているのはVACUUMです。 将来的にサポートされるコマンドが拡大される可能性があります。
VACUUMを実行するときはいつでも、pg_stat_progress_vacuumビューは、現在バキューム処理している(自動バキュームワーカプロセスを含む)それぞれのバックエンドごとに1行を格納します。 その情報を説明している以下のテーブルにおいて、何がレポートされ、どのように解釈するかについての情報を提供します。 進捗状況のレポートは、現在VACUUM FULLはサポートされておらず、VACUUM FULLを実行しているバックエンドはこのビューの一覧に表示されません。
表 28-20. pg_stat_progress_vacuumビュー
列 | 型 | 説明 |
---|---|---|
pid | integer | バックエンドのプロセスID。 |
datid | oid | このバックエンドが接続されたデータベースのOID。 |
datname | name | このバックエンドが接続されたデータベース名。 |
relid | oid | バキューム処理が行われているテーブルのOID。 |
phase | text | 現在のバキュームの処理フェーズ。表28-21を参照してください。 |
heap_blks_total | bigint | テーブルのヒープブロックの総数。 この数字は、スキャンの開始を基点としてレポートされます。 後に追加されるブロックは、このVACUUMによって処理されません(必要もありません)。 |
heap_blks_scanned | bigint | スキャンされたヒープブロックの数。 可視性マップがスキャンを最適化するために使用されるため、いくつかのブロックが検査されずに読み飛ばされます。 読み飛ばされたブロックはこの総数に含まれ、そのためこの数字はバキューム処理が完了した時に、最終的にheap_blks_totalと同じになります。 このカウンタは、フェーズがscanning heapの時にのみ増加します。 |
heap_blks_vacuumed | bigint | バキューム処理されたヒープブロックの数。 テーブルにインデックスが1つでも存在するなら、このカウンタはフェーズがvacuuming heapの時にのみ増加します。 無効なタプルが含まれていないブロックは読み飛ばされ、それゆえカウンタは時々大きな増加量で早送りされます。 |
index_vacuum_count | bigint | 完了したインデックスバキュームサイクルの数。 |
max_dead_tuples | bigint | インデックスバキュームサイクルの実行に必要となる前に格納することが出来る、maintenance_work_memに基づいた、無効なタプルの数。 |
num_dead_tuples | bigint | 最後のインデックスバキュームサイクルから収集された無効タプルの数。 |
表 28-21. VACUUMのフェーズ
フェーズ | 説明 |
---|---|
initializing | VACUUMは、ヒープをスキャンし始める準備をしています。 このフェーズは、非常に短時間であると予想されます。 |
scanning heap | VACUUMは、現在ヒープをスキャン中です。 必要であればそれぞれのページを切り取り、デフラグし、場合によってはフリーズ活動を実行します。 スキャンの進捗状況の監視にheap_blks_scanned列が使用できます。 |
vacuuming indexes | VACUUMは、現在インデックスをバキューム処理中です。 テーブルにインデックスが存在する場合、ヒープが完全にスキャンされた後に、バキューム実行ごとに少なくとも1回発生します。 maintenance_work_memが、発見された無効タプルの数量を格納するのに不十分な場合は、バキューム実行ごとに複数回発生する可能性があります。 |
vacuuming heap | VACUUMは、現在ヒープをバキューム処理中です。 ヒープのバキュームは、ヒープのスキャンと異なり、インデックスをバキューム処理するそれぞれのインスタンスの後に発生します。 heap_blks_scannedがheap_blks_totalより少ない場合、システムはこのフェーズの完了後にヒープのスキャン処理に戻ります。 さもなければ、このフェーズの完了後にインデックスの整理を始めます。 |
cleaning up indexes | VACUUMは、現在インデックスの整理処理中です。 これは、ヒープが完全にスキャンされ、インデックスとヒープが完全にすべてバキューム処理された後に発生します。 |
truncating heap | VACUUMは、現在リレーションの終点の空のページをオペレーティングシステムに戻すためにヒープを削除しています。 これは、インデックスの整理処理後に発生します。 |
performing final cleanup | VACUUMは、最終クリーンアップ処理をしています。 このフェーズの間、VACUUM空き領域マップをバキュームし、pg_classの統計情報を更新し、統計情報コレクタに統計情報を報告します。 このフェーズが完了した時、VACUUMは終了します。 |