【从删库到跑路】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.rhkb.cn/news/193992.html

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

相关文章

有大量虾皮买家号想防关联该怎么做?

Shopee平台规定一个买家只能拥有一个买家号,如果一台电脑或者一个手机同时登录好几个买家号,那么很有可能就会关联封号的。那么有大量虾皮买家号想防关联该怎么做? 如果想要运用大量的shopee买家号来操作,那么需要使用有防指纹技术…

Navicat Premium 16,无限重置试用14天

打开注册表编辑器 红箭头所指方向每个系统判别不一样 如何判别呢?一个个点开看底下是不是info,如果是那么把info文件夹删掉就可以了。

PMP项目管理考试的知识点概述

人 - 重点强调与有效领导项目团队相关的技能和活动。考试内容主要涵盖敏捷实践管理,考题占比较大。 过程 - 加强项目管理的技术领域;主要涵盖《PMBOK第6版》,考试试题占比约为50%。《PMBOK第6版》考试内容大约有90道题。 业务环境 - 突出项…

7.jvm对象内存布局

目录 概述对象里的三个区对象头验证代码控制台输出分析 验证2代码控制台输出 实例数据对其填充 访问对象结束 概述 jvm对象内存布局详解。 相关文章在此总结如下: 文章地址jvm基本知识地址jvm类加载系统地址双亲委派模型与打破双亲委派地址运行时数据区地址运行时数…

打造全身视角的医院可视化能源监测管理平台,实现医院能源可视化管理

医院是大型公共建筑的一种,随着医院规模的不断扩大,医院能源消耗剧增,能源消耗居高不下。医院对于能源监管的需求也越来越高。医院建立一套能耗监测管理平台,对于降低医院能耗有着非常重要的作用。 医院能耗存在的问题 1、医院能…

通信原理板块——利用香农公式对连续信道的信道容量计算

微信公众号上线,搜索公众号小灰灰的FPGA,关注可获取相关源码,定期更新有关FPGA的项目以及开源项目源码,包括但不限于各类检测芯片驱动、低速接口驱动、高速接口驱动、数据信号处理、图像处理以及AXI总线等 利用香农公式对连续信道的信道容量…

​软考-高级-系统架构设计师教程(清华第2版)【第6章 数据库设计基础知识(234~262)-思维导图】​

软考-高级-系统架构设计师教程(清华第2版)【第6章 数据库设计基础知识(234~262)-思维导图】 课本里章节里所有蓝色字体的思维导图

JAVA数据代码示例

首先,我们需要导入一些必要的Java库 java import java.net.URL; import java.net.HttpURLConnection; import java.io.BufferedReader; import java.io.InputStreamReader; 然后,我们可以创建一个URL对象,表示我们要爬取的网页的URL。 jav…

.NET开源全面方便的第三方登录组件集合 - MrHuo.OAuth

前言 我相信做开发的同学应该都对接过各种各样的第三方平台的登录授权,来获取用户信息(如:微信登录、支付宝登录、QQ登录、GitHub登录等等)。今天给大家推荐一个.NET开源好用的、全面的、方便第三方登录组件集合框架:M…

计算机毕业设计 基于Vue的米家商城系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

图片转换成base64格式的优缺点

文章目录 前言什么是base64? 一,优点二,缺点三,工具 前言 什么是base64? Base64,顾名思义,就是包括小写字母a-z、大写字母A-Z、数字0-9、符号"“、”/“一共64个字符的字符集,(另加一个…

Redis04-分布式锁

目录 Redis实现分布式锁 分布式锁的工作流程 Redis实现分布式锁 Redission的watch dog Redis分布式锁的合理应用 Redis实现分布式锁 在单节点的服务器中,java中的synchronized机制是处于JVM层面的,只能保证线程之间的同步。而实际的服务部署中&…

李开复再度回应争议;10 月中国游戏厂商及应用出海收入 30 强出炉丨 RTE 开发者日报 Vol.86

开发者朋友们大家好: 这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE (Real Time Engagement) 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有…

Java排序算法之堆排序

图解 堆排序是一种常见的排序算法,它借助了堆这种数据结构。堆是一种完全二叉树,它可以分为两种类型:最大堆和最小堆。在最大堆中,每个结点的值都大于等于它的子结点的值,而在最小堆中,每个结点的值都小于等…

mac homebrew.mxcl.php@5.6.plist

今天启动php5.6时 遇到了一个问题 servers % brew services start php5.6 Bootstrap failed: 5: Input/output error Try re-running the command as root for richer errors. Error: Failure while executing; /bin/launchctl bootstrap gui/501 /Users/ssh/Library/LaunchAge…

深兰科技轮腿家用AI机器人荣获“2023年度城市更新科创大奖”

近日,“2023金砖论坛第五季金立方城市更新科创大会”在上海举行,会上发布了《第12届金砖价值榜》,深兰科技研发出品的轮腿式家用AI机器人(兰宝),因其AI技术的创新性应用,荣获了“2023年度城市更新科创大奖”。 在10月2…

word批量图片导出wps office word 图片批量导出

word批量导出图片教程 背景 今天遇到了一个场景,因为word里的图片打开看太模糊了,如果一个一个导出来太麻烦。想批量将word中的图片全部导出 但是,wps导出的时候需要会员 教程开始: 将word保存为 .docx 格式,可以按F1…

2023版Idea创建JavaWeb时,右键new没有Servlet快捷键选项

问题:右键时,没有创建servlet的快捷键,如下图: 解决方法: 1.打开idea,点击File>settings(设置),进入settings页面,如下 从上图中的Files选项中没看到有servlet选项,…

2023.11.17 -hivesql调优,数据压缩,数据存储

目录 1.hive命令和参数配置 2.hive数据压缩 3.hive数据存储 0.原文件大小 18.1MB 1.textfile行存储格式, 压缩后size:18MB 2.行存储格式:squencefile ,压缩后大小8.89MB​ 3. 列存储格式 orc - ZILIB ,压缩后大小2.78MB 4.列存储格式 orc-snappy ,压缩后大小3.75MB 5…

懒人福利:6款Sketch插件合集,提升设计效率爆款推荐!

Sketch作为一种在线设计工具,一直是许多设计师的最爱。它不仅能快速建立原型,还能提供丰富的插件,以满足不同的需求。 今天,我想和大家分享六款流行的Sketch插件供参考。这些插件都是精心挑选的,它们支持Windows、Mac…