Antoine.st Lock Model

Lock Pattern

Requirement

  • 行レベルの排他ロック
  • 誰がロックをかけているかの表示機能
  • 自動的なロックの解除機能
  • ロック保持タイムアウトの設定

Row Level Locking

一応、SQL Server でもそれなりの行レベルロックは可能ですが、より柔軟な行レベルロック機構を用意するのが目的です。そのために、ロック管理テーブルを使う方法、単一テーブルで行う方法のふたつを用意します。

Who locked this row ?

明示的にロックをかけた人 (Workstation) を示す情報を、ロック管理テーブル、または単一テーブルに設定します。これにより、誰がロックをかけたのか判断できるようにします。

Automatic Lock Release

このようなロック管理テーブルを利用する形で一番面倒なのは、異常終了時などにロックが保持されたままになってしまうことです。このため、自動的に不要なロックは解除される機能を盛り込みます。

Timeout for Locking

不要なロックかどうかを判定するために、ロック可能時間 = ロックタイムアウト時間を設定できるようにします。時間が過ぎたロックに関しては、自動的に解除されます (この際に、クライアントマシンに変更が通知されます)。

Implements

さて、どう実装しましょうか、と。




  • 2003-09 に戻る