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性能监控工具Innotop简介及配置

    mysql性能监控工具Innotop简介及配置

    INNOTOP是一个通过文本模式显示MySQL和InnoDB的监测工具。INNOTOP是用PERL语言写成的,这使它能更加灵活的使用在各种操作平台之上,它能详细的的监控出当前MYSQL和INNODB运行的状态,以DBA根据结果,可以合理的优化MYSQL,让MYSQL更稳定更高效的运行。
    2014-08-08
  • MySQL8.4实现RPM部署指南

    MySQL8.4实现RPM部署指南

    MySQL8.4是一个稳定和高性能的关系型数据库管理系统,本文主要介绍了MySQL8.4实现RPM部署指南,具有一定的参考价值,感兴趣的可以了解一下
    2024-06-06
  • MySQL主从复制的两种方式详解

    MySQL主从复制的两种方式详解

    主从复制是指将主数据库的 DDL 和 DML 操作通过二进制日志传到从库服务器中,然后在从库上对这 些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步,本文给大家详细介绍了MySQL主从复制的两种方式,需要的朋友可以参考下
    2025-09-09
  • MySQL数据时区问题以及datetime和timestamp类型存储的差异

    MySQL数据时区问题以及datetime和timestamp类型存储的差异

    这篇文章主要介绍了MySQL数据时区问题以及datetime和timestamp类型存储的差异,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • mysql居然还能实现分布式锁的方法

    mysql居然还能实现分布式锁的方法

    这篇文章主要介绍了mysql居然还能实现分布式锁的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • MySQL数据库远程访问权限如何打开(两种方法)

    MySQL数据库远程访问权限如何打开(两种方法)

    本文通过两种方法给大家介绍MySQL数据库远程访问权限的打开方法,非常不错,实用性非常高,感兴趣的朋友一起看看吧
    2016-05-05
  • MySQL中Binlog的完整格式解析(ROW 模式,默认)

    MySQL中Binlog的完整格式解析(ROW 模式,默认)

    本文介绍了MySQL 5.7中ROW格式的binlog的特性、解析方法和实战案例,包括MySQL 5.7的binlog核心特性、ROW格式binlog结构、解析命令、常见问题及解决方法等内容,需要的朋友可以参考下
    2026-03-03
  • mysql-8.0.15-winx64 使用zip包进行安装及服务启动后立即关闭问题

    mysql-8.0.15-winx64 使用zip包进行安装及服务启动后立即关闭问题

    这篇文章主要介绍了mysql 使用zip包进行安装以及服务启动后立即关闭问题 ,本实例使用的mysql版本为mysql-8.0.15-winx64,需要的朋友可以参考下
    2019-05-05
  • mysql5.6建立索引报错1709问题及解决

    mysql5.6建立索引报错1709问题及解决

    这篇文章主要介绍了mysql5.6建立索引报错1709问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • Mysql之SQL执行流程全面解析

    Mysql之SQL执行流程全面解析

    MySQL的执行流程包括查询缓存、解析器、优化器和执行器,首先,查询缓存检查是否存在查询结果,如果存在则直接返回;如果不存在,则进入解析器进行语法和语义分析,解析器将SQL语句转换为语法树,并进行词法和语法分析,接着,优化器确定最佳执行路径
    2024-12-12

最新评论