MySQL中的共享锁和排他锁及加锁方式
更新时间:2025年03月03日 09:43:07 作者:WannaRunning
文章介绍了MySQL中的共享锁(SLock)和排他锁(XLock)两种类型,包括它们的定义、特点和加锁方式,共享锁允许多个事务同时读取同一数据资源,而排他锁则只允许一个事务修改或删除某一行数据,并且会阻塞其他事务对同一数据资源的访问,感兴趣的朋友一起看看吧
MySQL 中的锁可以从多个维度进行分类,其中从模式上可以分为共享锁(Shared Lock,S Lock)和 排他锁(Exclusive Lock,X Lock)。
共享锁(Shared Lock,S Lock)
共享锁,也被称为读锁(Read Lock),共享锁保证了数据的共享读特性。
- 允许多个事务同时对同一数据资源进行读取操作,即多个事务可以同时持有相同的共享锁,并发读取数据
- 阻塞排他锁,即如果一个事务已经持有了共享锁,其他事务如果要获取排他锁,则需要等待共享锁释放。其实就是不允许任何事务对数据进行修改(因为修改数据要先加排它锁)
共享锁的加锁方式
SELECT ... LOCK IN SHARE MODE SELECT ... FOR SHARE(MySQL 8.0 及以上版本)
排他锁(Exclusive Lock,X Lock)
- 只能有一个事务持有排他锁,其他事务无法获取同样的记录上的排他锁。即只允许一个事务修改或删除某一行数据
- 阻塞排他锁和共享锁,即如果一个事务已经持有了排他锁,其他事务无法获取共享锁或排他锁,其实就是不允许其他事务对该行数据进行加锁读取或修改(注意只是不能加共享锁或排他锁读取,但正常查询是快照读,这是可以的)
排它锁的加锁方式
SELECT ... FOR UPDATE UPDATE语句 DELETE 语句
到此这篇关于MySQL中的共享锁和排他锁的文章就介绍到这了,更多相关mysql共享锁和排他锁内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
mysql 中 replace into 与 insert into on duplicate key update 的
这篇文章主要介绍了mysql 中 replace into 与 insert into on duplicate key update 的用法和不同点,结合实例形式分析了replace into 与 insert into on duplicate key update的功能、基本用法与操作注意事项,需要的朋友可以参考下2020-02-02
Windows7下安装使用MySQL8.0.16修改密码、连接Navicat问题
这篇文章主要介绍了Windows7下安装使用MySQL8.0.16修改密码、连接Navicat问题,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下2019-06-06
mysql连接数设置操作方法(Too many connections)
下面小编就为大家带来一篇mysql连接数设置操作方法(Too many connections)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧2017-03-03


最新评论