【はいたせいぎょ】
排他制御 とは?
💡 同時アクセスによるデータの「ぐちゃぐちゃ」を防ぐ同期制御の仕組み
📌 このページのポイント
排他制御って何のためにあるの?
例えばチケット残り1枚に対して2人が同時に購入を試みた場合、排他制御なしだと両方が「残り1枚あり」を確認して両方が購入完了してしまう(二重販売)。排他制御でそのデータを「1人が使っている間は他をロック」することで防げる。
デッドロックって何?
楽観的ロックってどういうもの?
「競合はめったに起きない」と楽観的に考えて、読み込み時はロックせず更新時だけ「読み込んだ後に他が変更していないか」チェックする方式。バージョン番号カラムを使い「自分が読んだときのバージョンと今が同じか」確認して競合を検知する。
アプリケーションレベルでの排他制御ってどうやるの?
まとめ:ざっくりこれだけ覚えればOK!
排他制御って出てきたら「複数の同時アクセスでデータが壊れないよう制御する仕組み、ロックで同時更新を防ぐ」と思えばOK!
📖 おまけ:英語の意味
「Exclusive Control(Locking)」 = 排他的制御・独占的な制御
💬 「exclusive(排他的・独占的)」なアクセスを制御する。1つのプロセスがデータを使っている間は他を「排除(exclude)」するイメージ