【从删库到跑路】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可以进行插入

🍔小结

请添加图片描述

在这里插入图片描述

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

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

相关文章

国产企业级低代码开发哪个最好?这一款超好用

低代码开发平台(Low-code Development Platform)正在迅速崛起,成为未来软件技术发展的主导趋势。通过使用低代码开发平台,企业能够显著提高开发效率,降低对专业开发人员的依赖,并实现更快速的软件交付和使用…

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

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

【双指针】:Leetcode283.移动零

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

NCP1654BD65R2G功率因数校正控制器 用于紧凑和坚固的连续导通模式预转换器

NCP1654BD65R2G是一款高效的同步整流控制器,主要用于DC/DC转换器和LED驱动器等应用。该控制器采用了高性能的反馈控制算法,可以实现高达95%以上的转换效率。此外,NCP1654BD65R2G还具有多种保护功能,如过流保护、过热保护、欠压保护…

【linux】centos7 yum安装nginx

查看系统中是否已安装 nginx 服务 yum list | grep nginx查看nginx运行进程 ps -ef | grep nginx添加源 rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm 安装Nginx yum install -y nginx 查看nginx安装目录 find …

2019年五一杯数学建模B题木板最优切割方案解题全过程文档及程序

2019年五一杯数学建模 B题 木板最优切割方案 原题再现 徐州某家具厂新进一批木板如表 1 所示,在家具加工的过程中,需要使用切割工具生产表 2所示的产品。假设:木板厚度和割缝宽度忽略不计。   请为该家具厂给出如下问题的木板最优切割方…

【从入门到起飞】JavaSE—IO高级流(2)(打印流,压缩流)

🎊专栏【JavaSE】 🍔喜欢的诗句:天行健,君子以自强不息。 🎆音乐分享【如愿】 🎄欢迎并且感谢大家指出小吉的问题🥰 文章目录 🎄打印流🛸字节打印流🛸字符打印…

C++算法:全 O(1) 的数据结构

题目 请你设计一个用于存储字符串计数的数据结构,并能够返回计数最小和最大的字符串。 实现 AllOne 类: AllOne() 初始化数据结构的对象。 inc(String key) 字符串 key 的计数增加 1 。如果数据结构中尚不存在 key ,那么插入计数为 1 的 key…

SQL note2:DIsks and Files

目录 1、内存和磁盘 2、磁盘API 3、磁盘结构 4、访问磁盘页面 5、磁盘 vs SSD 5、磁盘空间管理 6、Files, Pages, Records 7、选择文件类型 8、堆文件 1)链表实现 2)页面目录实现 9、排序文件 10、关于计算标题页的注意事项 11、记录类型 …

Ubuntu18.04.6安装qt5.7.1(超级详细教程)

目录 1、下载对应Linux版本的qt 2、安装完qt,可能也要安装下对应的编译工具 1、下载对应Linux版本的qt (1)准备安装的是qt5.7.1:qt-opensource-linux-x64-5.7.1.run (2)在虚拟机进入存放qt安装包的目录…

cesium如何实现区域下钻

首先,这里讲一下数据源,数据源是拷贝的DataV.GroAtlas里的数据,这里整合了一下之前发的区域高亮的代码来实现的,单击左键使得区域高亮,每次点击都移除上一次点击的模块,双击左键,实现区域下钻并…

多级缓存之缓存同步

缓存数据同步的常见方式有三种: 设置有效期:给缓存设置有效期,到期后自动删除。再次查询时更新 优势:简单、方便缺点:时效性差,缓存过期之前可能不一致场景:更新频率较低,时效性要…