系統闡述 MySQL 三種鎖粒度(行/表/頁)特點、對應引擎,深入剖析 InnoDB 行鎖實現原理(基於索引)、死鎖產生條件與 3 大避免策略。
| 鎖類型 | 粒度 | 開銷 | 死鎖 | 並發度 | 典型引擎 |
|---|---|---|---|---|---|
| 行級鎖 | 最細 | 大、慢 | 會發生 | 最高 | InnoDB |
| 表級鎖 | 最粗 | 小、快 | 不發生 | 最低 | MyISAM, MEMORY |
| 頁級鎖 | 中間 | 中等 | 會發生 | 一般 | BDB |
UPDATE/DELETE 會鎖定掃描範圍內所有索引記錄 + 相鄰鍵值 (Next-Key Lock)。LOCK TABLES 表級鎖序列化,犧牲並發換穩定。SET AUTOCOMMIT=0; LOCK TABLES t1 WRITE, t2 READ; ... COMMIT; UNLOCK TABLES;捕獲錯誤碼 1213 (ER_LOCK_DEADLOCK) 自動重試事務,死鎖非數據錯誤,重試通常即可成功。