mysql 学习17 SQL 锁

news/2025/2/25 17:09:44

概述

全局锁

通过全局锁 进行数据备份

表级锁

表锁

元数据锁

意向锁

原先 A线程 开启了一个事务,udpate id =3的数据,就会有一个行级锁,锁定第三行

这时候如果B线程要 lock tables 这个表 read,那么理论上就要锁定这一行表。

那么sql>mysql 是怎么做的呢? 在没有意向表之前sql>mysql 会挨个检查每一行是否有行级锁,来判定是否可以lock 整个表,有了 意向锁之后就不需要这样做了。

没有意向锁之前的行为:

有了意向锁之后的行为:

如何添加意向锁 -- 在select 语句时,添加关键字  lock in share mode,会生成意向共享锁

        select * from student where id=1 lock in share mode;

使用 lock in share mode 表示 给id=1的这一行加上 行级锁,同时给这张student表加上了意向锁

参见如下的操作。

可以看到 由 lock in share mode 加的意向锁是  意向共享锁(IS)

如何添加意向 - 在 update,delete,insert 的时候会自动生成 意向排他锁

行级锁

行锁

一般 select 语句 

select 语句后面加上 lock in share mode

A线程 使用 select 后面加上 lock in share mode 后,就有了行 锁,可以通过 data_locks数据查询到。
由于 lock in share mode 是共享锁, 是和 共享锁兼容的,因此 B线程 也可以通过 select 查询到,注意这里B线程select 是加上了 lock in share mode 关键字的。

如果 线程B 这时候想要 update id=1的数据,就会处于阻塞状态。

间隙锁

临建锁

小结:


http://www.niftyadmin.cn/n/5865749.html

相关文章

8.spring对logback的支持

文章目录 一、入口二、源码解析LoggingApplicationListener 三、其它支持四、总结 本节以logback为背景介绍的 一、入口 gav: org.springframework.boot:spring-boot:3.3.4 spring.factories文件中有如下两个配置 org.springframework.boot.logging.LoggingSystemFactory\ …

【Java 8】Lambda表达式介绍

目录 1、Lambda简介 2、语法介绍 3、Lambda表达式示例 3.1、无参数的 Lambda 表达式 3.2、单个参数的 Lambda 表达式 3.3、多个参数的 Lambda 表达式 3.4、带语句块的 Lambda 表达式 4、Lambda使用场景 4.1、替代匿名内部类 4.2、集合操作 4.3、排序 4.4、函数式接口…

Java使用EasyExcel实现异步导出

以下是使用 EasyExcel 工具类实现异步导出功能的 Demo,包括用户发起导出请求后,系统先返回响应,后台读取数据并上传至 COS,最后通知用户下载的完整流程。 实现步骤 用户发起导出请求 前端调用导出接口,后端立即返回响应…

【Linux】Ubuntu中,如何创建软件的快捷方式放到桌面上

本文主要介绍Ubuntu中,如何创建软件的快捷方式放到桌面上 首先进入到/usr/share/applications/路径下,找到自己想要的软件,这里以我的vim为例子 ricardoDESKTOP-8T8LHV5:/usr/share/applications$ ls byobu.desktop io.snapcraft.SessionA…

AI回答:Linux C/C++编程学习路线

Linux C/C编程学习路线需要结合Linux系统特性和C/C语言的特点,以下是一个系统化的学习路径,适合从初学者到进阶者: 第一阶段:Linux基础 Linux操作系统基础 学习Linux基本命令:ls、cd、mkdir、rm、grep、find等。 理解…

软件项目开发中,产品经理借助 AI 工具将产品设计转化为需求的方法

软件项目开发中,产品经理借助 AI 工具将产品设计转化为需求的方法 在软件项目开发流程里,产品经理承担着将产品设计转化为详细需求的关键任务。AI 工具的兴起为这一过程带来了全新的助力,下面结合实例来看看产品经理如何巧妙运用 AI 工具。 一…

ubuntu-24.04.1-desktop 中安装 QT6.7

ubuntu-24.04.1-desktop 中安装 QT6.7 1 环境准备1.1 安装 GCC 和必要的开发包:1.2 Xshell 连接 Ubuntu2 安装 Qt 和 Qt Creator:2.1 下载在线安装器2.2 在虚拟机中为文件添加可执行权限2.3 配置镜像地址运行安装器2.4 错误:libxcb-xinerama.so.0: cannot open shared objec…

YOLO11改进-模块-引入混合结构模块Mix Structure Block 提高多尺度、小目标

在图像去雾领域,传统的基于卷积神经网络(CNN)和 Transformer 的方法存在局限性。CNN 方法大多存在感受野不足的问题,限制了单个像素在神经网络中的参考范围,部分考虑大感受野的 CNN 方法又忽略了图像的多尺度特性&…