• 1.6 间隙锁(next-key locking)


    间隙锁(next-key locking)是 MySQL 的 InnoDB 存储引擎的一种锁实现。 InnoDB采用MVCC来支持高并发,并且实现了四个标准的隔离级别。其默认级别是REPEATABLE READ(可重复读),并且通过间隙锁(next-key locking)策略防止幻影读的出现。间隙锁使得InnoDB不仅仅锁定查询涉及的行,还会对索引中的间隙进行锁定,以防止幻影行的插入。

    Record Locks:

    单条索引记录上加锁,record lock锁住的永远是索引,而非记录本身,即使该表上没有任何索引,那么innodb会在后台创建一个隐藏的聚集主键索引,那么锁住的就是这个隐藏的聚集主键索引。所以说当一条sql没有走任何索引时,那么将会在每一条聚集索引后面加X锁,这个类似于表锁,但原理上和表锁应该是完全不同的。

    Gap Locks:

    锁定索引之间的间隙,但是不包含索引本身。例如当一个事务执行以下语句,其它事务就不能在 t.c 中插入 15。

    SELECT c FROM t WHERE c BETWEEN 10 and 20 FOR UPDATE;

    Next-Key Locks:

    它是 Record Locks 和 Gap Locks 的结合,不仅锁定一个记录上的索引,也锁定索引之间的间隙。例如一个索引包含以下值:10, 11, 13, and 20,那么就需要锁定以下区间:

    (negative infinity, 10]
    (10, 11]
    (11, 13]
    (13, 20]
    (20, positive infinity)
  • 相关阅读:
    Java中swing常用控件背景设置透明的方法
    SpringMVC工作原理
    关于spring框架工作原理
    Java-JFrame窗体美化方式
    Java swing GUI窗口美化
    Java-Swing是什么?
    SSM+Redis+Layui前端框架实现验证码的发送
    SSM+Redis+Layui实现注册功能
    SSM+Layui实现模拟登录功能
    SSM+layui分页(了解98%)
  • 原文地址:https://www.cnblogs.com/xlzfdddd/p/10111764.html
Copyright © 2020-2023  润新知