【MYSQL】锁详解(全局锁、表级锁、行级锁)【快速理解】

目录

一、全局锁

二、表级锁

        1.表锁

        2.元数据锁

        3.意向锁

三、行级锁

       1. 行锁

        2.间隙锁

        3.临建锁


锁是处理并发情况下,对数据的一致性的关键因素,也是并发情况下对效率影响非常大的。

1、全局锁:锁定表中所有数据。

2、表级锁:锁定整张数据库表。

3、行级锁:对某行数据进行锁定。

一、全局锁

        对数据库所有实例进行加锁,也就是整个数据库所有表进行加锁。一般在备份的时候,进行加全局锁,这样就会让备份的数据与当时数据库的数据一致,DML DDL操作无法访问只能DQL操作。

        加全局锁的语法:flush tables with read lock;

        解全局锁的语法:unlock tables;

        优化备份

二、表级锁

        1.表锁

                使用的语法

                        加锁:lock tables 表名... read/write

                        解锁:unlock tables 

                1.表共享读锁

                        共享读锁就是只能进行读操作,不能进行写操作。                      

                2.表共享写锁
                        共享写锁当前客户端可以进行读写操作,但是其他客户端不能进行读写操作。

        2.元数据锁

                是系统自动控制的,不需要显示使用,访问一张表的时候会进行自动加锁。避免DDL和DML冲突,保证读写的正确性。意思就是在表中开始事务的时候,不许对表的结构进行更改。

        对数据更改的时候会加上一个排他锁,与其他锁是互斥的。元数据共享读锁和元数据共享写锁之间是兼容的。

        3.意向锁

        如果加表锁的时候,如果有行锁那么会出现冲突,所以再加表锁的时候每行进行检查是否有行级锁,但如果有意向锁,那么直接检查意向锁是否与表锁兼容,如果兼容直接加锁,如果不兼容就不允许加。 

        意向共享锁与表锁的共享锁(read)兼容,与表锁的排他锁(write)互斥;

        意向排他锁与表锁的共享锁与排他锁都互斥。

        意向锁直接不回互斥。

三、行级锁

       1. 行锁

                防止其他事务对此数据进行update和delete,RC(读已提交),RR(可重复读)事务情况都支持。

                1.共享锁(S)

                        允许一个事务读一行,阻止其他事务获得相同数据集的排他锁。

                2.排他锁(X)

                        允许数据更新,但是阻止其他事务获取相同数据集的排他锁和共享锁。

加锁方式,一般用索引进行加锁,如果没有索引那么行锁的加锁方式会升级成表锁!

        2.间隙锁

                只锁数据的间隙,而不锁数据本身,防止插入数据的时候产生幻读,在RR情况下支持。

                索引上进行等值查询唯一索引,如果给不存的记录加锁时,优化为间隙锁,比如给两条记录中间的值加锁,此时给这个间隙加上了间隙锁。

                如果使用的是非唯一索引,加锁进行等值匹配的时候会将该值的前后都加上间隙锁,因为非唯一索引插入可能会插入相同的值 在前后,为了避免这种情况就可以这样加间隙锁。

        3.临建锁

                是行锁和间隙锁的组合,在RR情况下支持。

                在唯一索引下比如有个索引19,后面有一个25,我通过>19条件进行判断加锁,那么此时就会锁住19 25及19之间的还要25以后到正无穷的数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/59375.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥杯每日真题 - 第11天

题目:(合并数列) 题目描述(14届 C&C B组D题) 解题思路: 题意理解:给定两个数组,目标是通过若干次合并操作使两个数组相同。每次合并操作可以将数组中相邻的两个数相加&#xff…

Anaconda 和 conda 是什么关系?就像 pip 和 python 一样吗

Anaconda 和 conda是 Anaconda Distribution 还是 Miniconda Anaconda 和 conda Anaconda 和 conda 之间的关系有点类似于 pip 和 Python,但又有所不同。 Anaconda 是一个数据科学和机器学习的发行版,它包含了 Python、conda 以及许多预装的库和工具&am…

contos7.9 部署3节点 hadoop3.4 集群 非高可用

contos7.9 部署3节点 hadoop3.4 集群 非高可用 contos7.9 部署3节点 hadoop3.4 集群 非高可用环境信息服务器角色分配服务器配置服务器配置初始化 init_server.sh配置主机名映射所有节点配置 hosts文件 配置免密登录 hadoop 安装环境配置下载安装包下载 jdk1.8hadoop3.4 分发安…

linux之时间服务器

序 在项目开发中,各个模块的时间同步是一个重要的机制;那么如何在linux上搭建时间服务器呢?并且客户端怎么与服务器进行时间同步呢? 时间服务器搭建 linux中有两种时间服务器: ntp服务器和chrony服务器 1.ntp服务器 1.1 安装 apt install ntp 1.2 配置 配置文件一般在…

人工智能:重塑医疗、企业与生活的未来知识管理——以HelpLook为例

一、医疗行业:AI引领的医疗革新 随着人工智能(AI)技术的持续飞跃,我们正身处一场跨行业的深刻变革之中。在医疗健康的广阔舞台上,人工智能技术正扮演着日益重要的角色。它不仅能够辅助医生进行病例的精准诊断&#xf…

arcgis做buffer

用csv存好地址,xy加入arcgis,选择投影用Geographic - WGS 1984,否则不会显示在地图上 然后把投影改成Hong Kong 1980 Grid,命名为address_grid 一开始做buffer的时候没有反应,选择5m没有反应,选择decimal…

Aippyy如何写论文?ai人工智能写作哪家好?

Aippyy是一个智能论文写作工具,它可以帮助用户生成论文大纲和正文。以下是使用Aippyy写论文的一般步骤: 首先是生成论文大纲,一篇好的论文一定是有清晰的论文大纲作为支撑的,有了框架才能更好的寻找思路、填充内容。只需要输入我…

第四十五章 Vue之Vuex模块化创建(module)

目录 一、引言 二、模块化拆分创建方式 三、模块化拆分完整代码 3.1. index.js 3.2. module1.js 3.3. module2.js 3.4. module3.js 3.5. main.js 3.6. App.vue 3.7. Son1.vue 3.8. Son2.vue 四、访问模块module的state ​五、访问模块中的getters ​六、mutati…

论文笔记 SuDORMRF:EFFICIENT NETWORKS FOR UNIVERSAL AUDIO SOURCE SEPARATION

SUDORMRF: EFFICIENT NETWORKS FOR UNIVERSAL AUDIO SOURCE SEPARATION 人的精神寄托可以是音乐,可以是书籍,可以是运动,可以是工作,可以是山川湖海,唯独不可以是人。 Depthwise Separable Convolution 深度分离卷积&a…

69页可编辑PPT | 大数据基础知识培训课件

课件全面介绍了大数据的基础知识,包括大数据的定义、特征、发展演进、产业链、关键技术以及市场规模等多个方面,旨在为观众提供一个关于大数据领域的综合性概览。 大数据基本概念 广义的定义(哲学) :大数据,是指物理世界到数字世界的映射和提…

仓储管理系统-综合管理(源码+文档+部署+讲解)

本文将深入解析“仓储管理系统-综合管理”的项目,探究其架构、功能以及技术栈,并分享获取完整源码的途径。 系统概述 仓储管理系统-综合管理是一个全面的仓库管理解决方案,旨在通过集成多种功能模块来优化仓库操作和管理流程。该系统提供了…

MYSQL中的两种转义操作

在 MySQL 中,转义字符用于处理特殊字符,以防止语法错误或 SQL 注入攻击,而单双引号都是需要重点注意的字符 可以用转义符\ 和 两个连续的引号 来起到转义引号的作用 转义符转义: 这是users表中的数据 如果查询admin 或者 admin" 用户,可以用转义符\ 两个连…

引领企业未来数字基础架构浪潮,中国铁塔探索超大规模分布式算力

分布式算力被中国信通院列入“2024政企数智化转型十大关键词”。中国信通院指出,随着新一代通信规模建设和边缘计算应用的持续部署,越来越多的应用运行和数据生产处理在边端侧开展,这对于传统算力基础设施的部署、调度提出了新要求&#xff0…

快速上手STL中list的使用

目录 1.list的构造函数 2.list的赋值运算符重载 3.list的容量操作 4.list的元素访问 5.list的插入删除 insert和erase 头插头删和尾插尾删 6.list的其他操作 交换两个list 改变list的size 清空list 转移链表中的元素 1.list的构造函数 函数原型: 默认…

JavaScript调用系统自带的打印页面

JavaScript调用系统自带的打印页面 export function printPdf(data: BlobPart,) {const blob new Blob([data], { type: application/pdf })let date (new Date()).getTime()let ifr document.createElement(iframe)ifr.style.frameborder noifr.style.display noneifr.s…

【数据结构】快排之三路划分

目录 一、前言 二、 快排性能的关键点分析 三、 三路划分基本思想 四、 思路分析 五、提醒 六、代码实现 一、前言 继续对快速排序的深入优化进行探讨 二、 快排性能的关键点分析 决定快排性能的关键点是每次单趟排序后,key对数组的分割。 如果每次选key都能…

Kafka面试题解答(一)

1.kafka消息发送的流程? 生产者:在消息发送的过程中涉及到了两个线程:main线程和sender线程。在main线程中创建了一个双端队列RecordAccumulator(默认32m)。main线程将消息发送RecordAccumulator,sender线程不断地从R…

如何使用 XML Schema

如何使用 XML Schema XML Schema,也称为XSD(XML Schema Definition),是一种用于定义XML文档结构和内容的语言。它提供了一种强大的方式来描述XML文档中允许的元素、属性和数据类型。使用XML Schema,可以确保XML文档符合预定义的结构,这对于数据交换、数据验证和应用程序…

基于yolov8、yolov5的番茄成熟度检测识别系统(含UI界面、训练好的模型、Python代码、数据集)

摘要:番茄成熟度检测在农业生产及质量控制中起着至关重要的作用,不仅能帮助农民及时采摘成熟的番茄,还为自动化农业监测提供了可靠的数据支撑。本文介绍了一款基于YOLOv8、YOLOv5等深度学习框架的番茄成熟度检测模型,该模型使用了…

Oracle 数据库创建导入

注意:本教程中的有些命令您可能并不熟悉,但没关系,只需按照说明一步一步创建示例数据库即可。在之后的教程中,会详细介绍每个命令。 1.创建新用户并授予权限 1.1.打开 首先,启动 SQL plus 程序的命令行:…