ジャーナリングのGT.M言語拡張

明示的にMUPIP SETとJOUNALコマンドを加えることによって、GT.Mはジャーナリングを強化するいくつかの言語の拡張を提供します。

ZTSTARTとZTCOMMIT

TSTARTとTCOMMITは一般的にトランザクションを囲いこむ方法を推奨され、一方、ZTSTARTとZTCOMMITコマンドもまた論理的トランザクションを囲いこむことを利用できます。アプリケーションがトランザクションを囲いこむことを含んでいる時、MUPIP JOURNAL 処理は、ユニットとしてトランザクション内で更新を扱い、それらを完全に復元するか、または、少しも復元しないかを扱います。

ZTSTARTとZTCOMMITについての詳細情報は、この文書の"トランザクションの囲い込"のセクションとGT.M プログラマーガイドの"コマンド"の章を参照してください。

VIEW キーワード

GT.Mは、VIEWコマンドへの引数として、JNLFLUSHとJNLWAITキーワードを提供します。通常の操作は、ジャーナリングを制御するためVIEWコマンドは必要ありません。ただし、デバッグなどのような特別の事情の下、ジャーナルキーワードをもつVIEWコマンドは、GT.Mがジャーナルファイルへすべてのその更新を転送することを確保するために、Mプログラムを許可します。

VIEW "JNLFLUSH": 領域がメモリからディスクへ与えられた領域のためにすべてのバッファされたジャーナルレコードの完全な転送を開始します。通常、ディスクへのジャーナルバッファの転送が自動的に起こります。転送は、空き場所の要件によって、新しいジャーナルレコードを、あるいは/または、最終更新からの時間の経過を、保持するためにトリガされます。VIEW "JNLFLUSH" (指定された領域なしに)は、現在のグローバルディレクトリ内のすべての領域をフラッシュします。

すべての地域でプロセスによってすべての更新が開始されるまで、プロセスの実行を停止するためにGT.Mを引き起こすVIEW "JNLWAIT" は、ジャーナルファイル(ディスク上)へ転送されています。通常の振る舞いは、あたかも、それらの最終TCOMMITで暗黙的VIEW "JNLWAIT" を含めたように、Mトランザクション内で更新します。TRANSACTION ID="BATCH" または "BA" をもつトランザクションは、暗黙の"JNLWAIT"から除外されます。通常、Mトランザクションの外で更新のためのプロセス実行は、非同期的にディスクへのジャーナルレコードの転送を続行します。

VIEWコマンドの詳細については、GT.Mプログラマーズガイドの"コマンド"の章を参照してください。

$VIEW() キーワード

GT.Mは、$VIEW関数への引数として、JNLACTIVE, JNLFILE, REGION, JNLTRANSACTIONキーワードを提供します。通常の操作は、ジャーナリングの状態を調べるため $VIEW()は必要ありません。ただし、論理的トランザクションの設計と実装をデバッグする間のような特定の状況の下では、$VIEW() は便利なツールを提供することがあります。

$VIEW("JNLACTIVE", region)は、領域にゼロ(0)を示すジャーナリングは無効で、1(1)を示すジャーナリングはOFFでなく有効で、また、2(2)を示すジャーナリングが有効でかつ領域名がON、を返します。

$VIEW("JNLFILE", region) は、ジャーナルファイルの名前を返します。ジャーナルファイル名が確立されていない場合は、それはnull文字列を返します。そうでなければ、それは完全に移されたファイル名です。

exprがgvnに評価した$VIEW("REGION", expr) は、gvnに名付けられ関連付けられた領域の名前を返します。構成に依存しない方法でジャーナリング状態を取得するために、このパラメータは上記の2つのパラメータ(JNLACTIVE&JNLFILE)を結合して使用されることがあります。

$VIEW("JNLTRANSACTION") は、発行されているZTSTARTsの数とZTCOMMITsの数との間の差を返します。もし進行中の囲まれたトランザクションがない場合は、0(ゼロ)が返されます。これは、TSTARTとTCOMMITを使用するトランザクションのため$TLEVELへ類似の機能を提供します。

$VIEW()の詳細については、GT.Mプログラマーズガイド の"関数"の章を参照してください。

inserted by FC2 system