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以下の値を設定します。

指定しません。

ReplicationParallelismの2倍の値を設定します。

0に設定(パラレル伝播を有効化)

複数のトラックを使用するために16より大きい32以下の値を設定します。

指定しません。

エラーがスローされます。CacheAWTParallelismが設定されていない場合、ReplicationParallelismで設定されている値の2倍の値をスレッド数として指定します。したがって、この場合、ReplicationParallelismには16より大きな値を指定できません。

0に設定(パラレル伝播を有効化)

複数のトラックを使用するために1より大きい32以下の値を設定します。

ReplicationParallelismの値以上の値を設定します。

CacheAWTParallelismで指定された数を設定します。

0に設定(パラレル伝播を有効化)

複数のトラックを使用するために1より大きい32以下の値を設定します。

ReplicationParallelismの値より小さい値を設定します。

データベース作成時にエラーがスローされます。CacheAWTParallelismには、ReplicationParallelismの値以上の値を設定する必要があります。

0に設定(パラレル伝播を有効化)

1を設定するかまたは指定しません。シングル・トラック。

1より大きな値を設定します

CacheAWTParallelismで指定された数を設定します。

1に設定(パラレル伝播を無効化)。

N/A

1より大きな値を設定します

パラレル化が無効になっているのに、パラレル伝播が有効化されることを見込んでCacheAWTParallelismに値が設定されているため、データベースの作成時にエラーがスローされます。

キャッシュされる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);

次の各項では、パラレル伝播の制限、構成およびチェックについて説明します。