t表有个索引列是id,
+------+------+
| id | name |
+------+------+
| 1 | a |
| 5 | b |
| 12 | c |
| 16 | d |
| 19 | e |
+------+------+
当会话1
begin;
delete from t where id=12的时候,为啥锁住的区间是[5,16),而不是(5,16]呢?查了半天资料没找到,不太明白。
CREATE TABLE `t` (
`id` int(11) DEFAULT NULL,
`name` varchar(10) DEFAULT NULL,
KEY `idx_id` (`id`)
+------+------+
| id | name |
+------+------+
| 1 | a |
| 5 | b |
| 12 | c |
| 16 | d |
| 19 | e |
+------+------+
当会话1
begin;
delete from t where id=12的时候,为啥锁住的区间是[5,16),而不是(5,16]呢?查了半天资料没找到,不太明白。
CREATE TABLE `t` (
`id` int(11) DEFAULT NULL,
`name` varchar(10) DEFAULT NULL,
KEY `idx_id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
为啥锁住的区间是[5,16),而不是(5,16]呢,区间不是这些吗
:(负无穷,1],(1,5],(5,12],(12,16],(16,19],(19,正无穷)
那么我delete id=12的话应该是(5,12],(12,16]这两个,怎么就和并成了【5,16)呢
:(负无穷,1],(1,5],(5,12],(12,16],(16,19],(19,正无穷)
那么我delete id=12的话应该是(5,12],(12,16]这两个,怎么就和并成了【5,16)呢