【从删库到跑路】MySQL数据库 | 全局锁 | 表级锁 | 行级锁

文章目录

  • 🌹简述
  • 🎄全局锁
    • ⭐数据备份
      • 🎈设置全局锁
      • 🎈对表进行备份
      • 🎈释放锁
  • 🎄表级锁
    • 🛸表锁
      • ⭐读锁
      • ⭐写锁
    • 🛸元数据锁
    • 🛸意向锁
      • ⭐意向共享锁
      • ⭐意向排他锁
  • 🎄行级锁
    • 🛸行锁
    • 🛸间隙锁&临键锁
  • 🍔小结

在这里插入图片描述

在 MySQL 中,锁是用于控制对数据的并发访问的机制。使用锁可以确保在多个用户同时访问相同数据时不会发生数据不一致或冲突的情况。MySQL 提供了多种类型的锁,以支持不同的并发访问场景。

以下是 MySQL 中常见的锁类型:

共享锁(Shared Lock):多个事务可以同时持有共享锁,并且不会互相阻塞。适用于读取操作,可以防止其他事务对数据进行写操作,但允许其他事务同时持有共享锁。

排他锁(Exclusive Lock):排他锁是一种独占锁,一个事务持有排他锁时,其他事务无法再持有任何类型的锁。适用于写入操作,可以防止其他事务对数据进行读取或写入操作。

行级锁(Row Lock):行级锁是针对表中的单行记录进行的锁定。MySQL 使用行级锁来实现并发控制,例如在事务中更新或删除某行数据时可以对该行加排他锁,阻止其他事务对该行进行修改。

表级锁(Table Lock):表级锁是针对整个表进行的锁定,会影响到整个表的并发访问。一般情况下,尽量避免使用表级锁,因为它会降低系统的并发性能。

除了以上常见的锁类型外,MySQL 还提供了其他类型的锁和锁机制,如意向锁、间隙锁等,用于支持不同的并发控制需求。

在实际开发中,了解不同类型的锁及其特性,合理地选择和使用锁对于确保数据的一致性和并发性能是非常重要的。同时,需要注意避免出现死锁等并发访问的常见问题。

🌹简述

MySQL中的锁是用于控制并发访问和操作数据库的机制。锁的存在可以确保多个用户或进程在同时操作数据库时不会产生冲突或数据不一致的问题。MySQL支持不同级别的锁,包括表级锁和行级锁。

🎄全局锁

就说对整个数据库实例加锁,加锁后整个实例就处于只读状态,后续的DML语句,DDL语句,已经更新操作的事务提交语句都将被阻塞
可以查询,但是不能写

⭐数据备份

🎈设置全局锁

flush tables with read lock;

在这里插入图片描述
在这里插入图片描述

🎈对表进行备份

在这里插入代码片

注意
在这里插入图片描述

执行语句后,发现会报错
这是因为mysqldump是MySQL提供的工具,我们不应该在MySQL的命令行里面执行,我们应该在Windows的命令行里面执行


在这里插入图片描述
我们进入路径,发现备份成功了
在这里插入图片描述

🎈释放锁

unlock tables;

在这里插入图片描述

🎄表级锁

表级锁,每次操作锁住整张表,锁定粒度大,发生锁冲突的概率最高,并发度最低

🛸表锁

表锁是数据库中一种常见的锁机制,它可以保护整张表免受并发操作的影响。当一个事务请求对某个表进行修改时,数据库管理系统会获取一个表级锁,将该表标记为“正在修改”。这样,其他事务就无法同时进行与该表相关的操作,直到持有锁的事务释放锁为止。

⭐读锁

在数据库系统中,读锁通常应用于表或行级别。当事务需要读取某个表或行时,它会请求共享锁。如果该表或行没有被其他事务以排他方式锁定,那么事务将获得该资源的读锁,并且其他事务可以继续读取该资源,但不能写入。如果有一个或多个事务已经以排他方式锁定了该表或行,那么请求共享锁的事务将被阻塞,直到其他事务释放了锁。

⭐写锁

在数据库系统中,写锁通常应用于表或行级别。当事务需要对某个资源进行写操作时,它会请求排他锁。如果该资源没有被其他事务以共享方式锁定或排他方式锁定,那么事务将获得该资源的写锁,并且其他事务无法读取或写入该资源。如果有其他事务以共享方式锁定了该资源,或者已经有事务以排他方式锁定了该资源,那么请求排他锁的事务将被阻塞,直到其他事务释放了锁。


请添加图片描述

加了读锁,可以读,但是不能写,其他客户端如果写,会处于阻塞状态,直到本地客户端释放锁为止
加了写锁,本地客户端可以读写但是其他客户端不能读,不能写

读锁不会阻塞其他客户端的读,但是会阻塞写
写锁机会阻塞其他客户端的读,又会阻塞其他客户端的写

🛸元数据锁

元数据锁 加锁过程是系统自动控制的,无需显式使用,在访问一张表的时候会自动加上
元数据锁的主要作用是维护表元数据的数据一致性,在表上有活动事务的时候,不可以对元数据锁进行写入操作
为了避免DML与DDL冲突,保证读写的准确性
请添加图片描述
在这里插入图片描述
直到commit为止
在这里插入图片描述

🛸意向锁

意向锁(Intention Lock)是在数据库中用于保护行级锁和表级锁之间的一种锁机制。它不直接作用于数据,而是作用于锁的层次结构,可以协调行级锁和表级锁之间的关系,从而提高并发访问效率。

⭐意向共享锁

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

⭐意向排他锁

与表锁共享锁(read)及排他锁(write)都互斥,意向锁之间不会互斥

查看意向锁,行锁的加锁情况
select object_schema,object_name,index_name,lock_type,lock_mode,lock_data from performance_schema.data_locks;

在这里插入图片描述

🎄行级锁

行级锁,每次操作锁住对应的行数据。锁定粒度最小,发生锁冲突的概率最低,并发度最高,应用在InnoDB存储引擎中

🛸行锁

锁定单个行记录的锁,防止其他事务对此进行update和delete。在RC,RR隔离级别下都支持
请添加图片描述

在这里插入图片描述

🛸间隙锁&临键锁

锁定索引记录间隙(不含该记录),确保索引记录间隙不变,防止其他事务在这个间隙进行insert,产生幻读。在RR隔离级别下都支持
防止多个并发事务出现幻读![请添加图片描述](https://img-blog.csdnimg.cn/abfaed7061ee4a57af28137363f37360.jpeg)
请添加图片描述
但是当左侧客户端执行commit操作后,数据id=7可以进行插入

🍔小结

请添加图片描述

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

类属性修改(为什么python类不具备被赋值能力?)

为什么python类不具备被赋值能力?,用魔术方法收集实参,在类中可以定义方法处理实际参数,实现对类“赋值”。 (笔记模板由python脚本于2023年11月15日 12:45:27创建,本篇笔记适合初通Python类class的coder翻阅) 【学习的…

Fedora Linux 39 正式版官宣 11 月 发布

导读Fedora Linux 39 正式版此前宣布将于 10 月底发布,不过这款 Linux 发行版面临了一些延期,今天开发团队声称,Fedora Linux 39 正式版将于 11 月 7 日发布。 过查询得知,在近日的 "Go / No-Go" 会议上,开…

多维时序 | MATLAB实现PSO-BiLSTM-Attention粒子群优化双向长短期记忆神经网络融合注意力机制的多变量时间序列预测

多维时序 | MATLAB实现PSO-BiLSTM-Attention粒子群优化双向长短期记忆神经网络融合注意力机制的多变量时间序列预测 目录 多维时序 | MATLAB实现PSO-BiLSTM-Attention粒子群优化双向长短期记忆神经网络融合注意力机制的多变量时间序列预测预测效果基本介绍模型描述程序设计参考…

nacos集群配置(超完整)

win配置与linux一样,换端口或者换ip,文章采用的 linux不同IP,同一端口 节点ipportnacos1192.168.253.168848nacos2192.168.253.178848nacos3192.168.253.188848 单IP多个端口 1.复制两个,重命名 2.修改 conf目录下的 application…

【软考篇】中级软件设计师 第二部分(一)

中级软件设计师 第二部分(一) 八. 层次化结构8.1 局部性原理8.2 体系8.3 分类8.3.1 存取方式8.3.2 工作方式 8.4 Cache8.4.1 例题 8.5 地址映像 九. 主存编址9.1 例题一 十. 可靠性10.1 串联系统和并联系统 十一. 网络安全11.1 保密性11.2 完整性&#x…

Qt基础 QT QTextEdit自动滑动

目录 1.吐槽那些写文章不动脑子的人,不带脑子就别写,误人子弟 2.问题解决: 1.吐槽那些写文章不动脑子的人,不带脑子就别写,误人子弟 最近公司在做一个提词项目,本来对这里功能难易感觉属于一般的,谁知道碰到一个很简单问题,搞了半天,先喷一下百度浏览器 不知道是…

Visual Studio Code安装和设置中文

文章目录 Visual Studio Code安装Visual Studio Code设置中文 步骤如下: Visual Studio Code安装 1.下载安装包 VS Code的官网 下载链接中的“az764295.vo.msecnd.net” 替换为国内镜像地址“vscode.cdn.azure.cn”,下载速度直接飙升至几十 Mb/s。(在官网下载速度…

HCIA-经典综合实验(二)

经典综合实验(二) 实验拓扑配置步骤配置Eth-Trunk聚合链路第一步 配置二层VLAN第二步 配置MSTP生成树第三步 配置相关IP地址第四步 配置DHCP及DHCP中继第五步 配置三层的网关冗余协议 VRRP及OSPF第六步 配置静态路由,NAT地址转换及其他配置完善 配置验证…

微服务基础,分布式核心,常见微服务框架,SpringCloud概述,搭建SpringCloud微服务项目详细步骤,含源代码

微服务基础 系统架构的演变 随着会联网的发展,网站应用的规模不断扩大,常规的应用架构已经无法应对,分布式服务架构以及微服务架构势在必行,必须一个治理系统确保架构有条不紊的演进 单体应用框架 Web应用程序发展的早期&…

【Qt-23】Qt charts绘制曲线图

一、QChart简介 QChart是Qt中专门用于绘制图表的模块,支持折线图、柱状图、饼图等常见类型。其主要组成部分有: QChart:整个图表的容器,管理图表中的所有数据和图形属性QChartView:继承自QGraphicsView,用于…

Python安装第三方库出错完美解决方法

错误 Could not find a version that satisfies the requirement PIL (from versions: none) ERROR: No matching distribution found for PILTry to run this command from the system terminal. Make sure that you use the correct version of pip installed for your Pyth…

轻松找回您的珍贵回忆的最好的 6 种照片数据恢复软件!

照片是珍惜过去珍贵时刻的唯一方式。它们让记忆永存,帮助我们重温生命中最美好的时刻。但是,当这些时刻丢失时会发生什么?您是否曾经因系统崩溃而意外删除或丢失照片?丢失照片可能令人心碎,但仍有希望,因为…

力扣每日一道系列 --- LeetCode 138. 随机链表的复制

📷 江池俊: 个人主页 🔥个人专栏: ✅数据结构探索 ✅LeetCode每日一道 🌅 有航道的人,再渺小也不会迷途。 LeetCode 138. 随机链表的复制 给你一个长度为 n 的链表,每个节点包含一个额外增加…

【双指针】:Leetcode283.移动零

朋友们、伙计们,我们又见面了,本专栏是关于各种算法的解析,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏:C语言:从入门到精通 数据结构专栏&…

[数据结构]—带头双向循环链表——超详解

💓作者简介🎉:在校大二迷茫大学生 💖个人主页🎉:小李很执着 💗系列专栏🎉:数据结构 每日分享✨:旅行是为了迷路,迷路是为了遇上美好❣️❣️❣️ …

Git的基本操作以及原理介绍

文章目录 基本操作创建git仓库配置name和email .git目录的结构git add & git commit.git目录结构的变化 git追踪管理的数据git的版本回退回退的原理回退的三种情况 版本库中文件的删除git分支管理分支的删除合并分支时的冲突分支的合并模式分支策略git stash不要在master分…

数据结构-时间复杂度与空间复杂度详解

文章目录 算法效率时间复杂度概念计算例1例2例3补充例4 空间复杂度例1例2 算法效率 算法效率分析分为两种:第一种是时间效率,第二种是空间效率。时间效率被称为时间复杂度,而空间效率被称作空间复杂度。时间复杂度主要衡量的是一个算法的运行速度&#…

Delicious Retouch5 for mac(PS磨皮插件DR5白金版)

Delicious Retouch5是一款强大的Photoshop插件,专为专业摄影师和摄影爱好者设计,提供一系列高级修图工具,帮助用户更快速、更有效地进行照片修饰和美化。其主要功能包括皮肤美容、人像润色、头发修饰、修复工具等,并配备定制化画笔…

海外邮件接收延迟、接收不到怎么办?U-Mail邮件网关来了

随着经济全球化的发展,很多国内企业开始踏足海外市场,电子邮件就成为了国内企业与海外客户沟通交流的主要渠道。然而海外邮件接收延迟、接收不到等问题成为了困扰企业与海外客户沟通的一大阻碍,导致客户邮件回复不及时,询盘邮件接…

新版本!飞凌嵌入式RK3568系列开发板全面支持Debian 11系统

飞凌嵌入式OK3568-C/OK3568J-C开发板现已全面支持Debian 11系统,新系统的加持能为用户提供主控新选择,并为开发者带来更多开发便利! Debian系统作为一种广受欢迎和信赖的开源操作系统,以其稳定性、可靠性和开放性而闻名&#xff0…