麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數(shù)據(jù)庫 > 文庫 > 正文

兩條insert 語句出現(xiàn)的死鎖

2024-09-07 22:12:37
字體:
供稿:網(wǎng)友
      查看status日志發(fā)現(xiàn)兩條insert 出現(xiàn)了死鎖
      RECORD LOCKS space id 388 page no 27032 n bits 616 index `idx_svcorderserviceitem_workorderid_quantity` of table `ecejservice`.`svc_order_service_item` trx id 596252578 lock_mode X insert intention waiting
      可以確定,這個x鎖不是由于INSERT產(chǎn)生的,因為 INSERT可能產(chǎn)生的鎖包括檢查dup key時的s鎖,隱式鎖轉(zhuǎn)換為顯式鎖(not gap,要在二級索引上產(chǎn)生lock_mode為X的LOCK_ORDINARY類型的鎖(包括記錄及記錄前面的gap),據(jù)我所知一般是根據(jù)二級索引掃描進行記錄更新導致的。
 
      一個簡單但不完全相同的重現(xiàn)步驟:
     DROP TABLE t1;
     CREATE TABLE `t1` (
  `a` int(11) NOT NULL AUTO_INCREMENT,
  `b` int(11) DEFAULT NULL,
  `c` int(11) DEFAULT NULL,
  PRIMARY KEY (`a`),
  KEY `b` (`b`)
) ENGINE=InnoDB ;
insert into t1(a, b,c) values(1,2,3),(5,4,6),(8, 7,9),(12,12,19),(15,15,11);
session1:
 
begin;
delete from t1 where b = 12;
//二級索引上lock_mode X、lock_mode X locks gap before rec以及主鍵上的lock_mode X locks rec but not gap
二級索引:heap_no=5, type_mode=3  (12上的LOCK_ORDINARY類型鎖,包括記錄和記錄前的GAP)
聚集索引:heap_no=5,type_mode=1027
二級索引:heap_no=6,type_mode=547(15上的GAP鎖)
session2:
begin;
delete from t1 where b = 7;
//二級索引上lock_mode X、lock_mode X locks gap before rec以及主鍵上的lock_mode X locks rec but not gap
二級索引:heap_no=4,type_mode=3       (7上的LOCK_ORDINARY類型鎖,包括記錄和記錄前的GAP)
聚集索引:heap_no=4,type_mode=1027
二級索引:heap_no=5,type_mode=547    (記錄12上的GAP鎖)
session1:
insert into t1 values (NULL, 6,10);
//新插入記錄聚集索引無沖突插入成功,二級索引等待插入意向鎖(lock_mode X locks gap before rec insert intention waiting)
二級索引,heap_no=4, type_mode=2819 (請求記錄7上面的插入意向鎖LOCK_X | LOCK_GAP | LOCK_INSERT_INTENTION, 需要等待session2
session2:
insert into t1 values (NULL, 7,10);
二級索引:heap_no=5,  type_mode=2819  (請求記錄12上的插入意向鎖LOCK_X | LOCK_GAP | LOCK_INSERT_INTENTION,需要等待session1)
互相等待,導致發(fā)生死鎖
從打印的死鎖信息來看,基本和線上發(fā)生的死鎖現(xiàn)象是一致的。
  
再舉一個例子
mysql> select * from test01;
+----+-----+
| id | app |
+----+-----+
| 1 | 01 |
| 2 | 02 |
| 5 | 03 |
| 10 | 03 |
| 6 | 04 |
| 7 | 05 |
| 8 | 06 |
| 9 | 06 |
| 11 | 06 |
| 12 | 07 |
| 13 | 08 |
| 14 | 09 |
| 15 | 09 |
+----+-----+
13 rows in set (0.00 sec)
 
session1:
mysql> select now();start TRANSACTION;      
+---------------------+
| now() |
+---------------------+
| 2018-01-25 16:08:46 |
+---------------------+
1 row in set (0.00 sec)
  
session2:
mysql> select * from test01 where app='08' for update;  --第二步 鎖住【12,07】-【13,08】以及【13,08】-【14,09】兩段區(qū)間
+----+-----+
| id | app |
+----+-----+
| 13 | 08 |
+----+-----+
1 row in set (0.00 sec)
 
mysql> insert into test01(app) values ('04');                  ----第四步 等待第一步釋放,,于是死鎖
ERROR 1213 (40001): Deadlock found when trying to get lock; try restarting transaction
 
*** (2) WAITING FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id 64 page no 4 n bits 80 index idx_app of table `devops`.`test01` trx id 5376 lock_mode X locks gap before rec insert intention waiting
Record lock, heap no 6 PHYSICAL RECORD: n_fields 2; compact format; info bits 0
 0: len 2; hex 3035; asc 05;;
 1: len 4; hex 00000007; asc ;;
 
*** WE ROLL BACK TRANSACTION (2)
------------
 
死鎖日志是不是和上面的一樣?

(編輯:武林網(wǎng))

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产欧美日韩视频在线观看 | 成人毛片在线免费观看 | 国产精品久久久久久久久久久久久久久久 | 天堂成人国产精品一区 | 五月天影院,久久综合, | 亚洲精品7777 | 在线a免费观看 | 免费a视频 | 中文字幕极速在线观看 | 国产精品爱久久久久久久 | 激情综合婷婷久久 | 成人勉费视频 | 免费观看一区二区三区 | 久久九九热re6这里有精品 | 久久国产精品久久久久久电车 | 国产毛片网站 | 免费91在线 | 一区二区三视频 | 久久久久国| 免费看成人av| 国产毛片毛片 | 伊人在线视频 | 青青草成人免费视频在线 | 亚洲成人精品一区二区 | 亚洲va久久久噜噜噜久牛牛影视 | 欧美a区| 精品国产一区二区三区在线观看 | av电影网在线观看 | 日韩在线播放一区二区 | 夜夜b | 成人在线第一页 | 毛片免费一区二区三区 | 中文字幕在线观看精品 | 欧美精品免费一区二区三区 | 欧美日韩亚洲精品一区二区三区 | 天天草天天干天天射 | 欧美日韩大片在线观看 | 调教小男生抽打尿孔嗯啊视频 | chengrenzaixian| 黄色免费av | 久在线观看福利视频69 |