mysql:数据库之删除记录对自动增长的影响( 二 )


MariaDB [locktest]> select * from gaplockt where id = 100 for update;
那么gap4锁的范围是多少呢? 是(10,100]吗?
直接告诉你们答案,不是,它的范围是(10,+∞),下面我们通过实验来验证 。
MariaDB [locktest]> insert into gaplockt values(99,‘jingruyang99‘);
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
MariaDB [locktest]> insert into gaplockt values(100,‘jingruyang100‘);
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
MariaDB [locktest]> insert into gaplockt values(1000,‘jingruyang1000‘);
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
可以看到id=99   id= 100  id=1000  都是上了锁的,所以gap4的区间为(10,+∞)
我们再来讨论gap1
执行以下语句获取gap1
MariaDB [locktest]> select * from gaplockt where id = -100 for update;
gap1的区间我直接告诉大家,(-∞,1)
下面我们通过实验证明 。
MariaDB [locktest]> insert into gaplockt values(-99,‘jingruyang99‘);
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
MariaDB [locktest]> insert into gaplockt values(-100,‘jingruyang99‘);
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
MariaDB [locktest]> insert into gaplockt values(-10000,‘jingruyang99‘);
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
看到上面的结果,就不用我多说什么了吧 。
以下是两个比较有参考价值的链接,有兴趣的朋友可以看一下 。
Mysql中的GAP锁(间隙锁)
MySQL的innoDB锁机制以及死锁处理
 
mysql间隙锁
标签:ror   全表扫描   tran   not   范围   csdn   tab   creat   image   
【mysql:数据库之删除记录对自动增长的影响】