mysql - InnoDB中的鎖
問題描述
問題解答
回答1:------- TRX HAS BEEN WAITING 28 SEC FOR THIS LOCK TO BE GRANTED:RECORD LOCKS space id 6 page no 4 n bits 80 index idx_a of table `test`.`t` trx id 637972 lock_mode X locks gap before rec insert intention waitingRecord lock, heap no 4 PHYSICAL RECORD: n_fields 2; compact format; info bits 32 0: len 4; hex 8000000b; asc ;; 1: len 6; hex 000000000414; asc ;;
這里說的很清楚啊 lock_mode X意味著是排它鎖 gap代表是區(qū)間鎖也就是說在insert之前該表加入了區(qū)間排他鎖,為什么呢?因?yàn)橹皥?zhí)行的這句delete from t where a = 11;會(huì)在(negative infinity,11]這個(gè)區(qū)間加上排他鎖,為什么是排他鎖而不是Record Lock呢,因?yàn)槟氵@里的a并非唯一索引,只是一個(gè)普通的索引,具體的看http://dev.mysql.com/doc/refman/5.7/en/innodb-locking.html
回答2:mysql默認(rèn)的會(huì)話隔離級(jí)別是repeated read,會(huì)產(chǎn)生更多的gap鎖,如果可以接受幻讀,可以考慮降為read commit級(jí)別,減少鎖沖突的概率。
相關(guān)文章:
1. python bottle跑起來以后,定時(shí)執(zhí)行的任務(wù)為什么每次都重復(fù)(多)執(zhí)行一次?2. javascript - ios返回不執(zhí)行js怎么解決?3. javascript - vue2如何獲取v-model變量名4. node.js - vue中 post數(shù)據(jù)遇到問題5. 前端 - 誰來解釋下這兩個(gè) CSS selector 區(qū)別6. javascript - 求幫助 , ATOM不顯示界面!!!!7. html5 - HTML代碼中的文字亂碼是怎么回事?8. javascript - angular使從elastichearch中取出的文本高亮顯示,如圖所示9. mysql - 分庫分表、分區(qū)、讀寫分離 這些都是用在什么場(chǎng)景下 ,會(huì)帶來哪些效率或者其他方面的好處10. python - 爬蟲模擬登錄后,爬取csdn后臺(tái)文章列表遇到的問題
