浅谈InnoDB存储引擎中的锁

作者: JavaQ | 来源:发表于2018-01-29 16:50 被阅读45次

InnoDB存储引擎是MySQL数据库默认的事务型存储引擎,也是使用比较多的存储引擎。InnoDB存储引擎不紧支持表级锁,而且在锁力度控制上可以细化到行,即支持行级锁,从而提高并发操作的性能。说到行级锁,不得不说一下InnoDB存储引擎中两种标准的行级锁,共享锁和排他锁。

共享锁与排他锁

共享锁:允许数据库事务读取一行数据。
排他锁:允许数据库事务删除或变更一行数据。

当一个事务获取了某行数据的共享锁之后,其它事务也可以及时获取该行数据的共享锁,不需要等待之前事务释放锁,多个事务可以并行获取共享锁,这时候称为锁兼容。
当一个事务获取了某行数据的共享锁之后,如果有事务想获取该行数据的排他锁,则该事务必须等待之前的事务释放掉共享锁,才能获取排他锁,此时被称为锁不兼容。
当一个事务获取了某行数据的排他锁之后,如果有事务想获取改行数据的共享锁或排他锁,则都必须等待之前的事务释放掉排他锁,才能继续获取锁

下面用一张表来展示共享锁与排他锁之间的兼容性。


查看锁占用情况

当一行数据被锁之后,或者是发生锁等待之后,如何查看锁的占用情况、占用锁的事务情况、锁等待情况?可以通过MySQL自带的三张表来查看,这三张表位于information_schema实例下,分别是INNODB_LOCKS、INNODB_LOCK_WAITS和INNODB_TRX。

相关文章

  • 浅谈InnoDB存储引擎中的锁

    InnoDB存储引擎是MySQL数据库默认的事务型存储引擎,也是使用比较多的存储引擎。InnoDB存储引擎不紧支持...

  • mysql规范

    一、基础规范【强制】使用InnoDB存储引擎解读:InnoDB存储引擎是MySQL默认存储引擎,支持事务和行级锁,...

  • MySQL的锁分类以及使用场景

    myisam存储引擎默认是表级锁innodb存储引擎默认是行级锁DBD存储引擎默认是页面锁表级锁:开销小,加锁快;...

  • 【原创】因酷数据库开发规范

    基本规范 所有表必须使用Innodb存储引擎Innodb存储引擎是Mysql5.6以后默认引擎支持事务,行级锁,更...

  • 深入理解MySQL

    存储引擎 现在常用的存储引擎是InnoDB,以前常用的是MyISAM。 InnoDB 支持事务、支持行级锁、支持外...

  • Mysql存储引擎Innodb小结

    innodb是mysql支持事务的存储引擎,也是当前mysql默认的存储引擎。innodb支持行级别锁,对并发性事...

  • 文章总结(6)—数据库

    InnoDB和MyISAM存储引擎的区别 InnoDB使用的是行锁,MyISAM使用的是表锁; InnoDB支持事...

  • mysql中引擎区别

    MyISAM表中的锁 MyISAM引擎中的读锁和写锁都是表锁级别的。 innoDB引擎 innodb引擎中的表锁是...

  • InnoDB介绍

    InnoDB介绍 InnoDB是事务安全的mysql存储引擎,也是mysql的默认存储引擎,特点是行锁设计、支持M...

  • mysql 存储引擎

    什么是存储引擎 常见的几种存储引擎 InnoDB InnoDB是一个支持事务安全的搜索引擎。支持外键、行锁、事务...

网友评论

    本文标题:浅谈InnoDB存储引擎中的锁

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