この章では、Oracle GoldenGate Veridataのパフォーマンスを改善する方法について説明します。
Oracle GoldenGate Veridataのパフォーマンスに影響する要因、および大容量のデータを処理する場合にパフォーマンスを改善できる方法は次のとおりです。
データベースおよびネットワークの使用
Oracle GoldenGate Veridataの2つの重要なパフォーマンス要因は、次のとおりです。
データがどのようにソートされるか
ネットワーク間でデータがどのように送信されるか
これらのパフォーマンス要因のパフォーマンス統計は、終了した比較ごとに比較レポートに出力され、ソースおよびターゲット(「構成レポートの使用」を参照)の初回比較手順に対して記録されます。
ネットワークの使用
Oracle GoldenGate Veridataは、効率的なデータ転送にハッシュおよびネットワーク・メッセージ圧縮を使用することで、ネットワークの使用を自動的に最適化します。表またはファイルの平均行のサイズ(バイト)が増加すると(bytes/rowパフォーマンス統計を参照)、ハッシュで達成される圧縮率も増加します(rh bytes/rowおよびhash comp rateパフォーマンス統計を参照)。行が50バイトか1000かに関係なく、非キー値を表す場合に使用されるバイト数は12になります。そのため、表サイズの割合(バイト)が大きい行では、ネットワークを効率的に使用する傾向があります。これらと同じ理由で、行サイズに対してキー・サイズが小さいと、ネットワークの使用が効率的になります。
また、NonStopプラットフォームでは、送受信のTCP/IPバッファ・サイズをチェックします。これらは、32K (Oracle GoldenGate Veridataの場合)に設定するようにしてください。
データベース・アクセス
デフォルトでは、Oracle GoldenGate Veridataは比較対象のデータのソートにデータベースを使用します。次の要因は、データベースのソート・アルゴリズムのパフォーマンスに影響します。
比較される表の行の数
表に定義される索引
使用中のキー
データベースのチューニング方法
テストの実行後、比較のパフォーマンスに満足いかない場合、サーバー側のソート(Oracle GoldenGate Veridataサーバー自身がソートを実行)を使用すると速くなる可能性があります。
構成オプション
比較パフォーマンスの改善で考慮できるその他の要因は次のとおりです。
大きい表のパーティション
大きいソースおよびターゲット表は、異なる行サブセットに関連付けられている行パーティションに分割できます。行パーティションでは、データのセットを並行して処理できるため、処理の時間を抑えることもできます。たとえば、一方のパーティションを今日比較し、もう一方のパーティションを明日比較できます。また、サブセット比較の結果から、表全体の同期ステータスを確認できます。
列の除外
変更されないことが確認できる列が表に含まれている場合、またはそれらの列が同期しているかどうか重要でない場合は、それらの列を比較から除外することで、処理負荷を軽減できます。列は、比較ペアの作成または編集時に除外できます。
デルタ処理の使用
デルタ処理(Oracle GoldenGate Veridataで使用され、表またはファイルのすべての行ではなく、変更されたデルタ・ブロックのみを比較するパフォーマンス機能)を使用するように、EnscribeおよびNonStop SQL比較ペアを構成できます。
データベース・トランザクション分離レベルの変更
各Oracle GoldenGate Veridataエージェントでは、環境パラメータを格納するインストール・フォルダのルートに、agent.propertiesファイルがあります。これらのパラメータの1つは、database.transaction.isolationです。このプロパティでは、初回比較手順の実行中に使用されるトランザクション分離レベルを制御します。SQL ServerおよびTeradataのデフォルト値はREAD_UNCOMMITTEDです。つまり、行を選択するために発行される問合せは、他のトランザクションによって変更された行を読み取ることができますが、まだコミットされていません(ダーティ読取り)。他のトランザクションがデータを変更できないように共有ロックを発行したり、他のトランザクションのロックによってロックされることもありません。
READ UNCOMMITTEDオプションを使用する利点では、ロックによって影響されないため、データの初期読取りが高速になることです。これの悪影響は、(トランザクションの間にデータが変更される場合があるため)多くのレコードがpossibly out-of-syncとしてラベル付けされる可能性があり、確認手順で再度の比較が必要になることです。確認手順で比較する行が多すぎると考える場合は、プロパティ・ファイルを編集して、database.transaction.isolationをCOMMITED (コミットされたレコードのフェッチのみを許可)に設定できます。読取り一貫性を維持するために、ロックの影響により初回比較手順が遅くなる可能性よりも、改善する方を重視する必要があります。
注意: (この段階では、ダーティ読取りが許可されないため、Oracleでサポートされている値はREAD_COMMITTEDのみで、確認手順では常にREAD_COMMITTEDが使用されます。) |
プロファイル・オプション
パフォーマンスの改善に役立つ初期および確認手順の特定のパラメータを制御できます。
初回比較手順のパラメータ
Limit the number of rows that are compared: 特定のジョブ・プロファイルに「Limit Number of Input Rows」パラメータを使用することで、処理でフェッチされる行数を制約できます。これにより、少ない行数を処理して、表全体がどの程度非同期か(またはそうでないか)を確認できます。結果に基づき、完全な比較を実行するか、データの再同期化のみを実行するかについて決定できます。「Limit Number of Input Rows」パラメータは、初回比較プロセスの一般パラメータです。
Increase process priority (NonStop only): Oracle GoldenGate Veridataエージェントに、NonStopシステムで可能な最高のプロセス優先度を割り当てます。優先度(およびプロセス名とCPU番号)は、ジョブ・プロファイルの初期および確認手順のNonStop設定を使用して割り当てることができます。
Increase processing threads: デフォルトは4スレッドです。Oracle GoldenGate Veridataサーバーが実行されているマシンに多くのプロセッサがある場合は、必要に応じて「Max Concurrent Comparison Threads」パラメータの値を変更することで、同時比較を実行して、すべてのスレッドをビジー状態に維持できます。このパラメータは、初回比較プロセスの一般プロファイル設定にあります。
確認手順のパラメータ
Run each comparison step separately: デフォルトでは、Oracle GoldenGate Veridataは、初回比較および確認プロセスを同時に実行します。順に実行すると、使用するシステム・リソースが少なくなりますが、結果が得られるまで時間がかかります。この機能は、比較手順の「General profile」設定の「Run Concurrently with Initial Compare」パラメータで制御します。
Skip the confirmation step: デフォルトでは、確認手順を常に実行します。この手順は、データベースが停止した場合、またはレプリケーションでデータ変更がアクティブにレプリケートされない場合にスキップできます。確認手順の「General profile」設定の「Perform Confirmation Step」パラメータを使用します。
Increase process priority (NSK): Oracle GoldenGate Veridataエージェントに、NonStopシステムで可能な最高のプロセス優先度を割り当てます。優先度(およびプロセス名とCPU番号)は、ジョブ・プロファイルの初期および確認手順のNonStop設定を使用して割り当てることができます。
接続手順
フェッチされる行のバッチ・サイズを増やしてスループットを上げてください。これを行うには、初期および確認手順の「Initial Compare Fetch Batch Size」パラメータのサイズを増やします。
Oracle GoldenGate Veridataパフォーマンスの最も重要な2つの側面は、データベース・アクセスとネットワークの使用です。これらの側面の両方のパフォーマンス統計は、実行した比較ごとに比較レポートに出力され、ソースおよびターゲット・システムの初回比較手順に対して記録されます。これらの統計の説明は次のとおりです。これらの統計の結果に応じて、データベース・アクセスとネットワークの使用を最適化する方法があります。
rows
データベースからフェッチされる行数。
duration
フェッチされる行の処理にかかる時間。
rows/sec
1秒当たりの処理行数。
row bytes
処理されたバイトの合計数。
row bytes/sec
1秒当たりの処理行数(バイト)。
bytes/row
ハッシュおよび圧縮前の行の平均サイズ。
rh bytes/row
ハッシュの適用後の行の平均サイズ。
time until first row
行ハッシュ問合せの開始から、問合せで最初のレコードが返されるまでの時間(秒)。時間が長い場合は、最初の行が返される前に表をソートする必要がある可能性があります。
ipc msgs
サーバーとエージェントのプロセス間のメッセージの数。
ipc bytes
サーバーとエージェントのプロセス間で転送されるバイト数。
bytes/msg
圧縮の適用前のメッセージ当たりのバイト数。
bytes/sec
圧縮が適用される前に、サーバーとエージェントのプロセス間で転送された1秒当たりの有効バイト数。