MySQL For Update導致全表排他鎖
MySQL實驗環境:
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
user=root
skip-grant-tables
autocommit=0
innodb_log_file_size=50331648
其中test表欄位a是主鍵,欄位b上建立普通索引。事務隔離級別為可重複讀。
開啟一個終端,輸入如下語句
開啟另一個終端,輸入如下語句,發現被阻塞
如果開啟鎖監控功能,可以看到如下狀態:
鎖定了13行記錄,包括6行主鍵索引、6行二級索引和一個間隙鎖。
按照MySQL可重複讀使用間隙鎖的演算法,本來不應該導致一個全表的排它鎖定。
但是這種現象,不能用間隙鎖解釋。具體原因未知。
開啟鎖監控的方法:
建立一個表
create table innodb_lock_monitor(a int) engine=innodb;
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
user=root
skip-grant-tables
autocommit=0
innodb_log_file_size=50331648
其中test表欄位a是主鍵,欄位b上建立普通索引。事務隔離級別為可重複讀。
開啟一個終端,輸入如下語句
開啟另一個終端,輸入如下語句,發現被阻塞
如果開啟鎖監控功能,可以看到如下狀態:
鎖定了13行記錄,包括6行主鍵索引、6行二級索引和一個間隙鎖。
按照MySQL可重複讀使用間隙鎖的演算法,本來不應該導致一個全表的排它鎖定。
但是這種現象,不能用間隙鎖解釋。具體原因未知。
開啟鎖監控的方法:
建立一個表
create table innodb_lock_monitor(a int) engine=innodb;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29254281/viewspace-1081634/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL 共享鎖 (lock in share mode),排他鎖 (for update)MySql
- mysql for update是鎖表還是鎖行MySql
- 【問答分享第一彈】MySQL鎖總結:MySQL行鎖、表鎖、排他鎖、共享鎖的特點MySql
- MySQL Online DDL導致全域性鎖表案例分析MySql
- MySQL面試題,如何書寫 update 避免表鎖?MySql面試題
- MySQL鎖(二)表鎖:為什麼給小表加欄位會導致整個庫掛掉?MySql
- 隱形轉換導致全表掃描案例
- laravel 排他鎖 lockForUpdate() 使用問題Laravel
- sock鎖檔案導致的MySQL啟動失敗MySql
- 資料庫中的共享鎖與排他鎖資料庫
- MySQL時區導致無法產生表MySql
- MySQL 在高併發下的 訂單撮合 系統使用 共享鎖 與 排他鎖 保證資料一致性MySql
- MySQL insert on duplicate key update 死鎖MySql
- MysqL_select for update鎖詳解MySql
- Oracle死鎖一例(ORA-00060),鎖表導致的業務死鎖問題Oracle
- MySQL表鎖MySql
- MySQL -- 表鎖MySql
- drop物化檢視log表導致insert、delete、update報ORA-00942delete
- Latch導致MySQL CrashMySql
- Oracle JDBC驅動使用setDate()、setTimestamp()導致全表掃描OracleJDBC
- MySQL 優化六(InnoDB 下 update 資料出現表鎖之優化)MySql優化
- oracle bug 6825287導致DX鎖等待Oracle
- 使用 python 實現簡單的共享鎖和排他鎖Python
- mysql同一個事務中update,insert導致死鎖問題分析解決MySql
- 【Mysql】兩條select for update引起的死鎖MySql
- MySQL 全域性鎖和表鎖MySql
- @Transactional 中使用執行緒鎖導致了鎖失效執行緒
- Thinkphp 3.2.3 parseWhere設計缺陷導致update/delete注入 分析PHPdelete
- MySQL全域性鎖、表鎖以及行鎖MySql
- mysql insert導致死鎖MySql
- MySQL 全域性表和表鎖MySql
- mysql鎖表查詢MySql
- 故障分析 | MySQL 5.7 使用臨時表導致資料庫 CrashMySql資料庫
- MySQL索引失效行鎖變表鎖MySql索引
- Mysql鎖之行級鎖和表級意向鎖MySql
- For Update 加鎖分析
- MySQL死鎖案例一(回滾導致死鎖)MySql
- MySQL死鎖案例二(自增列導致死鎖)MySql