MySQL Transaction、Lock 與並行控制完整指南
單一使用者操作資料庫時,事情很簡單。真正複雜的是: 很多人同時修改資料時,MySQL 怎麼確保資料不會亂掉? 例如銀行帳戶有 10,000 元,同一時間發生提款;或者購物網站只剩最後一件商品,卻有兩個使用者同時下單。 這些問題都牽涉到資料庫最核心的幾個概念: Transaction(交易) ACID (Atomicity/Consistency/Isolation/Durability) Isolation Level(隔離層級) MVCC (多版本並行控制) Lock(鎖定) Lock Wait Deadlock(死結) 它們共同構成 MySQL 的 Transaction 與 並行控制(Concurrency Control) 。 Transaction 是什麼? Transaction 可以理解為: 一組必須被視為「同一件事情」的資料庫操作。 最常見的例子就是轉帳。 START TRANSACTION; UPDATE accounts SET balance = balance - 1000 WHERE account_id = 1; UPDATE accounts SET balance = b…