辅助索引加锁经典案例

 CREATE TABLE `t` (
  `id` int(11) NOT NULL,
  `c` int(11) DEFAULT NULL,
  `d` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `c` (`c`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

nsert into t values(0,0,0),(5,5,5),(10,10,10),(15,15,15),(20,20,20),(25,25,25);

mysql> select * from t;
+----+------+------+
| id | c    | d    |
+----+------+------+
|  0 |    0 |    0 |
|  5 |    5 |    5 |
| 10 |   10 |   10 |
| 15 |   15 |   15 |
| 20 |   20 |   20 |
| 25 |   25 |   25 |
+----+------+------+
6 rows in set (0.00 sec)

 

CREATE TABLE `t` (
`id` int(11) NOT NULL,
`c` int(11) DEFAULT NULL,
`d` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `c` (`c`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

insert into t values(0,0,0),(5,5,5),(10,10,10),(15,15,15),(20,20,20),(25,25,25);

RR隔离级别    
session 1 session2  session 3
begin; delete from t where c=5;    
  begin; delete from t where c=5; (block)  
    begin; insert into t values(7,7,7); (block)
rollback; rollback; rollback;
     
session 1 session2   
begin; delete from t where c=5;    
  begin; delete from t where c=5; (block)  
insert into t values(7,7,7);(可以插入)    
 insert into t values(2,2,2); deadlock  

posted on 2021-11-17 16:07  星期六男爵  阅读(31)  评论(0编辑  收藏  举报

导航