今回は、Goldの「パフォーマンスチューニング - チューニングの実施」からの出題です。
自動コミットをオフにする
インデックスや外部キー制約を削除する
maintenance_work_memを増やす
checkpoint_segmentsを減らす
checkpoint_timeoutを増やす
※この例題は実際のOSS-DB技術者認定試験とは異なります。
データベースに大量データを投入する際の時間短縮手段に関する問題です。
大量データ投入時は、通常時とは異なる運用のため、通常運用時の設定値や設定内容では性能に大きな影響を受けることになります。そのため、一般的には、一時的に設定値を変更したり、主に制約になるような設定を解除したりして、性能を向上させます。
自動コミットがオンの場合、行追加のたびにコミットが発生します。
自動コミットをオフにして最後に1回だけコミットするほうが、コミットにかかる処理を一度に実施できるため、作業時間の短縮につながります。
したがって、A.は適切です。
インデックスや外部キー制約があると、行追加のたびに制約チェックやインデックス修正作業が必要になります。
その処理を省略し最後に一括して制約チェックやインデックス作成をすることで作業時間短縮につながります。
したがって、B.は適切です。
maintenance_work_memは、CREATE INDEX や、ALTER TABLE ADD FOREIGN KEY のような保守操作で使用されるメモリの最大容量を指定するものです。
この値を増やすことで、削除したインデックスや外部キー制約を復活する作業の時間短縮につながります。
B.とセットで効果があります。
したがって、C.は適切です。
checkpoint_segmentsは、チェックポイントが発生するタイミングを指定するパラメータのひとつで、WALファイル数を指定します。
指定した数のWALファイルが生成されるとチェックポイントが発生します。
つまり、この数を減らすと、少ないWALファイル数でチェックポイントが発生することになり、結果的にチェックポイントの回数が増えてしまいます。
したがって、D.は不適切です(checkpoint_segmentsを増やすことが適切な対処)。
checkpoint_timeoutも、チェックポインが発生するタイミングを指定するパラメータのひとつです。
チェックポイント間の最大間隔(時間)を指定するものなので、この値を増やすことで、チェックポイントの回数を減らすことができます。
しかし、大量データ登録時は大量のWALが発生するため、チェックポイント発生のタイミングは、checkpoint_timeoutで指定した値に関わらず、checkpoint_segmentsに依存することになります。
つまり、チェックポイントの回数を減らすための有効な手段にはなりません。
したがって、E.は適切とは言えません(checkpoint_timeoutを変更することに意味がない)。
正解は D と E です。
今回の解説について、理解できないポイントがあればどんどん質問をお寄せ下さい。
※試験問題に関わるお問い合わせにつきましては、LPI-Japan事務局ではお応えできませんのでご了解ください。
© EDUCO All Rights Reserved.