
mysql> create table tt(
-> id int primary key,
-> age int,
-> key idx_age(age)
-> );
mysql> select * from tt;
+----+------+
| id | age |
+----+------+
| 1 | 1 |
| 2 | 3 |
| 3 | 4 |
| 4 | 4 |
| 5 | 7 |
| 6 | 7 |
| 7 | 10 |
| 8 | 11 |
+----+------+
mysql> begin;
Query OK, 0 rows affected (0.00 sec)
mysql> delete from tt where age=7;
Query OK, 2 rows affected (0.00 sec)
为什么加锁的范围是【4,10) 呢?
mysql> select * from performance_schema.data_locks;
+--------+-----------------------------------------+-----------------------+-----------+----------+---------------+-------------+----------------+-------------------+------------+-----------------------+-----------+---------------+-------------+-----------+
| ENGINE | ENGINE_LOCK_ID | ENGINE_TRANSACTION_ID | THREAD_ID | EVENT_ID | OBJECT_SCHEMA | OBJECT_NAME | PARTITION_NAME | SUBPARTITION_NAME | INDEX_NAME | OBJECT_INSTANCE_BEGIN | LOCK_TYPE | LOCK_MODE | LOCK_STATUS | LOCK_DATA |
+--------+-----------------------------------------+-----------------------+-----------+----------+---------------+-------------+----------------+-------------------+------------+-----------------------+-----------+---------------+-------------+-----------+
| INNODB | 140270552234600:1162:140270477832904 | 15589 | 51 | 643 | dba | tt | NULL | NULL | NULL | 140270477832904 | TABLE | IX | GRANTED | NULL |
| INNODB | 140270552234600:105:5:6:140270477829864 | 15589 | 51 | 643 | dba | tt | NULL | NULL | idx_age | 140270477829864 | RECORD | X | GRANTED | 7, 5 |
| INNODB | 140270552234600:105:5:7:140270477829864 | 15589 | 51 | 643 | dba | tt | NULL | NULL | idx_age | 140270477829864 | RECORD | X | GRANTED | 7, 6 |
| INNODB | 140270552234600:105:4:6:140270477830208 | 15589 | 51 | 643 | dba | tt | NULL | NULL | PRIMARY | 140270477830208 | RECORD | X,REC_NOT_GAP | GRANTED | 5 |
| INNODB | 140270552234600:105:4:7:140270477830208 | 15589 | 51 | 643 | dba | tt | NULL | NULL | PRIMARY | 140270477830208 | RECORD | X,REC_NOT_GAP | GRANTED | 6 |
| INNODB | 140270552234600:105:5:8:140270477830552 | 15589 | 51 | 643 | dba | tt | NULL | NULL | idx_age | 140270477830552 | RECORD | X,GAP | GRANTED | 10, 7 |
+--------+-----------------------------------------+-----------------------+-----------+----------+---------------+-------------+----------------+-------------------+------------+-----------------------+-----------+---------------+-------------+-----------+
这里没有4的锁,但是我插入4却插入不了,