美文网首页
MySQL的意向锁

MySQL的意向锁

作者: 小码弟 | 来源:发表于2018-10-27 18:25 被阅读0次

什么是意向锁

在多层级锁中的事务中,如果事务在某节点持有读写锁,则事务在其父节点持有意向锁。
这样通过判断目标节点的上层节点是否持有意向锁来进一步决定能不能对下级节点加锁。比如要对表中任一节点加写锁,那么就要先获得整张表的意向锁,如果能获得,进一步对行加锁;如果获得失败,说明其他事物正在对这张表进行写,不可以写。通俗的理解就是,你想读写人家的儿子,得知会他老爸一声。

分类

我们知道锁有共享锁(S)和互斥锁(X)之分,那么自然就派生出意向共享锁(IS)与意向互斥锁(IX)。

  • IS:若要对一个节点加S锁,先要对其父节点加IS锁,表明它的子节点有意向加S锁。
  • IX: 若要对一个节点加X锁,先要对父节点加IX锁,表明它的子节点有意向加X锁。
  • SIX: 共享意向排他锁, 对数据库对象加SIX锁表明,对它加S锁,再加IX锁。比如,对一张表加SIX锁,表示事务要读整张表(所以加S锁),并且更新表的某一行(所以加IX锁)。

有什么好处

避免不必要的检查目标节点的锁状态,比如发现某张表没能获得意向锁,说明有人在用,事务会等待意向锁的释放,而不是固执地一行一行去检查行有没有被上锁, 避免加锁解锁开销。

相关文章

  • MySQL的意向锁

    什么是意向锁 在多层级锁中的事务中,如果事务在某节点持有读写锁,则事务在其父节点持有意向锁。这样通过判断目标节点的...

  • mysql的意向锁

    首先要明白意向锁存在的意义:考虑这个例子:事务A锁住了表中的一行,让这一行只能读,不能写。之后,事务B申请整个表的...

  • 意向锁

    我们先介绍下意向锁的作用,mysql官网有这么一段介绍 The main purpose of IX and IS...

  • MySQL白菜教程(Level 10 - 意向锁&记录锁&间隙锁

    意向锁(Intention Locks; table-level lock)意向锁是一种特殊的表级锁,意向锁是为了...

  • 意向锁的意义

    意向锁 在支持多层锁定的数据库中,若事务在某子节点持有读/写锁,则事务在其父节点持有意向锁。 意向锁的含义 意向锁...

  • DB

    DRUID连接池的实用 配置详解几个主流的Java连接池整理 MYSQL InnoDB并发插入,居然使用意向锁?I...

  • mysql插入意向锁测试

    1、表结构 CREATE TABLE `reno` ( `id` int(11) NOT NULL AUTO_...

  • MySql InnoDB 锁(lock)

    文章是通过《Mysql技术内幕 InnoDB存储引擎》这本书概括的,主要是锁的这一章,包括共享锁、排它锁、意向锁、...

  • MySQL中的锁4-插入意向锁和自增锁

    插入意向锁(Insert Intention Lock) 插入意向锁本质上可以看成是一个Gap Lock 普通的G...

  • innodb的意向锁有什么用?

    意向锁是什么 意向锁是一种数据库在加读锁或者写锁时,自动给表加上的一种标记,它属于表级锁. 意向锁就是协调行锁和表...

网友评论

      本文标题:MySQL的意向锁

      本文链接:https://www.haomeiwen.com/subject/olwdtqtx.html