今回は、Goldの「運用管理 - 運用管理用コマンド全般」からの出題です。
A. CLUSTERコマンドによりテーブルデータが物理的に再編成され、読み込み性能が向上する可能性がある
B. CLUSTERコマンドが実行されているテーブルに対する読み込みは待機される
C. PRIMARY KEYが存在しないテーブルに対するCLUSTERコマンドは実行できない
D. maintenance_work_memの値を大きくするとCLUSTERコマンドの性能が向上する可能性がある
E. CLUSTERコマンドによりテーブルおよびインデックスサイズを削減できる可能性がある
※この例題は実際のOSS-DB技術者認定試験とは異なります。
【Aについて】
CLUSTERコマンドによりクラスタ化されたテーブルは、そのテーブルのインデックス情報に基づいて物理的に再編成されます。
つまり、同一のページ内に値が近いタプルが格納されることになるため、範囲指定で値を取得する場合等のディスクアクセス量が低下する可能性があります。
【Bについて】
CLUSTERコマンドは対象テーブルへの排他ロックを必要とするため、実行中は他の処理は待機させられます。
【Cについて】
CLUSTERコマンドは対象テーブルの単一のインデックス情報に基づいて再編成されます。
インデックスが存在しないテーブルにはCLUSTERコマンドは実行できませんが、対象のインデックスは必ずしもPRIMARY KEYに基づいて作られたものでなくても構いません。
【Dについて】
maintenance_work_memはVACUUM、CREATE INDEX、REINDEX、CLUSTER等の保守操作で使用されるメモリの最大容量を指定します。
デフォルト値は16MBとかなり小さく、値を大きくすることでCLUSTERコマンドの性能が向上する可能性があります。
【Eについて】
CLUSTERコマンドでは、クラスタ化の際に、不要領域の削除やREINDEXも合わせて行われるため、テーブルおよびインデックスサイズを削減できる可能性があります。
よって、適切でないものはCです。
詳細は公式ドキュメントをご参照ください。
http://www.postgresql.jp/document/10/html/sql-cluster.html
正解は C です。
今回の解説について、理解できないポイントがあればどんどん質問をお寄せ下さい。
※試験問題に関わるお問い合わせにつきましては、LPI-Japan事務局ではお応えできませんのでご了解ください。
© EDUCO All Rights Reserved.