このドキュメントでは、PostgreSQL データベースでの VACUUM
オペレーションの基本について説明します。また、データベース インスタンスの健全性を維持するデータベース エンジンをモニタリングや調整のメカニズムについても説明します。
PostgreSQL は、スナップショットベースの同時実行プロトコルを使用して、データの変更中に複数のバージョンのデータ行を作成します。これらのデータ行のバージョンは、データ行で読み取りロックを必要とせずに、計算されたスナップショットを使用して、表示されるバージョンのデータを読み取るために使用されます。PostgreSQL は、データの各行に対してトランザクション ID(挿入および削除されたトランザクション ID)を保持し、トランザクション ID と計算されたスナップショットを使用して行の可視性を決定します。古いバージョンのデータによりデータは増大し続けるため、データのスキャンにかかる時間(テーブル スキャンまたはインデックス スキャン)は長くなります。スキャン操作のレスポンス時間を最適化し、容量を効率的に使用するには、バージョンの管理に使用されるバージョンとメタデータ(トランザクション ID など)を回収する必要があります。
VACUUM
オペレーションは、削除されたバージョン(ガベージ コレクション)とトランザクション ID(フリーズしたトランザクション ID)を回収します。VACUUM
オペレーションは、データ可用性のレベルが異なる複数のモードでデータを処理します。使用されたトランザクション ID のスペースが予約済みスペースに入るたびにシステムがライターをブロックするため、フリーズしたトランザクション ID は、データベース システムの健全性に対して重要です。
構成する autovacuum
ジョブは常にトランザクション ID の回収を試みますが、失敗する可能性もあります。このエラーは、構成が不十分であるか、トランザクション ID の作成レートが高すぎるために autovacuum
ジョブがワークロードに対応できないことが原因です。このドキュメントの目的は、VACUUM
オペレーションのさまざまな側面の調整とモニタリングのメカニズムとともに VACUUM
オペレーションの使用方法を示すことです。
概要
このドキュメントでは、以下について説明します。
- トランザクション ID のフリーズ。
- トランザクション ID のモニタリング。
- 保存容量の回収。
- Cloud Monitoring の自動アラートの構成。
ホワイト ペーパー全体を読むには、次のボタンをクリックしてください。