スワップパラメータ¶
クエリが非ストリーミング操作を使用する上、多数の行を処理する場合、必要なメモリの量が急激に増加する可能性があります。過剰な消費を避けるために、Denodo ではデータの一部をディスクにスワップできます。この動作は、以下のパラメータで制御します。
Maximum size in memory of each node: Virtual DataPort が非ストリーミング演算子に許可する最大メモリ使用量を制限します。Denodo は、メモリ使用量がこの制限を超えると推定した場合、行をディスクにスワップしてこれを回避します。このパラメータは、キャッシュロードプロセスのメモリ使用量にも影響を及ぼします (詳細については、「 キャッシュロードプロセス 」を参照)。
Maximum size of the blocks stored in swap (KB): Denodo が行をディスクにスワップする場合、Denodo が書き込み操作に使用する最大ブロックサイズ。
Maximum disk space that can be used for swapping (MB): スワップ操作によってサーバーのディスク容量が不足しないように、この制限を使用します。クエリでデータをスワップする必要がある状況で、利用可能なスワップ領域が十分にない場合、クエリは失敗します。
Maximum number of swap files that can be opened at the same time: 同時に読み書きする際にサーバーが開くことができるスワップファイルの数を制限します。サーバーのファイル記述子が不足している場合、このパラメータの値を減らすか、OS が課すハードリミットを増やすかを選択できます。
通常は、これらのパラメータのデフォルト値を変更する必要はありません。ただし、いくつかのシナリオでは、特定のビューでそれらを変更することがパフォーマンス向上につながります。
ビューのスワップサイズを増やすとスワップを回避でき、パフォーマンスが向上します。たとえば、特定の結合クエリ/ビューを、ハッシュメソッドを使用して実行する場合、以下の条件がすべて満たされていれば、結合ビューの [Maximum size of memory of each node] パラメータの値を増やすことで実行のパフォーマンスを向上させられる可能性があります。
結合の右辺のビューの行がディスクにスワップされている。これを確認するには、クエリの実行トレースを開いて、Swapping プロパティが yes かどうかを確認します。
Java 仮想マシン (JVM) のヒープに空き領域が存在する。
右辺のビューから結合に使用される行で空きメモリの大半が占有されるということがなく、Java 仮想マシン (JVM) がガベージコレクションをあまり実行する必要がない。
[Maximum size of the blocks stored in swap (KB)] パラメータの値を増やすと、大量の並べ替え操作のパフォーマンスを向上させられる可能性があります。大量の並べ替え操作を行う場合、Denodo は大量のデータをディスクに書き込まなくてはならない場合があります (他の操作では書き込むデータが通常は何らかのキーによって自然に分割されるので、このパラメータの影響はあまり大きくなりません)。ただし、このパラメータの値を増やし過ぎると、メモリ使用量が増えて、パフォーマンスに悪影響を及ぼす可能性があります。
デフォルトでは、Virtual DataPort は <DENODO_HOME>/work/vdp
ディレクトリにスワップファイルを作成します。Virtual DataPort でこれらのファイルを別のディレクトリに作成するには、以下の手順に従って実施します。
Virtual DataPort に管理者アカウントでログインします。
次のコマンドを実行します。
SET 'com.denodo.vdb.engine.swap.SwapManager.swapDir' = '<full path to the directory>';
以下に例を示します。
SET 'com.denodo.vdb.engine.swap.SwapManager.swapDir' = '/tmp/denodo_swapping/';
Virtual DataPort を再起動します。