レコードのオプティミスティック ロックとペシミスティック ロック

Rational® ClearQuest® のオプティミスティック ロックとペシミスティック ロックの実装の概要。
データベース内のデータのロックには、以下の 2 つのモデルがあります。

どちらのデータ ロック モデルでも、ロックは、変更がデータベースにコミットされた後で解除されます。

デフォルトでは、Rational ClearQuest はオプティミスティック ロックを使用します。

Rational ClearQuest バージョン 7.1 では、ペシミスティック ロックのサポートが追加されました。このペシミスティック ロックは、1 つのレコードを複数のユーザーが同時に編集する可能性のある状況の発生を防ぐメカニズムを提供します。 ペシミスティック ロック モデルでは、レコードの変更が順番に実施されるため、同一のレコードを同時に更新しようとするユーザーが確実に排除されます。 ペシミスティック ロックを有効にするには、スキーマ リポジトリと関連ユーザー データベースを、機能レベル 7 で作成するか、このレベルにアップグレードする必要があり、スキーマ開発者がスキーマ内の目的のレコード タイプにフック コードを追加する必要があります。 スキーマの変更について詳しくは、Rational ClearQuest Designer を使用するスキーマ開発に関するヘルプ、および Rational ClearQuest API リファレンスを参照してください。

以下のセクションで、オプティミスティック ロックとペシミスティック ロックの相違点について、さらに詳しく説明します。

オプティミスティック ロック

オプティミスティック ロック モデルは、オプティミスティック並行性制御とも呼ばれ、レコードのロックを使用しないリレーショナル データベースで使用される並行性制御方法です。 オプティミスティック ロックを使用すると、複数のユーザーが同じレコードの更新を試みることができ、ユーザーには、他のユーザーもそのレコードを更新しようとしていることは通知されません。 レコードの変更内容は、レコードがコミットされたときのみ検証されます。あるユーザーがレコードを正常に更新すると、並行更新をコミットしようとしている他のユーザーには、競合が存在することが通知されます。

オプティミスティック ロック モデルの利点は、アクション継続中のレコードのロックのオーバーヘッドを回避することです。 同時更新がなければ、このモデルは迅速に更新を実行できます。

オプティミスティック ロックは、レコードの並行更新の頻度が低いと予想される場合や、ロックのオーバーヘッドが高い場合に有用な方法です。 Rational ClearQuest におけるオプティミスティック ロックの実装では、1 つのレコードを複数のユーザーが同時に編集している場合、1 人のユーザーの変更がコミットされると、他のユーザーの変更は拒否されます。データの競合は、保存して手動でマージする必要があります。

ペシミスティック ロック

ペシミスティック ロック モデルは、レコードの同時更新が起こらないようにします。 1 人のユーザーがレコードの更新を始めるとすぐに、そのレコードがロックされます。 このレコードの更新を試みる他のユーザーには、別のユーザーによる更新が進行中であることが通知されます。 他のユーザーは、最初のユーザーが変更のコミットを完了し、それによってレコードのロックが解除されるまで、待機する必要があります。 ロックが解除されてからでなければ、別のユーザーが、前のユーザーが変更したレコードに対してさらに変更を加えることはできません。

ペシミスティック ロック モデルの利点は、競合を防ぐことによって、競合の解決の問題を回避することです。 更新は順次に行われ、次に続くそれぞれの更新は、前のユーザーによる変更内容がコミットされたレコードから開始されます。

ペシミスティック ロックは、前の更新が完了するまで次の更新を遅らせることができる場合に、有用な方法です。 これは、一般に、更新が短い時間間隔で行われることを暗に示しています。


フィードバック