TStart

TSTARTコマンドは、トランザクションまたはサブトランザクションの始まりをマークし、$TLEVELをインクリメントします。TSTARTがトランザクション($TLEVEL=1)の始まりをマークすると、その引数は、トランザクションがRESTARTするかどうか、そして、起動されることがありますかどうか、直列化可能性を強制しているかどうかを、判別します。もしトランザクションがRESTARTする可能性がある場合は、TSTART引数は、どのローカル変数がRESTART時に復元されているのかを判別します。もしSERIALキーワードが指定されている場合は、直列化可能性は、LOCKコマンドまたはGT.Mによって強制されます。

TSTARTコマンドのフォーマットは:

TS[TART][:tvexpr] [([lvn...])|lvn|*|][:keyword|(keyword...)]

トランザクション内でTSTARTは、サブトランザクションを開始します。このようなTSTARTへの引数は、既存のトランザクションがRESTARTするかどうかについて、または、トランザクションのシリアル化可能性が強制されているかどうかについては、効果がありません。 TSTARTのこのタイプは、RESTARTが有効であることを持っているトランザクションで復元されるローカル変数を追加することがあります。

それは、トランザクションのすべてのレベルでTSTART上でRESTARTを可能にする同期化するための、適切なコーディング習慣です。トランザクションが行う場所でRESTARTを許可していないネストになっているTSTARTは、サブトランザクションが正常にRESTARTを処理するようにコーディングされていないことを示す場合もあります。

サブトランザクションは、トランザクションから独立してCOMMITできません、また、それらが独立してRESTARTもできません。サブトランザクションは、コードの編成で、モジュール形式で、インクリメンタルROLLBACKを可能にするための追加で、柔軟性を可能にするために、プログラミングの便宜として主に存在しています。

ジャーナリングの時に、TransactionID=expr を指定している引数を持つ最初のTSTARTでのトランザクションは、( expr はキーワード(大文字と小文字を区別しない)BA[TCH] を評価する式です)、アプリケーションに制御を返すより前に、成功するTCOMMITより後に書き込まれるジャーナルアップデートを待機していません。この機能の目的は、ジャーナリング以外の手段によって再作成または回復できるトランザクションの任意のサブセット上で、ジャーナリングの性能に影響をあたえるアプリケーションの制御を許可することです。

TSTARTコマンドの使用例については、第5章:“Mの一般的な言語特徴 を参照してください。

次のキーワードは、TSTART引数で現れることがあります:

S[ERIAL]

SERIALキーワードは、GT.Mがトランザクションの直列化可能性を確保する必要があることを示します。 GT.Mは常にSERIALキーワードに関係なく、トランザクションを直列化することに注意してください。ネストになったTSTARTでは、引数のこの部分は無関係です。

T[RANSACTIONID]=expr

TRANSACTIONIDキーワードは、任意のトランザクションの識別を宣言します。

もしトランザクションの完了時にTRANSACTIONID="BATCH" または "BA" ならば、プロセスは直ちに実行を継続します。プロセスがトランザクションのために [最後の]TCOMMIT を発行しかつジャーナリングがアクティブである時、次のコマンドを実行する前に、トランザクション全体がジャーナルファイルに書き込まれるまで、デフォルトではプロセスは待機します。これは、プロセスが次のステップに移動する前に、すべてのトランザクションが永続性のあることが保証されます。 "BATCH" としてフラグ付けられたトランザクションは、低レイテンシと高スループットを持ちますが、しかし、耐久性の低い保証は持ちます。運用手順(バックアップなど)やアプリケーションコード(チェックポイントアルゴリズムなど)が、耐久性の確保を許容できる代替手段を提供するとき、通常は、このフラグが使用されます。

inserted by FC2 system