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 Online DDL導致全域性鎖表案例分析MySql
- 【問答分享第一彈】MySQL鎖總結:MySQL行鎖、表鎖、排他鎖、共享鎖的特點MySql
- MySQL面試題,如何書寫 update 避免表鎖?MySql面試題
- MySQL鎖(二)表鎖:為什麼給小表加欄位會導致整個庫掛掉?MySql
- MySQL insert on duplicate key update 死鎖MySql
- sock鎖檔案導致的MySQL啟動失敗MySql
- MySQL時區導致無法產生表MySql
- MySQL 在高併發下的 訂單撮合 系統使用 共享鎖 與 排他鎖 保證資料一致性MySql
- laravel 排他鎖 lockForUpdate() 使用問題Laravel
- 資料庫中的共享鎖與排他鎖資料庫
- MySQL -- 表鎖MySql
- MySQL表鎖MySql
- mysql同一個事務中update,insert導致死鎖問題分析解決MySql
- MySQL 優化六(InnoDB 下 update 資料出現表鎖之優化)MySql優化
- Oracle死鎖一例(ORA-00060),鎖表導致的業務死鎖問題Oracle
- mysql insert導致死鎖MySql
- 使用 python 實現簡單的共享鎖和排他鎖Python
- Thinkphp 3.2.3 parseWhere設計缺陷導致update/delete注入 分析PHPdelete
- MySQL 全域性鎖和表鎖MySql
- 記一次 MySQL select for update 死鎖問題MySql
- MySQL全域性鎖、表鎖以及行鎖MySql
- MySQL空間暴漲150G導致鎖定,發生了什麼MySql
- @Transactional 中使用執行緒鎖導致了鎖失效執行緒
- 【MySQL】Merge Index導致死鎖MySqlIndex
- MySQL 全域性表和表鎖MySql
- mysql鎖表查詢MySql
- For Update 加鎖分析
- 故障分析 | MySQL 5.7 使用臨時表導致資料庫 CrashMySql資料庫
- MySQL索引失效行鎖變表鎖MySql索引
- Mysql鎖之行級鎖和表級意向鎖MySql
- MySQL死鎖案例一(回滾導致死鎖)MySql
- MySQL死鎖案例二(自增列導致死鎖)MySql
- QZ面試被問select......for update會鎖表還是鎖行lor面試
- Mysql中的鎖機制——MyISAM表鎖MySql
- 分散式鎖導致的超賣問題分散式
- MySQL:Analyze table導致'waiting for table flush'MySqlAI
- 你真的會用mysql行級鎖嗎?mysql 行級鎖全解析MySql