Oracle Databaseへのパラレル伝播を使用したAWTスループットの向上
AWTキャッシュ・グループのスループットを向上させるために、パラレル動作でトランザクションの変更をOracle Databaseに伝播および適用する複数のスレッドを構成できます。パラレル伝播では、トランザクションの依存性に従って、AWTキャッシュ表の変更をコミット順にOracle Database表に適用します。
パラレル伝播は、AWTキャッシュ・グループにおいて次の構成でサポートされます。
-
アクティブ・スタンバイ・ペア・レプリケーション・スキームに関連するAWTキャッシュ・グループ
-
単一のTimesTenデータベース内のAWTキャッシュ・グループ(レプリケーション・スキーム構成なし)
-
いずれかのエージング・ポリシーで構成されたAWTキャッシュ・グループ
次のデータ・ストア属性を使用すると、パラレル伝播を有効化し、パラレル動作で変更をAWTキャッシュ表から対応するOracle Database表に伝播するスレッドの数を制御できます。
-
ReplicationApplyOrdering
を使用すると、デフォルトでパラレル伝播が有効になります。 -
ReplicationParallelism
は、レプリケーション・スキームでパラレル・レプリケーションを行う場合のソース・データベースでの送信側スレッド数およびターゲット・データベースでの受信側スレッド数を定義します。パラレル・レプリケーションのためだけに使用される場合、この値は2から32の間で指定できます。デフォルトは1です。また、ReplicationParellelism
の値は、LogBufParallelism
の値の半分を超えてはなりません。 -
CacheAWTParallelism
(設定時)では、AWTキャッシュ表からOracle Database表への変更のパラレル伝播で使用されるスレッド数を決定します。この属性は2から31の間で設定します。デフォルトは1です。
AWTキャッシュ・グループのパラレル伝播は、次のシナリオのうちいずれかを使用して構成されます。
-
ReplicationApplyOrdering
を0に、ReplicationParallelism
を1より大きな値に設定します。CacheAWTParallelism
を設定しない場合、Oracle Databaseに変更を適用するスレッドの数は、ReplicationParallelism
の設定の2倍になります。たとえば、ReplicationParallelism=3
の場合、Oracle Database表に変更を適用するスレッドの数は6です。この場合、ReplicationParallelism
は2から16の間でのみ設定可能で、それ以外の値を使用すると、2倍になった値がパラレル伝播の最大スレッド数である31を超えてしまいます。この値を16に設定すると、最大スレッド数のデフォルト値は31になります。 -
ReplicationApplyOrdering
を0に、ReplicationParallelism
を1以上の値に、CacheAWTParallelism
を1より大きな値に設定します。CacheAWTParallelism
には、ReplicationParallelism
で設定された値以上の値で、かつ31以下の値を指定する必要があります。CacheAWTParallelism
を指定しない場合、Oracle Databaseへのパラレル伝播に使用するスレッド数はReplicationParallelism
を使用して決定されます。ただし、この値はパラレル伝播のスレッドに使用すると2倍になるため、ReplicationParallelism
に設定できるのは2から16の間の数のみです。この値を16に設定すると、最大スレッド数のデフォルト値は31になります。ReplicationParallelism
属性とCacheAWTParallelism
属性の両方が設定されている場合は、CacheAWTParallelism
に設定される値がパラレル伝播で使用するスレッド数を構成します。CacheAWTParallelism
の設定によって、パラレル伝播に適用されるスレッドの数が決まり、またReplicationParallelism
の設定によって、パラレル・レプリケーションのスレッド数が決まります。これからわかるように、ReplicationParallelism
を4に、CacheAWTParallelism
を6に設定すると、Oracle Database表に変更を適用するスレッドの数は6になります。これにより、Oracle Database表へのパラレル・レプリケーションとパラレル伝播に使用するスレッド数を異ならせることができます。
ノート:
『Oracle TimesTen In-Memory Databaseレプリケーション・ガイド』の「パラレル・レプリケーションの構成」を参照してください。『Oracle TimesTen In-Memory Databaseリファレンス』の「ReplicationApplyOrdering」、「ReplicationParallelism」および「CacheAWTParallelism」を参照してください。
これらのデータ・ストア属性は、相互に関連性があります。表7-1に、使用可能な各種属性値の組合せ結果を示します。
表7-1 パラレル伝播のデータ・ストア属性関係の結果
ReplicationApply Ordering | ReplicationParallelism | CacheAWTParallelism | パラレル伝播のスレッド数 |
---|---|---|---|
0に設定(パラレル伝播を有効化) |
複数のトラックを使用するために1より大きい16以下の値を設定します。 |
指定しません。 |
|
0に設定(パラレル伝播を有効化) |
複数のトラックを使用するために16より大きい32以下の値を設定します。 |
指定しません。 |
エラーがスローされます。 |
0に設定(パラレル伝播を有効化) |
複数のトラックを使用するために1より大きい32以下の値を設定します。 |
|
|
0に設定(パラレル伝播を有効化) |
複数のトラックを使用するために1より大きい32以下の値を設定します。 |
|
データベース作成時にエラーがスローされます。 |
0に設定(パラレル伝播を有効化) |
1を設定するかまたは指定しません。シングル・トラック。 |
1より大きな値を設定します |
|
1に設定(パラレル伝播を無効化)。 |
N/A |
1より大きな値を設定します |
パラレル化が無効になっているのに、パラレル伝播が有効化されることを見込んで |
キャッシュされるOracle Database表の外部キーには、その外部キーに対する索引を作成する必要があります。次のOracle Database表について考えてみます。
CREATE TABLE parent (c1 NUMBER PRIMARY KEY NOT NULL); CREATE TABLE child (c1 NUMBER PRIMARY KEY NOT NULL, c2 NUMBER REFERENCES parent(c1)); CREATE TABLE grchild (c1 NUMBER PRIMARY KEY NOT NULL, c2 NUMBER REFERENCES parent(c1), c3 NUMBER REFERENCES parent(c1));
次の索引を作成する必要があります。
CREATE INDEX idx_1 ON child(c2); CREATE INDEX idx_2 ON grchild(c2); CREATE INDEX idx_3 ON grchild(c3);
次の各項では、パラレル伝播の制限、構成およびチェックについて説明します。