18.6. engine-vacuum ツール

18.6.1. engine-vacuum ツール

engine-vacuum ツールにより、PostgreSQL データベースのメンテナスが行われます。テーブルを更新して実行されない行を削除することで、ディスク領域を再使用することができます。VACUUM コマンドおよびそのパラメーターについては、「 PostgreSQL 9.5.14 Documentation」を参照してください。

engine の vacuum 操作に関するコマンドは、engine-vacuum です。root ユーザーとしてログインして、Red Hat Virtualization 環境の管理者の認証情報を入力する必要があります。

あるいは、engine-setup コマンドを使用する際に engine-vacuum ツールを実行して、既存のシステムをカスタマイズすることができます。

$ engine-setup
...
[ INFO  ] Stage: Environment customization
...
Perform full vacuum on the engine database engine@localhost?
This operation may take a while depending on this setup health and the
configuration of the db vacuum process.
See https://www.postgresql.org/docs/9.5/static/sql-vacuum.html
(Yes, No) [No]:

Yes を選択すると、engine-vacuum ツールは詳細モードで完全 vacuum 操作を実施します。

18.6.2. engine の vacuum 操作モード

engine の vacuum 操作には 2 つのモードがあります。

標準 vacuum 操作

定期的に標準 vacuum 操作を実施することを推奨します。

標準 vacuum 操作はテーブル内の実行されない行のバージョンを削除し、その領域をインデックス化して今後再使用可能として識別します。頻繁に更新されるテーブルでは、定期的に vacuum 操作を実施する必要があります。ただし、標準 vacuum 操作ではこれらの領域はオペレーティングシステムに返還されません。

パラメーターを指定せずに標準 vacuum 操作を実施すると、現在のデータベースの全テーブルが処理されます。

完全 vacuum 操作

完全 vacuum 操作を定期的に実施することは推奨されません。テーブル内から相当量の領域を確保する必要がある場合にのみ実行してください。

完全 vacuum 操作でテーブルを圧縮する場合、書き込まれるテーブルファイルの新しいコピーには使用されない領域が含まれません。したがって、オペレーティングシステムは領域を再取得することができます。完全 vacuum 操作には時間がかかる場合があります。

完全 vacuum 操作には、処理が完了して古いコピーが削除されるまで、テーブルの新しいコピー用に追加のディスク容量が必要です。完全 vacuum 操作を行うためにはテーブルを完全にロックする必要があるので、テーブルを使用するその他の操作と並行して実施することはできません。

18.6.3. engine-vacuum コマンドの構文

engine-vacuum コマンドの基本構文は以下の形式です。

# engine-vacuum
# engine-vacuum option

オプションを指定せずに engine-vacuum コマンドを実行すると、標準 vacuum 操作が実施されます。

engine-vacuum コマンドをさらに詳しく指定する数多くのパラメーターがあります。

一般的なオプション

-h--help
engine-vacuum コマンドの使用方法についての情報を表示します。
-a
標準 vacuum 操作を実施し、データベースを分析し、最適化ツールの統計値を更新します。
-A
データベースを分析して最適化ツールの統計値を更新しますが、vacuum 操作は実施しません。
-f
完全 vacuum 操作を実施します。
-v
より詳しいコンソール出力を表示する詳細モードで実施します。
-t table_name

特定のテーブルの vacuum 操作を実施します。

# engine-vacuum -f -v -t vm_dynamic -t vds_dynamic