【MySQL】锁(黑马课程)

【MySQL】锁

  • 0. 锁的考察点
  • 1. 概述
  • 1. 锁的分类
    • 1.1 属性分类
    • 1.2 粒度分类
  • 2. 全局锁
    • 2.1 全局锁操作
      • 2.2.1 备份问题
  • 3. 表级锁
    • 3.1
  • 附录

0. 锁的考察点

在这里插入图片描述

1. 概述

锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。

1. 锁的分类

在这里插入图片描述

1.1 属性分类

InnoDB存储引擎实现了两种标准的行级锁:共享锁(S Lock)和排他锁(X Lock)。

共享锁(S Lock):允许事务读一行数据。
排他锁(X Lock):允许事务删除或更新一行数据。

1.2 粒度分类

按照锁的粒度来分,分为以下三类

  1. 全局锁:锁定数据库中的所有表。
  2. 表级锁:每次操作锁住整张表。
  3. 行级锁:每次操作,锁住对应的行数据。

2. 全局锁

全局锁就是对整个数据库实例加锁,加锁后整个实例就处于只读状态,后续的DML的写语句,DDL语句,已经更新操作的事务提交语句都将被阻塞。

其典型的使用场景是做全库的逻辑备份,对所有的表进行锁定,从而获取一致性视图,保证数据的完整性。

如果不上锁,边备份,业务还正常执行就会造成数据不一致的问题。
在这里插入图片描述

2.1 全局锁操作

mysql> flush tables with read lock;      // 加全局锁
Query OK, 0 rows affected (0.01 sec)mysql> insert into migrations values(7,'1231231',1);    // 插入数据的时候
ERROR 1223 (HY000): Can't execute the query because you have a conflicting read lockmysql> unlock tables;  // 销毁全局锁
Query OK, 0 rows affected (0.00 sec)mysql> insert into migrations values(7,'1231231',1);  // 可以正常插入了
Query OK, 1 row affected (0.01 sec)

备份数据库(newdb3)的数据

(base)~ mysqldump -u root -p  newdb3>/Users/fanzhen/Downloads/newdb3.sql
Enter password:

2.2.1 备份问题

全局锁特点

数据库中加全局锁,是一个比较重的操作,存在以下问题:

  1. 如果在主库上备份,那么在备份期间都不能执行更新,业务基本上就得停摆。

  2. 如果在从库上备份,那么在备份期间从库不能执行主库同步过来的二进制日志(binlog),会导致主从延迟。

在InnoDB引擎中,我们可以在备份时加上参数-single-transaction参数来完成不加锁的一致性数据备份。

在这里插入图片描述

3. 表级锁

表级锁,每次操作锁住整张表。锁定粒度大,发生锁冲突的概率最高,并发度最低。应用在MyISAM、InnoDB、BDB等存储引擎中。

对于表级锁,主要分为以下三类:

  1. 表锁
  2. 元数据锁(meta data lock, MDL)
  3. 意向锁

3.1

附录

  1. 徐庶MySQL锁 https://blog.csdn.net/bjjx123456/article/details/136180761
  2. 黑马讲解MySQL锁部分

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

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

相关文章

MatLab三维图形绘制基础

三维图形绘制 三维曲线 plot3 螺旋图绘制 % %三维图像:螺旋图绘制 clear; clc; t [0:0.1:10*pi];% 向量 x sin(t) t.*cos(t);%t是向量,用点乘 y cos(t) - t.*sin(t); z t; plot3(x,y,z); grid on;plot3 绘制同型矩阵 %% % plot3绘制同型矩阵 t [0:0.1:10*…

OceanBase v4.2 特性解析:对Json与Xml的扩展支持

1. 背景 OceanBase的Oracle模式当前已实现对XMLType类型的支持,不仅包含了基本的构造、查询、更新以及格式转换功能,还支持使用Xpath查询从XML数据中提取特定值。在V 4.2.2 版本中,我们进一步扩展了Oracle模式下对XMLType的支持,…

Python统计实战:时间序列分析之二阶曲线预测和三阶曲线预测

为了解决特定问题而进行的学习是提高效率的最佳途径。这种方法能够使我们专注于最相关的知识和技能,从而更快地掌握解决问题所需的能力。 (以下练习题来源于《统计学—基于Python》。请在Q群455547227下载原始数据。) 练习题 下表是某只股票…

每周算法:无向图的双连通分量

题目链接 冗余路径, Redundant Paths G 题目描述 为了从 F F F 个草场中的一个走到另一个,奶牛们有时不得不路过一些她们讨厌的可怕的树。 奶牛们已经厌倦了被迫走某一条路,所以她们想建一些新路,使每一对草场之间都会至少有两条相互分离…

Matplotlib 中文显示

Matplotlib 中文显示 Matplotlib 是一个强大的 Python 绘图库,广泛应用于数据可视化领域。然而,对于中文用户来说,Matplotlib 的默认设置可能不支持中文显示,这给使用带来了一定的不便。本文将详细介绍如何在 Matplotlib 中正确显…

Isaac Sim 利用Python实现虚拟现实仿真,并输出语义数据全流程

没写完呢:( 拽走开会去了 在 Isaac Sim 中,使用 Python 实现虚拟现实的仿真,并输出语义分割等数据,可以应用于ai模型训练等场景。注:我打算将传感器发布Ros话题的部分放到小车中。控制一个物体,对这个物体…

vue3 + 百度地图 实现多坐标生成轨迹的两种种方式

本次依然是关于百度地图中常见的一个问题,此次共使用了两种方式并做了一些分析及处理,希望有所帮助。如有问题可以评论或私信。 一、便捷方式 优点:便捷,所用的api方法是根据坐标进行计算后绘制路线,所以路线相对准确…

马尔可夫决策过程

马尔可夫决策过程(Markov Decision Process,MDP)是一种数学框架,用于建模决策者在不确定环境中的序列决策问题。MDP 的核心思想是基于马尔可夫性质,即未来的状态只依赖于当前状态和所采取的行动,而与过去的…

面试题006-Java-JVM(下)

面试题006-Java-JVM(下) 目录 面试题006-Java-JVM(下)题目自测题目答案1. 为什么需要GC?2. 有哪些常见的GC?3. Minor GC 和 Full GC有什么区别?4. 如何判断一个对象是否死亡?5. 讲一下可达性分析算法的流程?6. 如何判断…

CentOS修复OpenSSH漏洞升级到openssh 9.7 RPM更新包

在做政府和学校单位网站时,经常需要服务器扫描检测,经常被OpenSSH Server远程代码执行漏洞(CVE-2024-6387)安全风险通告,出了报告需要升级OpenSSH。 使用yum update openssh是无法更新到最新的,因为系统里的…

VS code修改底部的行号的状态栏颜色

VSCode截图 相信很多小伙伴被底部的蓝色状态栏困扰很久了 处理的方式有两种: 1、隐藏状态栏 2、修改其背景颜色 第一种方法大伙都会,今天就使用第二种方法。 1、点击齿轮进入setting 2、我现在用的新版本,设置不是以前那种json格式展示&…

17-JS封装:工具类方法

目录 一、extend方法 二、添加一些工具类方法:$.xxx() 实现1: 实现2: 一、extend方法 jQuery.fn.extend jQuery.extend function(...args){let target,source[];source[...args];//判断2种情况 //$.extend({}) -->给$添加属性//$.…

计算机提示由于找不到concrt140.dll怎么办,7种解决方法可以对比

在电脑中打开游戏或许软件出现找不到concrt140.dll无法继续执行代码怎么办?concrt140.dll是什么?丢失要怎么解决?下面给大家分析一下concrt140.dll文件是什么与concrt140.dll丢失的多种解决方法!相信对你有帮助! 一、c…

hdu物联网硬件实验2 GPIO亮灯

学院 班级 学号 姓名 日期 成绩 实验题目 GPIO亮灯 实验目的 点亮三个灯闪烁频率为一秒 硬件原理 无 关键代码及注释 const int ledPin1 GREEN_LED; // the number of the LED pin const int ledPin2 YELLOW_LED; const int ledPin3 RED…

Spring Boot与Spring Cloud Config的集成

Spring Boot与Spring Cloud Config的集成 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 一、Spring Cloud Config简介与背景 在微服务架构中,配…

FPGA开发笔试1

1. 流程简介 我是两天前有FPGA公司的HR来问我实习的事情,她当时问我距离能不能接受,不过确实距离有点远(地铁通勤要将近一个半小时),然后她说给我约个时间,抽空做1个小时的题目(线上做&#xf…

2024年【金属非金属矿山(地下矿山)安全管理人员】考试报名及金属非金属矿山(地下矿山)安全管理人员模拟考试题

题库来源:安全生产模拟考试一点通公众号小程序 2024年金属非金属矿山(地下矿山)安全管理人员考试报名为正在备考金属非金属矿山(地下矿山)安全管理人员操作证的学员准备的理论考试专题,每个月更新的金属非…

CTF常用sql注入(三)无列名注入

0x06 无列名 适用于无法正确的查出结果,比如把information_schema给过滤了 join 联合 select * from users;select 1,2,3 union select * from users;列名被替换成了1,2,3, 我们再利用子查询和别名查 select 2 from (select 1,2,3 union select * f…

Go语言--工程管理、临时/永久设置GOPATH、main函数以及init函数

工作区 Go 代码必须放在工作区中。工作区其实就是一个对应于特定工程的目录,它应包含3个子目录:src 目录、pkg目录和bin 目录。 src 目录:用于以代码包的形式组织并保存 Go源码文件。(比如:.go.chs等)pkg 目录:用于存放经由 go install 命令构建安装后的代码包(包…

芯片基识 | 掰开揉碎讲 FIFO(同步FIFO和异步FIFO)

文章目录 一、什么是FIFO二、为什么要用FIFO三、什么时候用FIFO四、FIFO分类五、同步FIFO1. 同步FIFO电路框图2. 同步FIFO空满判断3. 同步FIFO设计代码4. 同步FIFO仿真结果 六、异步FIFO1、异步FIFO的电路框图2 、亚稳态3、打两拍4、格雷码5、如何判断异步FIFO的空满&#xff0…