mysql之innodb的锁分类介绍

时间:2024-01-27 00:50:10 

一、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在约束失败的情况下也设置这些锁定。

标签:mysql,innodb
0
投稿

猜你喜欢

  • python 最简单的实现适配器设计模式的示例

    2021-10-14 12:07:59
  • python简单获取本机计算机名和IP地址的方法

    2021-04-18 01:46:16
  • Python配置文件解析模块ConfigParser使用实例

    2023-10-19 09:10:19
  • debian6配置mysql允许远程连接的方法(图)

    2024-01-13 19:42:20
  • sqlserver 多库查询 sp_addlinkedserver使用方法(添加链接服务器)

    2011-09-30 11:49:22
  • python中的随机函数小结

    2021-07-01 04:26:59
  • python打开文件并获取文件相关属性的方法

    2021-02-21 15:24:26
  • 使用numba对Python运算加速的方法

    2022-05-12 20:30:57
  • python opencv实现目标区域裁剪功能

    2022-07-15 19:17:56
  • VSCode插件安装完成后的配置详解

    2022-02-16 00:36:34
  • 我的快递一个月没动静于是赶紧上线python快递查询系统

    2021-04-06 23:49:01
  • 什么是 XML Web Service

    2008-09-05 17:21:00
  • MySQL数据库索引order by排序精讲

    2024-01-17 09:33:43
  • php+js实现倒计时功能

    2023-11-12 17:16:29
  • 详解Python中四种关系图数据可视化的效果对比

    2022-05-10 10:12:44
  • pandas按某列降序的实现

    2021-02-19 08:29:44
  • 在django admin详情表单显示中添加自定义控件的实现

    2023-09-24 18:56:00
  • 如何用OpenCV -python3实现视频物体追踪

    2022-04-02 23:15:58
  • 使用python实现两数之和的画解算法

    2022-01-04 21:06:05
  • numpy中实现二维数组按照某列、某行排序的方法

    2022-07-16 00:18:03
  • asp之家 网络编程 m.aspxhome.com