🎯 什麼情境該想到我
當你「資料衝突很常發生,想在開始存取前就先取得鎖、避免白做工」的時候。
⚙️ 怎麼用(步驟 / 公式)
意圖:在存取資料前先取得鎖,讓同時間只有一個業務交易能動它,從源頭避免衝突。
做法要點:
- 用一張鎖表(lock table)記錄「哪筆資料被誰鎖住」。
- 開始編輯前先嘗試取鎖,取到才能繼續;取不到就等待或被拒。
- 完成交易或逾時後釋放鎖。
- 常見鎖型:獨占寫鎖、讀寫鎖等,依需求選擇。
🧪 我實際套用的紀錄
- (待填)
⚠️ 注意 / 什麼時候不適用
- 明顯降低並發度,鎖住期間別人動不了。
- 需處理死結、以及使用者忘了釋放鎖(逾時機制)。
- 衝突其實很少時,改用樂觀離線鎖並發更好。
🔗 相關工具
- 樂觀離線鎖 Optimistic Offline Lock(相對方案:提交時才偵測衝突)
- 粗粒度鎖 Coarse-Grained Lock(一次鎖住一整組相關物件)
- 隱含鎖 Implicit Lock(把加鎖動作交給框架自動處理)
- 企業應用架構模式