今回は、Silverの「S2 運用管理 - S2.5 基本的な運用管理作業(自動バキュームの概念と動作)」からの出題です。
VACUUMは一時テーブル(temporary table)を対象とできるが、自動バキュームでは一時テーブルは対象外である。
VACUUMはオプションを指定することでファイルサイズを縮小することができるが、自動バキュームには同等の機能がない。
VACUUMはOSの機能などを使って定期的に自動実行するようにできる。自動バキュームはPostgreSQLサーバの稼働中で、トランザクションの実行量が少ないときに自動的に実行されるので、OSの機能の設定は不要である。
※この例題は実際のOSS-DB技術者認定試験とは異なります。
例題公開日:2020年10月29日
PostgreSQLのデータベースは追記型の構造をとることでマルチバージョニングなどの機能を実現しています。このためデータの更新・削除をしたときに削除されて不要になった領域が自動的には再利用されず、放置するとテーブルが占めるディスク領域のサイズがどんどん大きくなります。VACUUMを実行すると、不要になった領域が回収されて再利用可能になり、次回以降のINSERTやUPDATEで(可能であれば)その領域が使用され、ディスク領域の消費が増えなくなります。このVACUUMを自動的に実行する自動バキュームはデフォルトで有効になっていて、適切な設定がされているので、手動でVACUUMを実行する機会は少なくなっていると思いますが、原理については理解しておいてください。
では、選択肢を順に見ていきます。
VACUUMは特にオプションを指定しなければ、不要領域の回収のみを行いますが、ANALYZEオプションを指定すれば、テーブルの解析も行います。これに対し、自動バキュームは不要領域の回収と解析の両方を行います。
VACUUMは対象とするテーブルのリストを指定することができますが、指定しなければ、実行したユーザの権限でVACUUM可能な全テーブルが対象となります。自動バキュームは全テーブルのうち挿入・更新・削除による変更の量がある閾値を超えたテーブルを対象に回収と解析の処理を行います。
一時テーブルは、それを作成したセッションからしか見ることができないため、自動バキュームの対象にはなりません。しかし手動でVACUUMを実行する場合は対象とできます。
通常のVACUUMは不要領域を再利用可能にするだけで、テーブルを構成するファイルのサイズは小さくなりませんが、VACUUMをFULLオプションで実行すると、テーブルへのデータの詰め直しを行うためファイルサイズが小さくなります。ただし、テーブルがロックされるなど副作用もありますから、どうしても必要なとき以外はVACUUM FULLの操作は行わないようにしましょう。自動バキュームにはVACUUM FULLの機能はありません。
OSの機能(例えばLinuxのcron)を使って、VACUUMの実行をスケジューリングすることも可能です。自動バキュームの場合は、自動バキュームランチャと呼ばれるプロセスが常駐していて、そこから一定時間おきに自動バキュームワーカプロセスが起動されます。実際にVACUUMを行うのはこのワーカプロセスです。自動バキュームはトランザクションの量の多少とは関係なしに、一定時間おきに起動されますが、この時間間隔は設定パラメータで調整できます。
したがって正解はA、C、Dです。
例題解説についてのご質問やご意見は以下からご連絡ください。
※本例題および解説は、例題作成者から提供されたものです。実際の試験問題とは異なります。
※実際の試験問題に関するお問い合わせについてはご回答いたしかねます。あからじめご了承ください。
© EDUCO All Rights Reserved.