0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

楽観排他制御と悲観排他制御とは

Posted at

楽観排他制御と悲観排他制御とは

基本概念の定義

  • 楽観排他制御
    楽観排他制御はデータ競合の発生頻度が低いと仮定し、最初にデータのロックを取らずに操作を行い、競合が発生した場合にのみ対応する手法です
  • 悲観排他制御
    悲観排他制御はデータ競合の発生頻度が高いと仮定し、最初にデータのロックを取得してから操作を行う方法です。これにより、データの一貫性を保証します

両者の違いと特徴

楽観排他制御

  • 特徴:高速な読み取りが可能で、書き込み時にのみ競合検出を行います
  • メリット:データやリソースの使用が高効率的であり、競合が少ない場合にパフォマンスは良いです
  • デメリット:競合が多発する環境では、再試行が頻繁に発生し、パフォマンスが低下します

悲観排他制御

  • 特徴:データの一貫性を重視し、操作する前にデータのロックを取得します
  • メリット:競合が多い環境でも、データの整合性が保たれます
  • デメリット:ロックによるリソースの占有が発生し、待機時間が長くなることがあります

日常生活における楽観排他制御と悲観排他制御の例

生活の中での具体的な例

  • 楽観排他制御の例
    • オンラインショップのカート:ECサイトでは、複数のユーザーが同じ商品をカートに追加しても、システムはすぐに在庫をロックしません。ユーザーが最終的に注文を確定するときに、システムは在庫が十分かどうかを確認します。在庫が不足している場合は、ユーザーに再選択または注文のキャンセルを促します。これは典型的な楽観排他制御
  • 悲観排他制御の例
    • 銀行の貸金庫:貸金庫を使う前に、必ずロック権限を取らなくてはいけない。使用中は他の人はアクセスできないようにします。これは典型的な悲観排他制御

楽観排他制御の技術的な詳細

楽観排他制御の基本原理

楽観排他制御は、トランザクションの開始時にデータのロックを取得せずに処理を行い、最終的にコミット時に競合が発生していないを確認します

バージョン管理と競合検出

各データ項目にバージョン番号を持たせ、トランザクションが開始ときにバージョン番号を記録します。コミット時に変更していない場合にのみコミットを成功させます。バージョンが変更されている場合、再試行が必要です

具体的な実装例

  • データベース:SQLデータベースにおける MVCC(Multi-Version Concurrency Control)は、楽観排他制御の一例です。各トランザクションが開始時にスナップショットを取得し、競合検出を行います

悲観排他制御の技術的な詳細

悲観排他制御の基本原理

悲観排他制御は、トランザクションの開始時にデータのロックを取得し、操作が完了するまでロックを保持します。これにより、他のトランザクションが同じデータにアクセスできないようにします。

ロック機構とその管理

  • 排他ロック(Exclusive Lock):データに対する完全なロックであり、他のトランザクションからの読み取りも禁止します
  • 共有ロック(Shared Lock):データの読み取りを許可し、他のトランザクションが同時に読み取りを行うことができますが、書き込みは禁止します

具体的な実装例

  • データベース:多くのSQLデータベースシステムが悲観排他制御を採用しており、トランザクションの開始時にロックを取得します

楽観排他制御と悲観排他制御の比較

利点と欠点

  • 楽観排他制御:

    • 利点:高いスループットを提供し、ロックのオーバーヘッドが少ない
    • 欠点:競合が多発する場合、再試行が多くなり、パフォーマンスが低下する
  • 悲観排他制御:

    • 利点:データの整合性を確保し、競合が発生する環境で有効
    • 欠点:ロックのオーバーヘッドが高く、リソースの競合が発生しやすい

適用シナリオと選択基準

  • 楽観排他制御:競合が少ない環境、読み取りが多く書き込みが少ないシナリオに適しています
  • 悲観排他制御:競合が多い環境、データの整合性が重要なシナリオに適しています。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?