共有ロックと専有ロック - Shared Lock & Exclusive Lock
はじめに

先週に引き続き、DB関連ネタです。
同時実行制御について噛み砕きます。
前提
ロックとは、あるデータを他の人が触れないように一時的に“鍵をかける”仕組みです。
同時に複数の人が同じデータを編集して、内容が壊れないようにすることが目的です。
2つのロック
早速日常に例えて考えてみます。
こちらの記事は図書館の作業スペースにて書いているので、図書館で例えてみます。
図書館の本を「データ」とします📕
| 状況 | ロックの種類 | 他の人の行動 |
|---|---|---|
| 読むだけ(閲覧中) | 🟦 共有ロック(Shared Lock) | 他の人も「読むだけ」ならOK。でも「書き換え」はダメ。 |
| 書き込み中(メモを追記中) | 🟥 専有ロック(Exclusive Lock) | 他の人は読むことも書くことも禁止。 |
整理すると、共有ロックは他の読み取りを許可するが書き込みを禁止します。他方、専有ロックは他の読み取りも書き込みも禁止します。
実際には、SELECTで共有ロックし他の人も読めるようにするが、書き込みは防ぐようにしています。
UPDATE / DELETE / INSERT(書き込み)では専有ロックし同時書き込みでデータが壊れるのを防いています。
まとめ
一言にまとめると。。。
🔐 共有ロック:みんなで「読むだけ」ならOK
🔒 専有ロック:書く人だけが「独占」する
となります。
日本語訳がいまいちなのかもしれませんねw
Exclusiveを排他と英訳すれば分かりやすいかもしれません。

