Mysql-InnoDB锁的相关内容介绍


本文摘自PHP中文网,作者不言,侵删。

本篇文章给大家带来的内容是关于Mysql-InnoDB锁的相关内容介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

锁类型

行级锁

锁模式只有LOCK_S 和LOCK_X,其他的 FLAG 用于锁的描述,如前述 LOCK_GAP、LOCK_REC_NOT_GAP 以及 LOCK_ORDINARY、LOCK_INSERT_INTENTION 四种描述。(相关推荐:MySQL教程)

LOCK_REC_NOT_GAP

LOCK_GAP

LOCK_ORDINARY(Next-Key Lock)

LOCK_INSERT_INTENTION

1

2

3

4

5

6

7

8

static const byte lock_compatibility_matrix[5][5] = {

/** IS IX S X AI /

/ IS / { TRUE, TRUE, TRUE, FALSE, TRUE},

/ IX / { TRUE, TRUE, FALSE, FALSE, TRUE},

/ S / { TRUE, FALSE, TRUE, FALSE, FALSE},

/ X / { FALSE, FALSE, FALSE, FALSE, FALSE},

/ AI / { TRUE, TRUE, FALSE, FALSE, FALSE}

};

对于GAP类型(锁对象建立在supremum上或者申请的锁类型为LOCK_GAP)且申请的不是插入意向锁时,无需等待任何锁,这是因为不同Session对于相同GAP可能申请不同类型的锁,而GAP锁本身设计为不互相冲突;
LOCK_ORDINARY 或者LOCK_REC_NOT_GAP类型的锁对象,无需等待LOCK_GAP类型的锁;
LOCK_GAP类型的锁无需等待LOCK_REC_NOT_GAP类型的锁对象;
任何锁请求都无需等待插入意向锁。

表级锁

InnoDB的表级别锁包含五种锁模式:LOCK_IS、LOCK_IX、LOCK_X、LOCK_S以及LOCK_AUTO_INC锁,锁之间的相容性遵循数组lock_compatibility_matrix中的定义。

InnoDB表级锁的目的是为了防止DDL和DML的并发问题。但从5.5版本开始引入MDL锁后,InnoDB层的表级锁的意义就没那么大了,MDL锁本身已经覆盖了其大部分功能。

意向锁是表级别的,IS和IX锁之间相互并不冲突,但与表级S/X锁冲突。
在对记录加S锁或者X锁时,必须保证其在相同的表上有对应的意向锁或者锁强度更高的表级锁。

以上就是Mysql-InnoDB锁的相关内容介绍的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

mysql如何查询30天内的数据

mysql修改root密码的一些方法

mysql中jdbc如何实现自动重连机制的实例

mysql通过查询结果集更新数据的方法介绍

mysql常用存储引擎的分析

mysql如何查询表字所有字段?

mysql如何查看数据表是否锁定

lamp 如何修改mysql密码

查询表名中的数据详解

介绍 mysql 中的四种引擎

更多相关阅读请进入《数据库》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...