MySQL在可重复读的事务隔离级别下,使用唯一索引进行等值查询时会加什么锁?使用唯一索引进行范围查询时会加什么锁?使用非唯一索引进行等值查询会加什么锁?
时间: 2024-04-15 13:24:52 浏览: 160
详解Mysql事务隔离级别与锁机制.doc
在MySQL的可重复读(REPEATABLE READ)事务隔离级别下,使用唯一索引进行等值查询时,MySQL会加行级共享锁(Shared Lock)。
在使用唯一索引进行范围查询时,MySQL会加行级间隙锁(Gap Lock),用于保护范围内的行以及范围之间的间隙,防止其他事务插入新的数据或者修改已有的数据。
使用非唯一索引进行等值查询时,MySQL也会加行级共享锁(Shared Lock),与使用唯一索引进行等值查询时的锁类型相同。
需要注意的是,行级共享锁(Shared Lock)允许多个事务同时持有,用于保护读操作的一致性;而行级间隙锁(Gap Lock)用于防止并发事务插入新数据或修改已有数据,并不允许其他事务持有。
这些锁机制可以保证在可重复读事务隔离级别下,对数据的并发访问是安全和一致的。但同时也会带来一定的开销,因此在设计数据库时需要根据实际情况权衡并发性能和数据一致性的需求。
阅读全文