×
データベース
  • 排他制御がない場合:二人の購入処理が同時に進み、両方に「予約完了」が表示されてしまいます。しかし実際には座席は1つしかないため、ダブルブッキングというデータの矛盾が起こります。
  • 排他制御がある場合:Aさんの処理が始まった瞬間にその座席データに「占有ロック」がかかります。Bさんの処理はロックが解除されるまで待たされるか、エラーとなって購入できず、データの矛盾が防げます。

もう少し詳しく

排他制御は、データベースにおけるトランザクションの独立性(Isolation:アイソレーション)を保証するために不可欠な技術です。トランザクションとは、一連の処理を一つのまとまりとして扱う単位のことであり、データベースの信頼性を支えるACID特性の重要な一要素です。排他制御の実装方法には、大きく分けて「悲観的排他制御(悲観的ロック)」と「楽観的排他制御(楽観的ロック)」の2種類が存在します。