次のテーブルは、マルチフェーズ コーディネーション プロトコルを、マスター スレーブ リレーションシップで実行されているLoadオペレータの3つのインスタンスで使用する場合の例を簡単にまとめたものです。 この実行では、マスター オペレータが処理環境を確立している間、スレーブ オペレータはアイドル モードのように動作します。 すべてのオペレータが同期点に達すると、独立並列処理が開始します。
実行時には、Teradata PTプロセッサは、Initiate、Execute、Checkpoint、Restart、またはTerminate関数を使用して、並列実行プランの各オペレータを呼び出します。 各オペレータはこれに対して、SamePhase、NextPhase、またはEndMethod応答でそのステータスを返します。
第1フェーズのメソッドの処理は、オペレータの各インスタンスが、第1フェーズの終了と第2フェーズの開始を意味するNextPhaseステータスを返すまで継続されます。 このフェーズ処理は、オペレータの各インスタンスがEndMethodステータスを返すまで継続されます。この処理に対して許可されるフェーズ数に制限はありません。
プロセス全体が各メソッドについて繰り返され、メソッドごとに、SamePhase、NextPhase、およびEndMethodステータスによってマルチフェーズ コーディネーションの同期点が提供されます。
マルチフェーズ コーディネーション プロトコルは、マスター/スレーブ指向ではないオペレータに対しても使用できます。 すでに述べたように、フェーズ コーディネーション プロセスは、Teradata PTプロセッサではなく、オペレータ自身によって実装および制御されます。 このプロトコルでは、Teradata PTプロセッサを誘導するための適切なステータス戻り値を使用して、オペレータ間で操作を自由にコーディネートできます。
メソッド | フェーズ | マスター オペレータ オブジェクト | スレーブ1オペレータ オブジェクト | スレーブ2オペレータ オブジェクト |
---|---|---|---|---|
Initiate | 1 | グローバル変数を割り振る | Teradata SQLセッションを作成/接続する | Teradata SQLセッションを作成/接続する |
LSN(Logon Sequence Number)パーセルを取得するためのTeradata SQLセッションを作成/接続する | NextPhaseを返す | NextPhaseを返す | ||
LSNパーセルからLSNを抽出する | ||||
LSNをグローバル変数として保存する | ||||
Teradata SQLセッションを作成/接続する | ||||
NextPhaseを返す | ||||
2 | LSNグローバル変数を使って、Loadセッションを作成/接続する | LSNグローバル変数を使って、Loadセッションを作成/接続する | LSNグローバル変数を使って、Loadセッションを作成/接続する | |
NextPhaseを返す | EndMethodを返す | EndMethodを返す | ||
3 | Begin Loadingを発行する | |||
EndMethodを返す | ||||
Execute | 1 | データ ソースからレコードを読み取る | データ ソースからレコードを読み取る | データ ソースからレコードを読み取る |
ファイルの終わりであれば(IF)、NextPhaseを返す それ以外は(ELSE)、SamePhaseを返す |
ファイルの終わりであれば(IF)、EndMethodを返す それ以外は(ELSE)、SamePhaseを返す |
ファイルの終わりであれば(IF)、EndMethodを返す それ以外は(ELSE)、SamePhaseを返す |
||
2 | End Loadingを発行する(ユーザーが指定した場合) | |||
EndMethodを返す | ||||
Checkpoint | 1 | 統計をグローバル変数に書き込む | 統計をグローバル変数に書き込む | 統計をグローバル変数に書き込む |
NextPhaseを返す | EndMethodを返す | EndMethodを返す | ||
2 | チェックポイント レコードを再始動ログ ファイルに書き込む | |||
EndMethodを返す | ||||
Restart | 1 | チェックポイント レコードを処理する | チェックポイント レコードを処理する | チェックポイント レコードを処理する |
NextPhaseを返す | EndMethodを返す | EndMethodを返す | ||
2 | 再始動の終わりを示すために、再始動ログ ファイルに再始動レコ-ドを書き込む | |||
EndMethodを返す | ||||
Terminate | 1 | Loadセッションを切断する | Loadセッションを切断する | Loadセッションを切断する |
NextPhaseを返す | NextPhaseを返す | NextPhaseを返す | ||
2 | Teradata SQLセッションを切断する | Teradata SQLセッションを切断する | Teradata SQLセッションを切断する | |
グローバル変数の割振りを解除する | EndMethodを返す | EndMethodを返す | ||
EndMethodを返す |