トランザクション処理

トランザクション処理を行うと、データ ファイルを更新する一連の処理を、トランザクションと呼ばれる作業の 1 論理単位にグループ化することができます。

トランザクションの一部として変更する場合は、次のように処理されます。

トランザクションでは、複数の Fileshare サーバーで、複数のデータ ファイルを、複数回更新できます。

次の操作後に、SELECT 文と WITH ROLLBACK 句を定義したファイルで最初に更新操作 (WRITE、REWRITE、DELETE) を実行すると、トランザクションが開始します。

また、トランザクションは、次の場合に終了します。

Notes:

  • COMMIT 文と ROLLBACK 文を指定すると、各データ ファイルでプログラムがもつすべてのレコードロックを解放できます。これは、ファイルで WITH ROLLBACK 句を指定したかどうかに関係なく発生します。
  • COMMIT 文や ROLLBACK 文を処理するために要する時間は、そのトランザクションで実行する更新の回数に正比例します。
  • アクティブなトランザクションで使用中のファイルを CLOSE しようとすると、9/100 エラー状態が返され、ファイルは開いたままになります。CLOSE を実行する前には、COMMIT 文または ROLLBACK 文を実行しておく必要があります。
  • WITH ROLLBACK 句を使用すると、ファイルで複数のレコードロックが暗黙的に定義されます。

データの一貫性を最高レベルで確保するために、トランザクション処理の前に、次の操作を行うようにしてください。

レコードロックは、トランザクションで更新するすべてのレコードについて暗黙的に使用します。例えば、プログラムが入力を要求しても、ユーザーが応答しない場合のように、トランザクションが一時的に中断された場合に、レコード ロックがファイルに長時間残ることがあります。このとき、別の Fileshare クライアントがロックされたレコードにアクセスしようとしており、なおかつ指定した時間が経過すると、Fileshare サーバーはトランザクションを中止 (ロールバックし) します。このような場合を、トランザクションが Fileshare サーバーによりタイムアウトされたといいます。詳細は、自動レコード ロックのタイムアウトを参照してください。

注:

トランザクションで実行する更新回数を最小限に抑えると、取得するレコード ロックの数もまた最小に抑えられます。レコード ロックの数を減らすと、データを共有する Fileshare クライアントの間のレコード ロックの競合回数が減り、トランザクション後の COMMIT 文や ROLLBACK 文の実行速度が向上します。