mysql之innodb的锁分类介绍

 更新时间:2012年11月20日 15:51:11   作者:  
本文将介绍mysql之innodb的锁分类,需要了解更多的朋友可以参考下
一、innodb行锁分类

record lock:记录锁,也就是仅仅锁着单独的一行
gap lock:区间锁,仅仅锁住一个区间(注意这里的区间都是开区间,也就是不包括边界值。
next-key lock:record lock+gap lock,所以next-key lock也就半开半闭区间,且是下界开,上界闭。 www.jb51.net
next-key 锁定范围:(负无穷大,最小第一记录],(记录之间],(最大记录,正无穷大)

二、语句锁定情况分析

SELECT ... FROM ... FOR UPDATE对读遇到的所有索引记录设置独占的next-key锁定。
INSERT INTO ... VALUES (...)对被插入的行设置独占锁定。注意,这不是一个next-key锁定,并且不阻止其它用户在已插入行之前的间隙插入。如果发生重复键错误,对重复的索引记录设置共享锁定。
· 在一个表上初始化之前指定的AUTO_INCREMENT列之时,InnoDB在与AUTO_INCREMENT列相关联的索引的末尾设置独占锁定。在访问自动增长计数器中,InnoDB使用专用的表锁定模式AUTO-INC,其中锁定仅持续到当前SQL语句的结束,而不是到整个事务的结束。InnoDB取回先前初始化的AUTO_INCREMENT列的值而不设定任何锁定。

INSERT INTO T SELECT ... FROM S WHERE ... 对每个插入到T的行设置独占(非next-key)锁定。它在S上把搜索当作一个持续读,但是如果MySQL二进制日志功能被打开,它就对S设置一个共享的next-key锁
定。InnoDB在后一种情况不得不设置锁定:在从一个备份的前滚恢复中,每个SQL语句不得不以与它最初被执行的方式完全同样的方式执行。

· CREATE TABLE ... SELECT ... 把SELECT当作一个持续读来执行,或者带着共享锁定来执行,如前面的条目所述。
· 如果唯一键没有冲突,REPLACE象一个插入一样被做。另外,对必须更新的行设置一个独占的nextkey锁定。
· UPDATE ... WHERE ... 对搜索遇到的每个记录设置一个独占的next-key锁定。
· DELETE FROM ... WHERE ... 对搜索遇到的每个记录设置一个独占的next-key锁定。
· 如果对一个表定义FOREIGN KEY约束,任何需要检查约束条件的插入,更新或删除对它看着检查约束的记录设置共享行级锁定。InnoDB在约束失败的情况下也设置这些锁定。

相关文章

  • 在IDEA的maven项目中连接并使用MySQL8.0的方法教程

    在IDEA的maven项目中连接并使用MySQL8.0的方法教程

    这篇文章主要介绍了如何在IDEA的maven项目中连接并使用MySQL8.0,本文分步骤给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02
  • Mysql入门基础 数据库创建篇

    Mysql入门基础 数据库创建篇

    Mysql入门基础 数据库创建篇,刚接触php与mysql的朋友可以参考下。多写多测试。
    2010-04-04
  • MySQL配置文件my.cnf与my.ini的区别

    MySQL配置文件my.cnf与my.ini的区别

    在使用MySQL时,我们需要对其进行配置,以满足我们的需求,本文主要介绍了MySQL配置文件my.cnf与my.ini的区别,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • mysql使用from与join两表查询的区别总结

    mysql使用from与join两表查询的区别总结

    这篇文章主要给大家介绍了关于mysql使用from与join两表查询的区别的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12
  • Mysql表连接的误区与原理详析

    Mysql表连接的误区与原理详析

    在使用MySQL数据库过程中,left join 基本是必用的语法,下面这篇文章主要给大家介绍了关于Mysql表连接的误区与原理的相关资料,需要的朋友可以参考下
    2022-09-09
  • MySQL 搭建双主复制服务并通过 HAProxy 负载均衡的过程详解

    MySQL 搭建双主复制服务并通过 HAProxy 负载均衡的过程详解

    在数据库管理中,数据的备份和同步是至关重要的环节,而双主复制(Dual Master Replication)作为一种高可用性和数据同步的解决方案,本文将介绍MySQL双主复制的配置过程并通过 HAProxy 负载均衡,感兴趣的朋友一起看看吧
    2024-03-03
  • MySQL 客户端不输入用户名和密码直接连接数据库的2个方法

    MySQL 客户端不输入用户名和密码直接连接数据库的2个方法

    MySQL 客户端不输入用户名和密码直接连接数据库的2个方法,大家可以测试下。
    2009-07-07
  • MySQL数据库JDBC编程详解流程

    MySQL数据库JDBC编程详解流程

    JDBC是指Java数据库连接,是一种标准Java应用编程接口( JAVA API),用来连接 Java 编程语言和广泛的数据库。从根本上来说,JDBC 是一种规范,它提供了一套完整的接口,允许便携式访问到底层数据库,本篇文章我们来了解MySQL连接JDBC的流程方法
    2022-01-01
  • 用HAProxy来检测MySQL复制的延迟的教程

    用HAProxy来检测MySQL复制的延迟的教程

    这篇文章主要介绍了用HAProxy来检测MySQL复制的延迟的教程,HAProxy需要使用到PHP脚本,需要的朋友可以参考下
    2015-04-04
  • mysql中的limit和offset用法详解

    mysql中的limit和offset用法详解

    这篇文章主要介绍了mysql中的limit和offset用法详解,limit一般被用来排序,offset一般和limit组合使用,本文对这两个函数进行详细介绍,需要的朋友可以参考下
    2023-10-10

最新评论