MySQL(一)锁 ----- 全局锁

基于ensp大学网络规划与设计(完整文档+ensp拓扑图) 大家好,我是小华学长,一名计算机领域的博主。经过多年的学习和实践,我积累了丰富的计算机知识和经验,在这里我想与大家分享我的学习心得和技巧,帮助你成为更好的程序员。 作为一名计算机博主,我一直专注于编程、算法、软件开发等领域,在这些方面积累了大量的经验。我相信分享是一种双赢的方式,通过分享,我可以帮助他人提升技术水平,同时也能够得到学习交流的机会。 在我的文章中,你将会看到我对于各种编程语言、开发工具以及常见问题的解析和分析。我会结合自己的实际项目经验,为你提供实用的解决方案和优化技巧。我相信这些经验不仅能够 阅读详情

前言

MySQL 里面的锁大致可以分成全局锁,表级锁,行锁
这儿将讲一下全局锁

全局锁

全局锁就是对整个数据库实例加锁。MySQL 提供了一个加全局读锁的方法,命令是Flush tables with read lock (FTWRL)。
当你需要让整个库处于只读状态的时候,可以使用这个命令,之后其他线程的以下语句会被阻塞:数据更新语句(数据的增删改)、数据定义语句(包括建表、修改表结构等)和更新类事务的提交语句。

全局锁使用场景

全局锁的典型使用场景是,做全库逻辑备份(mysqldump)。重新做主从时候
也就是把整库每个表都 select 出来存成文本。
以前有一种做法,是通过 FTWRL 确保不会有其他线程对数据库做更新,然后对整个库做备份。注意,在备份过程中整个库完全处于只读状态。

数据库只读状态的危险性:

  • 如果你在主库上备份,那么在备份期间都不能执行更新,业务基本上就能停止。

  • 如果你在从库上备份,那么备份期间从库不能执行主库同步过来的binlog,会导致主从延迟。

    注:上面逻辑备份,是不加 –single-transaction 参数

看来加全局锁不太好。但是细想一下,备份为什么要加锁呢?来看一下不加锁会有什么问题?

不加锁产生的问题

比如手机卡,购买套餐信息

这里分为两张表 u_acount (用于余额表),u_pricing (资费套餐表)
步骤:
1 . u_account 表中数据 用户A 余额:300
    u_pricing 表中数据 用户A 套餐:空
 
2. 发起备份,备份过程中先备份u_account表,备份完了这个表,这个时候u_account 用户余额是300
3. 这个时候套用户购买了一个资费套餐100,餐购买完成,写入到u_print套餐表购买成功,备份期间的数据。
4. 备份完成

可以看到备份的结果是,u_account 表中的数据没有变, u_pricing 表中的数据 已近购买了资费套餐100.

哪这时候用这个备份文件来恢复数据的话,用户A 赚了100 ,用户是不是很舒服啊。但是你的想想公司利益啊。

也就是说,不加锁的话,备份系统备份的得到的库不是一个逻辑时间点,这个数据是逻辑不一致的。

为什么需要全局读锁(FTWRL)

可能有的人在疑惑,官方自带的逻辑备份工具是 mysqldump。当 mysqldump 使用参数–single-transaction的时候,导数据之前就会启动一个事务,来确保拿到一致性快照视图。而由于 MVCC 的支持,这个过程中数据是可以正常更新的。

为什么还需要 FTWRL 呢?
一致性读是好,但前提是引擎要支持这个隔离级别。 比如,对于 MyISAM 这种不支持事务的引擎,如果备份过程中有更新,总是只能取到最新的数据,那么就破坏了备份的一致性。这时,我们就需要使用FTWRL 命令了。

所以,single-transaction 方法只适用于所有的表使用事务引擎的库。如果有的表使用了不支持事务的引擎,那么备份就只能通过 FTWRL 方法。这往往是 DBA 要求业务开发人员使用 InnoDB 替代 MyISAM 的原因之一。

全局锁两种方法

  • FLUSH TABLES WRITE READ LOCK
  • set global readonly=true

既然要全库只读,为什么不使用 set global readonly=true 的方式呢?确实 readonly 方式也可以让全库进入只读状态,但我还是会建议你用 FTWRL 方式,主要有几个原因:

  • 在有些系统中,readonly 的值会被用来做其他逻辑,比如用来判断一个库是主库还是备库。因此,修改 global 变量的方式影响面更大,我不建议你使用。

  • 在异常处理机制上有差异。如果执行FTWRL 命令之后由于客户端发生异常断开,那么 MySQL 会自动释放这个全局锁,整个库回到可以正常更新的状态。而将整个库设置为 readonly 之后,如果客户端发生异常,则数据库就会一直保持 readonly 状态,这样会导致整个库长时间处于不可写状态,风险较高。

  • readonly 对super用户权限无效

注 :业务的更新不只是增删改数据(DML),还有可能是加字段等修改表结构的操作(DDL)。不论是哪种方法,一个库被全局锁上以后,你要对里面任何一个表做加字段操作,都是会被锁住的。

即使没有被全局锁住,加字段也不是就能一帆风顺的,还有表级锁了

大模型知识边界探索:LLM设计的极限测试 最优化理论是数学中的一个分支,主要研究如何从给定的一组约束条件下找到最优解。目标函数:定义了需要优化的指标,可以是最大化或最小化。约束条件:定义了在优化过程中需要满足的限制条件。无约束优化:目标函数和约束条件都不存在。有约束优化:目标函数存在,但存在约束条件。多目标优化:同时需要优化多个目标函数。极限测试(Ultimate Test)是一种系统性的方法,用于评估大型模型(如LLM)在极端条件下的性能和稳定性。极端数据分布:与模型训练数据分布显著不同的数据集。极端计算资源。 阅读详情

相关推荐

IC版图设计布局经验90条!

13 如果一个cell调用其它cell,被调用的cell的vssx,vddx,vssb,vddb如果没有和外层cell连起来,要打上PIN,否则通不过diva检查.尽量在布局低层cell时就连起来。48 在匹配电路的mos管左右画上dummy,用poly,poly的尺寸与管子尺寸一样,dummy与相邻的第一个poly gate的间距等于poly gate之间的间距。8 更改cell时查看路径,一定要在正确的library下更改,以防copy过来的cell是在其他的library下,被改错。

weixin_44606964的博客 909

全局锁和表级锁

全局锁和表级锁

热爱永不过时! 926

[金仓数据库V8R6]更换授权

上传授权,使用mv license_xxx_0.dat /home/kingbase/KingbaseES/license.dat替换每个授权,并使用ls -l license.dat确保替换前后属主和权限不变。根据步骤1的数据目录位置,执行/home/kingbase/KingbaseES/Server/bin/sys_ctl -D /home/kingbase/KingbaseES/data reload使新的授权文件生效。该参数意义为授权剩余有效天数,查询结果为新授权中有效期间的天数即为替换成功。

l04050924的博客 3706

MySQL的锁机制之全局锁和表锁

对mysql锁的总结学习,本文将围绕,加锁的概念,加锁的应用场景和优化,以及不加锁会导致的问题这些方向进行总结学习。mysql的全局锁和表锁是本文的重点

weixin_52259848的博客 1634

OAI数据集申请与实战:从权限获取到医学影像分析应用

本文详细介绍了OAI数据集的申请流程与医学影像分析实战应用。从NDA账户注册、数据下载技巧到骨盆X光关键点检测的完整实现,帮助医学研究者高效利用这一权威骨关节炎数据集。特别分享使用Pei Y标注数据训练U-Net模型的经验,包括预处理、注意力机制优化等实用技巧。

weixin_30275415的博客 478

AI Agent开发实战:100个真实场景题库解析

AI Agent开发涉及复杂的需求理解、架构设计及安全防护等关键技术环节。在工程实践中,开发者常面临需求偏差、系统崩溃等挑战,特别是在金融、医疗等高要求场景下。通过真实案例题库,开发者能系统性地掌握需求分析、架构决策树建模(如向量数据库选型)、安全攻防策略(如提示词注入防御)等核心技能。这些实战经验不仅能提升Agent的可用性和安全性,还能优化其在电商客服、智能家居等场景中的表现。题库采用动态难度系统,覆盖从基础到高级的开发挑战,是AI工程化落地的重要参考。

weixin_29057695的博客 342

MySQL---全局锁,表级锁,行级锁

MySQL中的全局锁、表级锁和行级锁各有优缺点和适用场景。全局锁主要用于全库逻辑备份和数据库维护;表级锁适用于整表操作和高并发读写;行级锁则因其粒度细小而广泛应用于特定行操作和减少死锁的场景。选择合适的锁机制能够显著提高数据库的并发性能和数据一致性.全局锁:虽然避免了死锁,但其高开销和低并发性能使其在实际应用中较少使用。表级锁:开销小且加锁快,适合只读或单用户应用,能有效避免死锁并提高并发性能。行级锁:适用于多用户、高并发的应用程序,能提供较高的并发性能,但需要注意死锁的处理。

我爱JAVA 2010

别再只盯着YOLOv8了!手把手带你用PaddleDetection的PP-YOLOE+搞定你的第一个检测项目

本文介绍了PP-YOLOE+在目标检测领域的优势与应用实践,对比YOLOv8展示其在精度、速度和部署便利性上的突破。通过详细的代码示例和实战教程,帮助开发者快速上手PaddleDetection工具链,实现产业级目标检测项目,提升开发效率。

weixin_42701915的博客 184

MySQL锁

MySQL的锁定主要分为全局锁、表锁和行锁全局锁是针对整个数据库的锁,全局锁又分为读锁和写锁。

z1696637434的博客 2186

功能安全入门:手把手教你用IEC 62380标准计算芯片失效率(附SN 29500对比)

本文深入解析了IEC 62380标准在芯片失效率计算中的应用,对比了SN 29500的差异,并提供了实战案例和避坑指南。通过详细的参数获取方法和分步计算演示,帮助功能安全工程师准确评估芯片可靠性,确保设计符合安全要求。特别适合汽车电子和工业控制领域的专业人士参考。

weixin_30363981的博客 313

数字后端:版图基础seal ring

seal ring结构是为了防止划片或封装对芯片造成破坏,从而在芯片与划片道(scribe line)之间添加的一圈保护环

m0_61544122的博客 1万+

mysql中锁(全局锁和表级锁)【mysql每日一讲】

mysql的锁 锁的作用:在并行多线程运行的情况下,制定的访问数据库的规则。 锁的分类1、全局锁:锁住整个库,锁定期间只能查询,不能更新 缺点:在业务繁忙的时候,不允许锁库。 全局锁主要用于备份数据库,而不影响对原库的业务访问。 InnoDB引擎,支持在可以更新的情况下,备份。mysqldum...

天蓬元帅的博客 218

Y-Branch and a closed y-branch loop

双臂后面的区域,我们将它的双臂使用一个波导进行了连接,使得它本身形成了一个闭合回路,因此,该结构被称作。它们均是用来对经过它们的光束能量进行分割的一种器件。首先,我们知道一点,在光波导层面,今天给大家介绍一下,什么是。

u011699626的博客 627

mysql备份怎么锁库_MySQL锁(一)全局锁:如何作全库的逻辑备份?

数据库锁设计的初衷是处理并发问题,这也是数据库与文件系统的最大区别。html根据加锁的范围,MySQL里大体能够分为三种锁:全局锁、表锁和行锁。接下来咱们会分三讲来介绍这三种锁,今天要讲的是全局锁。mysql全局锁全局锁,顾名思义,就是对整个数据库加锁。MySQL 提供了一个加全局读锁的方法,命令是 Flush tables with read lock(FTWRL)。sql全局锁典型的应用场景是...

weixin_39789101的博客 347

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

mysql备份怎么锁库_MySQL锁(一)全局锁:如何做全库的逻辑备份?

数据库锁设计的初衷是处理并发问题,这也是数据库与文件系统的最大区别。根据加锁的范围,MySQL里大致可以分为三种锁:全局锁、表锁和行锁。接下来我们会分三讲来介绍这三种锁,今天要讲的是全局锁。全局锁全局锁,顾名思义,就是对整个数据库加锁。MySQL 提供了一个加全局读锁的方法,命令是 Flush tables with read lock(FTWRL)。全局锁典型的应用场景是做全库的逻辑备份。通过F...

weixin_39553757的博客 172

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

1 mysql全库备份_MySQL锁(一)全局锁:如何做全库的逻辑备份?

数据库锁设计的初衷是处理并发问题,这也是数据库与文件系统的最大区别。根据加锁的范围,MySQL里大致可以分为三种锁:全局锁、表锁和行锁。接下来我们会分三讲来介绍这三种锁,今天要讲的是全局锁。全局锁全局锁,顾名思义,就是对整个数据库加锁。MySQL 提供了一个加全局读锁的方法,命令是Flush tables with read lock(FTWRL)。全局锁典型的应用场景是做全库的逻辑备份。通过F...

weixin_36236141的博客 276

Mysql系列之锁(10)

产生幻读的原因是,行锁只能锁住行,但是新插入记录这个动作,要更新的是记录之间的“间隙”。因此,为了解决幻读问题,InnoDB引入新的锁,也就是间隙锁(GapLock).在InnoDB事务中,行锁是在需要的时候才加上的,并且是要等到事务结束时才释放。幻读指的是一个事务在前后两次查询同一个范围的时候,后一次查询看到了前一次查询没有看到的行。坏处:间隙锁的引入,可能会导致同样的语句锁住更大的范围,会影响了并发度。假如有一个表t,六行记录,此时会有七个间隙,都会加锁。2.幻读仅专指“新插入的行”

zincooo的博客 90

【MySQL-25】万字总结<锁>——(全局锁&行级锁&表级锁)【共享锁,排他锁】【间隙锁,临键锁】【表锁,元数据锁,意向锁】

※锁的总结(前瞻)一.锁的概述&分类二.全局锁1.全局锁的基本概念&画图演示三.行级锁行级锁的基本概念&分类(行锁 = 临键锁-见隙锁)【1】【行锁】(共享锁,排他锁)1.共享锁,排他锁机制介绍2.不同SQL下,行锁的情况3.演示行锁【1】情况1【2】情况2【2】【临键锁S】【间隙锁】演示※【临键锁S】【间隙锁】特性演示目录1.演示:索引上的等值查询 (唯一索引,例如主键索引)2.演示:索引上的范围查询(唯一索引)3.演示:索引上的等值查询(普通索引)——临键锁退化为间隙锁四.表级锁表级锁的基本概念&分类【

YYDsis的博客 1039

MySQL-进阶篇-锁(全局锁、表级锁、行级锁)

MySQL-进阶篇-锁(全局锁、表级锁、行级锁)

聂可以的博客 8167

MySQL锁机制详解:从全局锁到行锁

全局锁就是对整个数据库实例加锁。锁定后,整个库处于只读状态,所有更新操作都会被阻塞。-- 加全局锁-- 简称 FTWRL-- 释放全局锁表锁是对整张表加锁,控制对表的并发访问。-- 加表级读锁(共享锁)-- 加表级写锁(排他锁)-- 释放表锁MDL锁(Metadata Lock)是MySQL自动管理的一类锁,用于保护表结构定义,防止在查询过程中表结构被修改。MDL读锁:当对表进行增删改查操作时,加MDL读锁MDL写锁:当对表结构进行变更操作时,加MDL写锁行锁。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 3161

【MySQL进阶篇】锁:全局锁、表级锁以及行级锁

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

2401_83283514的博客 2848

【MySQL】 锁-行级锁、表级锁、全局锁

全局锁、表级锁(- 表锁 - 元数据锁 - 意向锁)、行级锁(- 行锁- 间隙锁- 临建锁)

阿羊ing努力提供更好的Java日记〜 2274

MySQL 全局锁和表锁是什么

数据库锁设计的初衷是处理并发问题,作为多用户共享的资源,当出现并发访问的时候,数据库要合理地控制资源的访问规则,而锁就是用来实现这些访问规则的重要数据结构。 根据加锁的范围,MySQL 里面的锁大致可以分成全局锁、表级锁和行锁三类。 全局锁 全局锁就是对整个数据库实例加锁,MySQL 提供了一个加全局读锁的方法,命令是Flush tables with read lock(FTWRL)。当你...

Seina 4634

MySQL数据库的全局锁和表锁

1、概念 数据库锁设计的初衷是处理并发问题。作为多用户共享的资源,当出现并发访问的时候,数据库需要合理地控制资源的访问规则。而锁就是用来实现这些访问规则的重要数据结构。 2、锁的分类 根据加锁的范围,MySQL里面的锁大致可以分成全局锁、表级锁和行锁三类。 因为锁的设计比较复杂,所以这篇文章不会涉及到锁的具体实现细节,主要是介绍是碰到锁时的现象和背后的原理。 3、全局锁...

最怕一生碌碌无为,还安慰自己平凡可贵 2万+

MySQL的全局锁、表锁以及行锁(五)

一篇文章带你理清楚MySQL全局锁、表级锁以及行锁。

weixin_45620557的博客 1724
上一篇: Redis的分布式锁实现方案
下一篇: MySQL(二)锁 ----- 表锁
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值