| 指令 | 鎖定模式 | 允許操作 | 阻擋操作 |
|---|---|---|---|
LOCK TABLE tbl_name READ | 共享鎖(讀鎖) | SELECT | INSERT/UPDATE/DELETE |
LOCK TABLE tbl_name WRITE | 獨占鎖(寫鎖) | 無 | SELECT/INSERT/UPDATE/DELETE |
-- 1. 加鎖(以 READ 為例)
LOCK TABLE tbl_name READ;
-- 2. 刷新表快取確保一致性
FLUSH TABLES;
-- 3. 執行檢查、修復、備份等維護操作
-- myisamchk --recover tbl_name
-- 或 mysqldump ...
-- 4. 解鎖
UNLOCK TABLES;
FLUSH TABLES 強制將記憶體緩衝寫入磁碟,確保鎖定生效時資料一致UNLOCKmysqldump / 複製檔案 → 解鎖myisamchk → 解鎖ALTER TABLE 期間防止寫入衝突長時間持有 WRITE 鎖會嚴重阻塞寫入,甚至導致應用超時。維護操作建議在低峰期執行,並監控 SHOW PROCESSLIST 確認無大量等待鎖的查詢。