use*_*233 1 mysql locking insert
这是一个非常简单的问题,但我在谷歌上确实找不到任何有用的答案。
我一直在读到 SELECT 上有一个 READ LOCK,而 UPDATE 语句上有一个 WRITE LOCK。但是,我试图找出当我们插入表时是否有任何类型的锁?
假设该表使用 InnoDB 作为引擎。
小智 5
插入时,InnoDB 会创建一个所谓的“间隙锁”。
一种称为插入意向间隙锁的间隙锁是由 INSERT 操作在行插入之前设置的。此锁表明插入的意图是,插入同一索引间隙的多个事务如果没有插入间隙内的同一位置,则无需互相等待。假设存在值为 4 和 7 的索引记录。尝试插入值 5 和 6 的单独事务在获得插入行上的排他锁之前,每个事务都使用插入意向锁锁定 4 和 7 之间的间隙,但不这样做互相阻塞,因为行不冲突
除此之外,任何唯一索引都将被锁定以获取所提供的值,以确保两个不同的事务不会插入相同的值(如果我没有记错的话,这与间隙锁略有不同)。
| 归档时间: |
|
| 查看次数: |
543 次 |
| 最近记录: |