Mysql--基础知识点--21.1--一张表自增主键最大id=20,事务1 插入id=21的数据行但还未提交,然后事务2 插入id=22的数据行是否会被被阻塞
1 测试过程[数据准备][客户端1 事务1]开启事务1然后 insert 完成后还未commit[客户端2]查看 加锁情况事务1执行insert 完成后还未commit时会加一个表级意向IX锁此时在开启事务2的话事务2是可以获取到id16的具体可以看AUTO-INC 锁[客户端2 事务2]事务2开启事务并insert 且 commit此时不会被事务1阻塞是可以commit成功的[客户端1 事务1]事务1接着进行commit2 结论INSERT 加 IX 插入意向锁[多个互不阻塞] 排他记录锁 轻量级AUTO-INC[自增主键]主打高并发写入多个插入意向锁互不阻塞插入意向锁在插入数据加记录排他锁成功后会立即释放不会等事务结束后释放。事务1 执行 insert 加 IX 插入意向锁 排他记录锁[id21的记录] 轻量级AUTO-INC事务2 执行 insert 加 IX 插入意向锁 排他记录锁[id22的记录] 轻量级AUTO-INC两个事务并发执行并不互相阻塞可以高并发插入。Mysql–基础知识点–100-- insert VS select…for update 加锁

相关新闻