with read lock; //加锁
Query OK, 0 rows affected (0.05 sec)
mysql> unlock tables; //释放锁
Query OK, 0 rows...,导致事务无法保证前后一致性问题,mysql增加了 (meta data lock,MDL) 锁....这个我也不会,没法演示
间隙锁Gap Lock
间隙锁将锁定一个范围,但不包括记录本身.作用是为了防止同一事务下2次读出现幻读的情况,该锁只会在隔离级别为RR(可重复读,序列化) 时存在....的数据 这里变成了3条
在这3个事务中,由于事务级别为重复读,理应Q3,Q5数据都一样,在Q1中,应该会查出b=6的数据并锁住,但是Q2的中,id为1的数据2,并不涉及锁,同时Q3是新增一条数据,无法锁住...行锁只能根据索引锁住存在的数据,如果数据不存在时,将无法锁住,就会导致出现在可重复读时却出现幻读的情况,所以mysql引入了间隙锁
间隙锁如何解决幻读
在插入数据时,mysql额外增加了间隙锁的概念,