DEAデータストアの管理

Amazon RDS for PostgreSQL を使用するシステムで、毎日大量の UPDATE・DELETE 操作が発生しています。DBA が定期メンテナンス時にスロークエリを調査したところ、頻繁に使われる複合インデックスが肥大化しており、クエリ実行計画がインデックスを効率的に利用できていないことが判明しました。このインデックス肥大化を直接解消するために最も適切な操作はどれですか。

A
REINDEX を実行する
✓ 正解
REINDEX はインデックスブロック全体を再構築するため、肥大化したインデックスのサイズ削減と性能回復に直接効果があります。RDS for PostgreSQL でも実行可能であり、インデックス肥大化への第一の対処操作です。
B
ANALYZE を実行する
ANALYZE はテーブルの統計情報を収集・更新し、クエリプランナーがより適切な実行計画を選択できるようにします。インデックスの物理構造には手を加えないため、肥大化そのものは解消されません。
C
VACUUM を実行する
VACUUM は不要領域(死タプル)の回収を行い、テーブルのブロートを抑えます。通常の VACUUM ではインデックスの内部構造は再構築されないため、インデックス肥大化の根本解消にはなりません。
D
CLUSTER を実行する
CLUSTER は指定インデックスの順序でテーブルの物理行順を並べ替える操作です。実行時にインデックスも再作成されますが、テーブル全体の排他ロックが必要であり、主目的は物理配置の最適化であってインデックス肥大化の解消ではありません。

解説

REINDEX はインデックスを完全に再構築する操作であり、肥大化・断片化したインデックスの性能問題を直接解消できます。ANALYZE は統計情報を更新してクエリプランナーの判断精度を高めますが、インデックス構造は変更しません。VACUUM は死んだタプルを回収しテーブルのブロートを抑えますが、インデックス自体の再構築は行いません(VACUUM FULL は再構築しますが、テーブルロックを要するため通常のメンテナンスには不向きです)。CLUSTER は指定インデックス順にテーブルを物理的に並べ替える操作で、インデックスの内容自体はあわせて再作成されますが、主目的はテーブルの物理配置であり、インデックス肥大化の解消を目的とした操作ではありません。

ドメイン別正答率・予想スコアでリアルタイムに実力把握

無限ノックでDEAを徹底対策。全問AI生成のオリジナル問題。

無料で演習を始める →
DEA の問題一覧に戻る