儲存引擎鎖粒度對比
| 引擎 | 鎖粒度 | 特點 |
| MyISAM | 表鎖 | 鎖定整張表,讀寫互斥,並發極低 |
| MEMORY | 表鎖 | 同 MyISAM |
| BDB | 頁鎖 | 已淘汰 |
| InnoDB | 行鎖 | 支援事務、高並發、MVCC |
表鎖手動控制
-- 唯讀鎖
LOCK TABLES tbl_name READ;
SELECT * FROM tbl_name;
UNLOCK TABLES;
-- 讀寫鎖
LOCK TABLES tbl_name WRITE;
INSERT/UPDATE/DELETE ...
UNLOCK TABLES;
注意:持有表鎖期間開啟事務會隱式釋放鎖,慎用。
事務基礎語法
-- 開啟事務
START TRANSACTION; -- 或 BEGIN
-- 寫入操作
INSERT ...; UPDATE ...; DELETE ...;
-- 提交
COMMIT;
-- 回滾
ROLLBACK;
ACID 四大特性
- Atomicity 原子性:全部成功或全部失敗。
- Consistency 一致性:資料從一個一致狀態轉移到另一個一致狀態。
- Isolation 隔離性:並發事務互不干擾。
- Durability 持久性:提交後永久生效,掉電不丟。
隔離等級與現象
| 隔離等級 | 髒讀 | 不可重複讀 | 幻讀 | InnoDB 預設 |
| READ UNCOMMITTED | Y | Y | Y | |
| READ COMMITTED | N | Y | Y | |
| REPEATABLE READ | N | N | Y | ✓ |
| SERIALIZABLE | N | N | N | |
InnoDB 透過 MVCC (多版本並發控制) 在 REPEATABLE READ 下解決大部分幻讀。
隱式提交場景
DDL (CREATE, DROP, ALTER)、TRUNCATE、LOCK TABLES、啟動新事務會隱式提交當前事務。
死鎖排查
SHOW ENGINE INNODB STATUS\G 查看 LATEST DETECTED DEADLOCK 區塊。
- 確保多事務以**相同順序**存取表/行。
- 縮短事務持有時間,避免長事務。
- 必要時鎖升級:
SELECT ... FOR UPDATE 主動加排他鎖。
- 上一篇文章: MySQL 管理常用命令大全:帳號權限、備份還原、表維護、狀態監控
- 下一篇文章: MySQL 輸入安全防禦:SQL 注入防範、最小權限、審計日誌實戰
Copyright ©
程式碼之家 All Rights Reserved