COMPACT_METADATA_TABLES¶
説明
ストアドプロシージャ COMPACT_METADATA_TABLES
は、Virtual DataPort メタデータが格納されているデータベースから未使用の領域を解放します。
Virtual DataPort は、そのメタデータをローカルデータベースに格納します。作成する 仮想データベースごとに 、メタデータを格納する一連のテーブル (データソース用に 1 つ、ビュー用に 1 つ、Web サービス用に 1 つなど) をこのデータベースに作成します。ユーザーがエレメントを作成したり削除したりするにつれ、メタデータデータベースによって使用される領域が増加します。データベースが未使用の領域をオペレーティングシステムに返さないためです。
このプロシージャは、 <DENODO_HOME>/metadata/db/dbmetadata
ディレクトリのサイズが数ギガバイトを超えた場合に実行します。
このプロシージャは、メタデータデータベースのテーブルを、一度にすべてではなく、1 つずつ最適化します。
「 MAINTAIN_METADATA_TABLES 」も参照してください。
重要
以下の点に注意してください。
Virtual DataPort が 外部データベースにメタデータを保存する ように構成されている場合、このプロシージャは何の効果もありません。
テーブルをコンパクションするときに、このプロシージャはそのテーブルに対する排他ロックを取得します。このロックにより、Virtual DataPort はテーブルに対する読み取りまたは書き込みができなくなります。テーブルのコンパクションが終了すると、このロックは解除されます。
これはメモリを大量に消費するプロセスです。
選択された「モード」(以下の
mode
パラメータの説明を参照) に応じて、このプロシージャは一時ファイルを作成します。ディスクがすでにいっぱいの場合、これは問題になります。
したがって、このプロシージャは、サーバーの負荷が非常に低いかまったくないときに実行するようにしてください。サーバーが Denodo サーバーのクラスタに属している場合は、Denodo に接続されている外部アプリケーションへの影響を回避するために、サーバーをクラスタから削除してください。
重要
このプロシージャを初めて使用する前に、以下の VQL ステートメントを管理者アカウントで実行してください。
CREATE PROCEDURE compact_metadata_tables
CLASSNAME = 'com.denodo.vdb.contrib.storedprocedure.CompactMetatadataTablesProcedure';
構文
COMPACT_METADATA_TABLES(
compaction_type : int
)
compaction_type
: テーブルをコンパクションするために使用されるモード。このプロシージャは、メタデータデータベースの各テーブルを一度にすべてではなく、1 つずつコンパクションします。指定可能な値は以下のとおりです。
0
(非順次的): このモードでは、メタデータデータベースのテーブルごとに、このプロシージャがテーブルとそのすべてのインデックスを 同時に コンパクションします。1
(順次的): このモードでは、メタデータデータベースのテーブルごとにこのプロシージャがテーブルをコンパクションし、テーブルのコンパクションの終了後にそのインデックスを 1 つずつコンパクションします。2
(インプレース): このモードでは、一時テーブルとインデックスを使用しません。行が同じ領域で移動されます。
モード
2
(インプレース) と異なり、モード0
(非順次的) と1
(順次的) では、新しいテーブルやインデックスが一時的に作成されるものの、最大の空き領域が解放されることが保証されます。モード0
と1
では、データベースはアクティブな行を新しく割り当てられた領域にコピーし、それらのコピーが終了してから、古いテーブルで使用されていた領域を解放するためです。モード2
では、すべての処理は同じ領域で行われます。モード
0
ではモード1
よりも多くのメモリとディスク領域が使用され、インデックスをコンパクションするために一時ファイルが作成されます。モード0
の場合、テーブルのすべてのインデックスが同時にコンパクションされ、それらのインデックス用の一時ファイルが同時に作成されます。これに対して、モード1
の場合は、テーブルのインデックスが 1 つずつコンパクションされるため、インデックス用の一時ファイルは常に 1 つだけ存在することになります。ですが、モード
0
はモード1
よりはるかに高速です。そのため、モード
0
はモード1
より CPU 負荷が高くなります。モード
2
では、利用可能なすべての領域が解放されることは保証されませんが、ハードドライブがいっぱいの場合でも、データベースによって一時的に使用される領域が増えるようなことはありません。
このプロシージャの出力スキーマには以下のフィールドがあります。
COMPACTION_TYPE_NAME
: コンパクションに使用されたモードの名前。つまり、パラメータとして入力されたモードの名前です。METADATA_TABLES_COMPACTED
: コンパクションされたメタデータデータベースのテーブルの数。ERRORS
: このデータベースは、メタデータデータベースの各テーブルに対して同じプロシージャを呼び出します。このフィールドは、このプロシージャの実行に失敗した回数を保持します。