PostgreSQL の VACUUM オペレーションの最適化、モニタリング、トラブルシューティング

このドキュメントでは、PostgreSQL データベースでの VACUUM オペレーションの基本について説明します。また、データベース インスタンスの健全性を維持するデータベース エンジンをモニタリングや調整のメカニズムについても説明します。

PostgreSQL は、スナップショットベースの同時実行プロトコルを使用して、データの変更中に複数のバージョンのデータ行を作成します。これらのデータ行のバージョンは、データ行で読み取りロックを必要とせずに、計算されたスナップショットを使用して、表示されるバージョンのデータを読み取るために使用されます。PostgreSQL は、データの各行に対してトランザクション ID(挿入および削除されたトランザクション ID)を保持し、トランザクション ID と計算されたスナップショットを使用して行の可視性を決定します。古いバージョンのデータによりデータは増大し続けるため、データのスキャンにかかる時間(テーブル スキャンまたはインデックス スキャン)は長くなります。スキャン操作のレスポンス時間を最適化し、容量を効率的に使用するには、バージョンの管理に使用されるバージョンとメタデータ(トランザクション ID など)を回収する必要があります。

VACUUM オペレーションは、削除されたバージョン(ガベージ コレクション)とトランザクション ID(フリーズしたトランザクション ID)を回収します。VACUUM オペレーションは、データ可用性のレベルが異なる複数のモードでデータを処理します。使用されたトランザクション ID のスペースが予約済みスペースに入るたびにシステムがライターをブロックするため、フリーズしたトランザクション ID は、データベース システムの健全性に対して重要です。

構成する autovacuum ジョブは常にトランザクション ID の回収を試みますが、失敗する可能性もあります。このエラーは、構成が不十分であるか、トランザクション ID の作成レートが高すぎるために autovacuum ジョブがワークロードに対応できないことが原因です。このドキュメントの目的は、VACUUM オペレーションのさまざまな側面の調整とモニタリングのメカニズムとともに VACUUM オペレーションの使用方法を示すことです。

概要

このドキュメントでは、以下について説明します。

  • トランザクション ID のフリーズ。
  • トランザクション ID のモニタリング。
  • 保存容量の回収。
  • Cloud Monitoring の自動アラートの構成。

ホワイト ペーパー全体を読むには、次のボタンをクリックしてください。

PDF をダウンロード