登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
1
2
/ 2 页
下一页
返回列表
首页
›
业界区
›
安全
›
MySQL 06 全局锁和表锁:给表加个字段怎么有这么多阻碍 ...
MySQL 06 全局锁和表锁:给表加个字段怎么有这么多阻碍?
[ 复制链接 ]
闻人莹华
2025-9-25 21:06:43
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
根据加锁的范围,MySQL里面的锁大致可以分成
全局锁、表级锁和行锁
三类,本文先讨论前两种。
全局锁
全局锁是对整个数据库实例加锁,MySQL提供的加全局读锁的命令是Flush tables with read lock(下面简称FTWRL)。当需要让
整个库处于只读状态
时,可以使用这个命令,之后其他线程的以下语句会被阻塞:数据的增删改、数据定义语句(表的建立与修改等)、更新类事务的提交语句。
全局锁的典型使用场景是
全库逻辑备份
,即把库中每个表都select出来存成文本。
让整个库都处于只读,有些弊端:
若在主库上备份,那么在备份期间都不能执行更新,业务会停滞;
若在从库上备份,那么备份期间从库不能执行主库同步过来的binlog,导致主从延迟。
那么既然备份加锁有这么多弊端,是否可以不加锁呢?
答案是不行的,考虑有用户余额表和订单表两张表,当用户发起一次购买,需要在用户余额表扣减余额,在订单表里增加一笔订单。若顺序是先备份用户余额表,然后用户购买,再备份订单表,不难发现会出现问题,顺序反之亦然。
官方自带的逻辑备份工具是mysqldump,当mysqldump使用参数single-transaction,在导数据之前就会启动一个事务,拿到一致性的视图。由于MVCC的支持,这个备份过程中数据可以正常更新。
那既然官方有这个工具,为什么需要FTWRL呢?答案是有些引擎并不支持可重复读的隔离级别,这时候必须使用FTWRL命令。因此,只有
所有表都使用事务引擎的库
才能使用single-transaction。
还有一种想法是,为了让全库只读,使用set global readonly=true的方式。但还是建议使用FTWRL,原因如下:
在有些系统中,readonly的值会被用作其他逻辑,比如判断库是主库还是从库。
在异常处理机制上,如果执行FTWRL命令之后由于客户端发生异常断开,那么MySQL会自动释放这个全局锁,整个库回到可以正常更新的状态。而将整个库设置为readonly之后,如果客户端发生异常,则数据库会一直保持该状态,导致整个库长时间处于不可写状态,风险较高。
表级锁
这里介绍两种表级别的锁,一种是表锁,一种是元数据锁。
表锁的语法是lock tables … read/write,可以用unlock tables主动释放锁,也可以在客户端断开时自动释放锁。表锁除了限制其他线程的读写,
也限制本线程接下来的操作
。
在没有出现更细粒度的锁的时候,表锁是最常用的处理并发的方式。对于InnoDB这种支持行锁的引擎,一般不使用lock tables来控制并发。
元数据锁(MDL)不需要显式使用,在访问一个表的时候会被自动加上。其作用是保证读写的正确性。MDL在MySQL 5.5版本引入,当对一个表做增删改查时,会加MDL读锁;当要对表做结构变更操作时,会加MDL写锁。
读锁不互斥,因此可以有多个线程同时对一张表增删改查。
读写锁、写锁之间互斥,用来保证变更表结构操作的正确性。
要注意的是,事务中的MDL锁,在语句执行开始时申请,但语句结束后
并不会马上释放
,而会
等到整个事务提交后释放
。考虑下面这样一个例子:
首先事务启动,然后session A会对表t加一个MDL读锁,由于session B需要的也是读锁,第二条查询语句也能正常执行。但之后session C会被阻塞,因为前面的读锁还没释放,而session C需要写锁。当session C阻塞,之后只需要读锁的请求也都会被阻塞,等同于这张表此时完全不可读写。
如果某张表上查询语句频繁,而客户端有重试机制,即超时后再起session请求,那么在上述情况下库的线程很快就会爆满。
基于以上分析,考虑一个场景,假设要对一张小表加字段,这张表数据量不大,但是请求很频繁,该怎么做?
此时因为请求频繁,不能简单kill事务。比较好的方法是,在alter table语句里设置等待时间,如果在等待时间里能拿到MDL写锁就进行修改,拿不到也不阻塞后面的业务语句,先放弃修改,之后开发人员人工介入。
目前已有相应的语句:
ALTER TABLE tbl_name NOWAIT add column ...
ALTER TABLE tbl_name WAIT N add column ...
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
MySQL
全局
表锁
表加个
字段
相关帖子
.wman扩展名勒索mysql数据库恢复
MyBatis-plus拓展之字段类型处理器、自动填充和乐观锁等(完结)
Mysql + Keepalived 高可用架构(防脑裂版)
MySQL InnoDB表必须有主键,并且推荐整型自增
MySQL不推荐使用UUID等字符串做主键
MySQL如何修改组复制通信栈(Communication Stack)
【转】还在为文献综述发愁?9个斯坦福博士级提示词,让导师拍案叫绝的全局思维
揭秘MySQL索引分类
MySQL备份恢复全攻略:mysqldump与xtrabackup实战(DBA救命指南)
Mysql的行级锁到底是怎么加的?
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
安全
.wman扩展名勒索mysql数据库恢复
0
265
缑娅瑛
2026-03-09
业界
MyBatis-plus拓展之字段类型处理器、自动填充和乐观锁等(完结)
0
485
赖琳芳
2026-03-12
安全
Mysql + Keepalived 高可用架构(防脑裂版)
0
25
懵诬哇
2026-03-12
安全
MySQL InnoDB表必须有主键,并且推荐整型自增
0
349
仟仞
2026-03-15
业界
MySQL不推荐使用UUID等字符串做主键
0
615
司寇涵涵
2026-03-15
安全
MySQL如何修改组复制通信栈(Communication Stack)
0
44
龙正平
2026-03-19
安全
【转】还在为文献综述发愁?9个斯坦福博士级提示词,让导师拍案叫绝的全局思维
0
918
恶凝毛
2026-03-21
业界
揭秘MySQL索引分类
0
902
瞪皱炕
2026-03-24
安全
MySQL备份恢复全攻略:mysqldump与xtrabackup实战(DBA救命指南)
0
860
峰邑
2026-03-25
业界
Mysql的行级锁到底是怎么加的?
0
600
兑谓
2026-03-26
回复
(24)
材部
2025-11-2 05:05:46
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
收藏一下 不知道什么时候能用到
秦晓曼
2025-11-19 21:41:01
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
谢谢楼主提供!
啦汇
2025-11-23 06:19:53
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
谢谢楼主提供!
窟聿湎
2025-12-21 05:22:38
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
谢谢分享,辛苦了
昆拗干
2026-1-5 20:51:23
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
这个有用。
铜坠匍
2026-1-20 23:41:05
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
谢谢分享,试用一下
官厌
2026-1-21 08:00:14
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
过来提前占个楼
利怡悦
2026-1-23 05:37:04
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
不错,里面软件多更新就更好了
阎一禾
2026-1-24 10:23:43
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
感谢发布原创作品,程序园因你更精彩
狞嗅
2026-1-25 08:02:02
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
新版吗?好像是停更了吧。
幌斛者
2026-1-26 10:20:03
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
新版吗?好像是停更了吧。
南宫玉英
2026-1-28 08:31:01
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
鼓励转贴优秀软件安全工具和文档!
赐度虻
2026-1-30 05:20:21
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
不错,里面软件多更新就更好了
杭环
2026-1-30 08:21:49
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
分享、互助 让互联网精神温暖你我
周冰心
2026-2-8 02:10:55
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
yyds。多谢分享
套缈
2026-2-8 13:18:05
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
谢谢分享,试用一下
公西颖初
2026-2-11 02:32:50
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
分享、互助 让互联网精神温暖你我
决任愧
2026-2-11 11:41:22
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
热心回复!
里豳朝
2026-2-12 01:57:47
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
热心回复!
下一页 »
1
2
/ 2 页
下一页
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
业界
签约作者
程序园优秀签约作者
发帖
闻人莹华
2026-2-12 01:57:47
关注
0
粉丝关注
20
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
3934307807
991125
anyue1937
9994892
kk14977
6845359
4
xiangqian
638210
5
神泱
9522
6
韶又彤
9916
7
宋子
9878
8
荪俗
9018
9
闰咄阅
9995
10
蓬森莉
9870
查看更多
今日好文热榜
644
多租户下的系统业务开发过程探讨
421
给OpenClaw泼泼凉水降降温
912
给Xcode使用完整版本的swiftformat
169
集成AI 的 Redis 客户端 Rudist发布新版了
821
AI三问:如何直面新一轮技术浪潮
193
macos简单配置openclaw
171
详细解析Spring如何解决循环依赖问题
591
AI 时代,计算机专业学生该怎么学?
761
AI三问:如何直面新一轮技术浪潮
858
AI三问:如何直面新一轮技术浪潮
810
大学生找工作必备!这个免费简历网站太香了
735
大学生找工作必备!这个免费简历网站太香了
693
P3DE (Processing 3D Editor) 三维场景编辑
194
服务器遭遇 XMRig 挖矿程序入侵排查与清理
106
OpenClaw 多智能体路由方案实现不同业务处
641
4.Acwing基础课第788题-简单-逆序对的数量
735
OpenClaw 多智能体路由方案实现不同业务处
535
【节点】[SplitTextureTransform节点]原理
890
【节点】[SplitTextureTransform节点]原理
22
AI Coding逐步引导式开发,从零到一生成完