关于mysql:mysql间隙锁实战记录一次有意思的线上问题

前言

在记录这次线上问题之前,咱们先来回顾一些基础知识。

数据库系统的锁

数据库系统应用锁是为了反对对共享资源进行拜访,提供数据的完整性和一致性。

锁类型

InnoDB存储引擎中实现了如下两种规范的行级锁:

  • 共享锁(S Lock),容许事务读一行数据
  • 排他锁(X Lock),容许事务删除或者更新一条数据

如果一个事务t1曾经取得了行r的共享锁,那么另外的事务t2也能够立刻取得行r的共享锁。因为读取并没有扭转r行的数据,成为这种状况为锁兼容(Lock Compatible)。然而若有其余事务t3想取得行r的排他锁,则必须期待t1,t2开释行r上共享锁,这种状况被称为锁不兼容。

如果想要查问数据的最新版本,能够应用以后读。以后读须要加锁,能够加读锁(select…lock in share mode),也能够加写锁(select…for update)。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理