草庐IT

我打赌!这个 SQL 题,大部分人答不出来

大家好,我是小林。周末的时候,一个读者问了我一个很有意思的问题,是关于MySQL中update加锁的问题。他用下面这张数据库表,做了个MySQL实验的时候。发现事务B的update不会阻塞,而事务C的update会阻塞,都是对id=10这条记录进行update,为什么一个会阻塞,一个不会阻塞?首先,我们先来分析下,事务A这条SQL加了什么锁。//事务Aselect*fromt_personwhereid我直接说结论,事务A 加了这三个行级锁:在id为1的主键索引上,加了X型的next-key锁,范围是(-∞,1]。意味着,其他事务无法对id=1的记录进行删除和更新操作,同时无法插入id小于1的

我打赌!这个 SQL 题,大部分人答不出来

大家好,我是小林。周末的时候,一个读者问了我一个很有意思的问题,是关于MySQL中update加锁的问题。他用下面这张数据库表,做了个MySQL实验的时候。发现事务B的update不会阻塞,而事务C的update会阻塞,都是对id=10这条记录进行update,为什么一个会阻塞,一个不会阻塞?首先,我们先来分析下,事务A这条SQL加了什么锁。//事务Aselect*fromt_personwhereid我直接说结论,事务A 加了这三个行级锁:在id为1的主键索引上,加了X型的next-key锁,范围是(-∞,1]。意味着,其他事务无法对id=1的记录进行删除和更新操作,同时无法插入id小于1的