mysql中的行锁
在分析死锁之前,我们先来回忆一下MySQL中的行锁。MySQL有如下三种类型的行锁,本节只简单介绍一下,想深入了解看我的其他文章
Record Lock:对单个记录加锁
Gap Lock:锁住记录前面的间隙,不允许插入记录
Next-key Lock:同时锁住数据和数据前面的间隙,即数据和数据前面的间隙都不允许插入记录
Insertion Intention Gap Lock(插入意向锁)
简单的insert会在insert的行对应的索引记录上加一个排它锁,这是一个record lock,并没有gap,所以并不会阻塞其他session在gap间隙里插入记录。
不过在insert操作之前,还会加一种锁,官方文档称它为insertion in