MySQL中的共享锁和排他锁

MySQL 中的锁可以从多个维度进行分类,其中从模式上可以分为共享锁(Shared Lock,S Lock)和 排他锁(Exclusive Lock,X Lock)。

共享锁(Shared Lock,S Lock)

共享锁,也被称为读锁(Read Lock),共享锁保证了数据的共享读特性。

  • 允许多个事务同时对同一数据资源进行读取操作,即多个事务可以同时持有相同的共享锁,并发读取数据
  • 阻塞排他锁,即如果一个事务已经持有了共享锁,其他事务如果要获取排他锁,则需要等待共享锁释放。其实就是不允许任何事务对数据进行修改(因为修改数据要先加排它锁)
共享锁的加锁方式
  1. SELECT ... LOCK IN SHARE MODE
  2. SELECT ... FOR SHARE(MySQL 8.0 及以上版本)

排他锁(Exclusive Lock,X Lock)

  • 只能有一个事务持有排他锁,其他事务无法获取同样的记录上的排他锁。即只允许一个事务修改或删除某一行数据
  • 阻塞排他锁和共享锁,即如果一个事务已经持有了排他锁,其他事务无法获取共享锁或排他锁,其实就是不允许其他事务对该行数据进行加锁读取或修改(注意只是不能加共享锁或排他锁读取,但正常查询是快照读,这是可以的)
排它锁的加锁方式
  1. SELECT ... FOR UPDATE
  2. UPDATE语句
  3. DELETE 语句
相关推荐
solihawk几秒前
服务器内存被谁“偷”走了?
服务器·数据库
德彪稳坐倒骑驴37 分钟前
SQL连续登录问题
服务器·数据库·sql
葡萄城技术团队37 分钟前
告别臃肿 SQL:HR 系统如何实现“字段级”权限控制与动态脱敏方案?
数据库·sql
SQL必知必会1 小时前
SQL HAVING 是什么?一篇讲清 WHERE 和 HAVING 的区别
数据库·sql
weixin_568996061 小时前
c++如何实现日志文件的异步落盘功能_基于无锁队列方案【附代码】
jvm·数据库·python
tongyiixiaohuang1 小时前
技术案例分享:金蝶云星空客户数据同步到MySQL的实现
android·数据库·mysql
淘矿人1 小时前
2026年4月-DeepSeek V4 vs GPT-5.5深度对比测评:weelinking一键切换实测
服务器·数据库·人工智能·python·gpt·学习·php
运维全栈笔记1 小时前
K8S部署WordPress+MySQL:模块化YAML配置详解
服务器·mysql·docker·云原生·容器·kubernetes·服务发现
2401_831419442 小时前
CSS 悬停箭头闪烁下移问题的根源与稳定解决方案
jvm·数据库·python
reasonsummer2 小时前
【教学类-160-11】20260419 AI视频培训-练习011“豆包AI视频《佛源植语》+豆包图片风格:无(关键词:藏传唐卡)”
数据库·音视频·豆包