翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
パフォーマンスの問題を回避するための Amazon RDS および Amazon Aurora の PostgreSQL データベースのメンテナンスアクティビティ
Anuradha Chintha、Rajesh Madiwale、Srinivas Potlachervoo、Amazon Web Services (AWS)
2023 年 12 月 (ドキュメント履歴)
Amazon Aurora PostgreSQL 互換エディションおよび Amazon Relational Database Service (Amazon RDS) for PostgreSQL は、PostgreSQL データベース用のフルマネージドリレーショナルデータベースサービスです。これらのマネージドサービスにより、データベース管理者は多くのメンテナンスおよび管理タスクから解放されます。ただし、 などの一部のメンテナンスタスクではVACUUM
、データベースの使用状況に基づいて綿密なモニタリングと設定が必要です。このガイドでは、Amazon RDS および Aurora での PostgreSQL メンテナンスアクティビティについて説明します。
ターゲットを絞ったビジネス成果
データベースのパフォーマンスは、ビジネスの成功の基礎となる重要な指標です。Aurora PostgreSQL 互換データベースと Amazon RDS for PostgreSQL データベースでメンテナンスアクティビティを実行すると、次の利点があります。
-
最適なクエリパフォーマンスを実現するのに役立ちます
-
将来のトランザクションで再利用するために肥大化した領域を解放します
-
トランザクションの循環を防止
-
オプティマイザが適切な計画を生成するのに役立ちます
-
インデックスの適切な使用を確保します
マルチバージョン同時実行制御 (MVCC)
PostgreSQL データベースのメンテナンスでは、PostgreSQL のメカニズムであるマルチバージョン同時実行制御 (MVCC) を理解する必要があります。データベースで複数のトランザクションが同時に処理されると、MVCC はアトミック性、整合性、分離、耐久性 (ACID) トランザクションの 2 つの特性であるアトミック性と分離が維持されるようにします。MVCC では、書き込みオペレーションごとに新しいバージョンのデータが生成され、以前のバージョンが保存されます。リーダーとライターは互いにブロックしません。トランザクションがデータを読み取ると、システムはトランザクションを分離するためにいずれかのバージョンを選択します。PostgreSQL と一部のリレーショナルデータベースは、スナップショット分離 (SI) と呼ばれる MVCC の適応を使用します。例えば、Oracle はロールバックセグメントを使用して SI を実装します。書き込みオペレーション中、Oracle は古いバージョンのデータをロールバックセグメントに書き込み、データ領域を新しいバージョンで上書きします。PostgreSQL データベースは、可視性チェックルールを使用してバージョンを評価することで SI を実装します。新しいデータがテーブルページに配置されると、PostgreSQL はこれらのルールを使用して、読み取りオペレーションに適したバージョンのデータを選択します。
テーブル行のデータを変更すると、PostgreSQL は MVCC を使用して行の複数のバージョンを維持します。テーブルに対する UPDATE
および DELETE
オペレーション中、データベースは、データの一貫したビューを必要とする可能性のある他の実行中のトランザクションの古いバージョンの行を保持します。これらの古いバージョンはデッド行 (タプル) と呼ばれます。デッドタプルのコレクションは肥大化します。データベースに大量の肥大化があると、クエリプランの生成不足、クエリパフォーマンスの低下、古いバージョンを保存するためのディスク容量使用量の増加など、多くの問題が発生する可能性があります。
肥大化を削除し、データベースを正常に保つには、定期的なメンテナンスが必要です。これには、以下のセクションで説明するアクティビティが含まれます。