パラレルReplicatについて

パラレルReplicatは、パフォーマンス向上のために並列でトランザクションを適用する別種のReplicatです。

統合Replicatと同様に、トランザクション間の依存関係が考慮されます。データベースの外部で依存性の計算、マッピングの並列処理および適用が実行されるため、負荷が別のサーバーに移されます。このプロセスでトランザクションの整合性が維持されます。さらに、パラレルReplicatは、大きなトランザクションをチャンクに分割してパラレルに適用することで、大きなトランザクションのパラレル適用をサポートします。

パラレルReplicatは、統合モードと非統合モードの2つのモードをサポートします。パラレルReplicatおよび統合パラレルReplicatは、Oracleデータベースのみでサポートされます。ただし、非統合オプションの使用時には、パラレルReplicatはすべてのデータベースをサポートします。

パラレルReplicatを使用する場合は、次の値(デフォルト値)を確認してください。

  • 証跡内のメタデータ(つまり、証跡が12.1より前でフォーマットされている場合、パラレルReplicatは使用できません)。
  • 証跡ファイルにはスケジュール列が必要です。
  • UPDATERCORDFORMAT COMPACTを使用する必要があります。

統合パラレルReplicatでは、Replicatはデータをターゲット・データベースに適用するインバウンド・サーバーにLCRを送信します。通常のパラレルReplicatでは、その他の非統合Replicatの動作と同様に、SQL文としてLCRをデータベースに直接適用します。

ノート:

OLTPワークロードで最適なパフォーマンスが得られるように、非統合モードのパラレルReplicatをお薦めします。

パラレルReplicatのコンポーネントは次のとおりです。

  • マッパーはパラレルに動作し、証跡の読取り、証跡レコードのマッピング、マップされたレコードの統合Replicat LCR形式への変換、および後続の処理のためのマージャへのLCRの送信を実行します。1つのマッパーが1つのセットのトランザクションをマップしている間に、次のマッパーが次のセットのトランザクションをマップします。証跡情報は分割されますが、証跡情報が正しく順序付けされるため、証跡ファイルはそのままの状態になります。
  • マスター・プロセスにはコレータとスケジューラの2つのスレッドがあります。コレータはマスターからマップされたトランザクションを受け取り、依存関係の計算のために証跡の順序に戻します。スケジューラがトランザクション間の依存関係を計算し、トランザクションを独立したバッチにグループ化し、ターゲット・データベースに適用するためにバッチをアプライアに送信します。
  • アプライアは配列実行のためにバッチ内のレコードを並べ替えます。さらにバッチをターゲット・データベースに適用し、エラー処理を実行します。また、適用したトランザクションをチェックポイント表で追跡します。

ノート:

パラレルReplicatでは、外部キー列が索引付けされている必要があります。

パラレルReplicatの利点

パラレルReplicatを使用する利点は次のとおりです。

  • 統合パラレルReplicatは、複数のトランザクションを同時に適用するパラレル適用プロセス間で高負荷ワークロードを自動的にパーティション化しながら、ソース・トランザクションの完全性とアトミック性を保持できます。適用プロセスの最小数および最大数の両方をPARALLELISMおよびMAX_PARALLELISMパラメータで構成できます。Replicatは、ワークロードが増加すると、追加のサーバーを自動的に追加し、ワークロードが軽減されると、再度下方に調整します。
  • 統合パラレルReplicatでは、最小限の構成作業が必要です。すべての作業は、レンジ・パーティションを構成することなく1つのReplicatパラメータ・ファイル内に構成されます。
  • 高パフォーマンスの適用ストリーミングは、軽量アプリケーション・プログラミング・インタフェース(API)によって、Replicatとインバウンド・サーバーの間で統合パラレルReplicatのために有効化されます。
  • バリア・トランザクションは、統合パラレルReplicatによって複数のサーバー適用プロセス間で調整されます。
  • DDL操作は、DDLの実行前にサーバー処理が完了まで待機することで、バリアを強制する直接トランザクションとして処理されます。
  • 一時的な重複主キー更新は、統合パラレルReplicatによってシームレスに処理されます。
  • パラレルReplicatでは、単一の大規模トランザクションを小さなチャンクに分割して、そのチャンクをパラレルに適用できます。詳細は、「SPLIT_TRANS_RECS」を参照してください。

パラレル・レプリケーション・アーキテクチャ

パラレル・レプリケーション・プロセスは、統合モードの場合に、Oracle Database内で使用可能な適用処理機能を活用します。単一のReplicat構成では、インバウンド・サーバーの複数の子プロセス(適用サーバーと呼ばれる)が、元のトランザクション原始性を維持しつつ、トランザクションをパラレルに適用します。

次のアーキテクチャ図は、非統合パラレルReplicatの証跡ファイルからターゲット・データベースへのパラレル・レプリケーションの様々なプロセスを介した変更レコードのフローを表します。



次に、前述のアーキテクチャ図の説明を示します。

  • マッパーが証跡ファイルを読み取ってレコードをマップし、マップしたレコードをマスターに転送します。バッチはアプライアに送信されて、ターゲット・データベースに適用されます。
  • マスター・プロセスにはコレータとスケジューラの2つの個別のスレッドがあります。コレータはマッパーの管理とマッパーとの通信を行い、さらにマップされたトランザクションを受信して、単一の順序ストリームに並べ替えます。スケジューラはアプライアの管理とアプライアとの通信を行い、さらにコレータからトランザクションを読み取り、バッチにしてアプライアに対してスケジュールします。
  • スケジューラ・コントローラはスケジューラと通信して必要な情報(現在の低水位標の位置など)を収集します。スケジューラ・コントローラはOracle DatabaseのCDBモードに必要で、これにより、様々なターゲットPDBに関連する情報を集約して、統一された状況をレポートします。スケジューラ・コントローラは、CDBモードでない場合でもシンプルで統一された実装を実現するために作成されています。各プロセスがパラメータ・ファイルを読み取り、単一のチェックポイント・ファイルを共有します。

パラレルReplicatの基本パラメータ

次の表に、基本的なパラレルReplicatのパラメータおよびその説明を示します。

パラメータ 説明

MAP_PARALLELISM

マッパーの数を構成します。これは証跡ファイルを読み取るために使用されるスレッドの数を制御します。最小値は1、最大値は100、デフォルトは2です。

APPLY_PARALLELISM

アプライアの数を構成します。これは変更を適用するために使用されるターゲット・データベースの接続の数を制御します。デフォルト値は4です。

MIN_APPLY_PARALLELISM

MAX_APPLY_PARALLELISM

並列化の適用が自動チューニングされます。最小値と最大値を設定して、Replicatが並列化を自動的に調整する範囲を定義できます。デフォルト値はありません。APPLY_PARALLELISMと同時に使用しないでください。

SPLIT_TRANS_REC

大きなトランザクションを指定のサイズのピースに分割して、パラレルに適用するように指定します。ピース間の依存関係は保持されます。デフォルトでは無効です。

COMMIT_SERIALIZATION

FULL直列化モードのコミットを有効にし、証跡の順序でトランザクションを強制的にコミットします。

詳細パラメータ

LOOK_AHEAD_TRANSACTIONS

トランザクションをバッチ化するときに、スケジューラがどの程度先まで対象にするかを制御します。デフォルト値は10000です。

CHUNK_SIZE

パラレルReplicatで、どの程度の大きさのトランザクションを大きいトランザクションとみなすかを制御します。パラレルReplicatは、このサイズより大きいトランザクションを検出すると、そのトランザクションをシリアライズするためにパフォーマンスが低下します。ただし、この値を大きくすると、パラレルReplicatによって消費されるメモリーも増加します。

パラメータ・ファイルの例

REPLICAT repe USERID ggadmin, password *** 
MAP_PARALLELISM 3 
MIN_APPLY_PARALLELISM 2 
MAX_APPLY_PARALLELISM 10 
SPLIT_TRANS_RECS 60000 
MAP *.*, TARGET *.*;