it编程 > 数据库 > Mysql

MySQL中的共享锁和排他锁及加锁方式

10人参与 2025-03-03 Mysql

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共享锁和排他锁内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

MySQL数据库连接数查询、配置简单示例代码

03-03

MySQL中的行级锁详解

03-03

mysql通过frm和ibd文件恢复表_mysql5.7根据.frm和.ibd文件恢复表结构和数据

03-03

MySQL InnoDB引擎ibdata文件损坏/删除后使用frm和ibd文件恢复数据

03-03

mysql8.0无备份通过idb文件恢复数据的方法、idb文件修复和tablespace id不一致处理

03-03

mysql线上查询之前要性能调优的技巧及示例

03-03

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论