今回は、Silverの「運用管理 - 基本的な運用管理作業(自動バキュームの概念と動作)」からの出題です。
一定時間ごとに自動的にバキュームが実行される。
システムの負荷が低い時に自動的にバキュームが実行される。
大量のデータの挿入・更新・削除があったテーブルに対して、自動的にバキュームが実行される。
トランザクションIDの周回問題を回避するために、自動的にバキュームが実行される。
バキュームが実行されるタイミングが予測できないため、デフォルトでは実行されないようになっている。
※この例題は実際のOSS-DB技術者認定試験とは異なります。
例題公開日:2016年9月5日
PostgreSQLは追記型のデータ構造を採っており、データをDELETEしても、データに削除済フラグがつくだけで、物理的にはデータが削除されません。UPDATEも内部的にはDELETEとINSERTを実行するため、古いデータが残り、そのまま放置すると物理的なデータ量が増えていきます。
この削除済みデータの領域を回収するのがバキューム(VACUUM)機能であり、それを自動的に実行するのが自動バキュームです。
自動バキュームでは、データベース内の各テーブルを検査し、挿入・更新・削除などの変更が一定量以上行われていた場合に自動的にバキュームが実行されます。また、トランザクションIDの周回問題を回避するため、テーブルのrelfrozenid値がautovacuum_freeze_max_ageより大きい場合も自動的にバキュームが実行されます。
自動バキュームの実行はあくまでもデータ更新の量に依存するため、経過時間やシステムの負荷などとは関係がありません。
自動バキュームの実行は必須ではありませんが、強く推奨されており、またデフォルトで実行されるようになっています。パラメータもデフォルトで適切な値に設定されています。
従って、正解はCとDです。
今回の解説について、理解できないポイントがあればどんどん質問をお寄せ下さい。
採用になった方にはLPI-Japanオリジナルの記念品を贈呈します。
※試験問題に関わるお問い合わせにつきましては、LPI-Japan事務局ではお応えできませんのでご了解ください。
© EDUCO All Rights Reserved.