当前位置: 首页 > news >正文

MySQL锁分类

一、按锁的粒度划分

  1. 全局锁

    • 定义:锁定整个数据库实例,阻止所有写操作,确保数据备份一致性。
    • 加锁方式:通过FLUSH TABLES WITH READ LOCK实现,释放需执行UNLOCK TABLES
    • 应用场景:适用于全库逻辑备份,但会阻塞所有数据变更。
  2. 表级锁

    • 分类
  • 表锁:分为读锁(共享锁)和写锁(排他锁),由LOCK TABLES ... READ/WRITE显式控制。
  • 元数据锁(MDL) :自动在访问表时添加,防止表结构变更与读写冲突,事务提交后释放。
  • 意向锁:InnoDB特有,分为意向共享锁(IS)和意向排他锁(IX),用于快速判断表中是否有行级锁。
    • 特点:开销小、加锁快,但并发度低,易引发锁冲突。
    • 存储引擎支持:MyISAM仅支持表锁;InnoDB支持表锁与行锁。
  1. 行级锁
    • 实现机制:由InnoDB引擎支持,基于索引实现。若SQL未使用索引,行锁会退化为表锁。
    • 具体类型
  • 记录锁(Record Lock) :锁定单行记录。
  • 间隙锁(Gap Lock) :锁定索引记录间的间隙,防止其他事务插入数据。
  • 临键锁(Next-Key Lock) :记录锁+间隙锁的组合,锁定左开右闭的区间,解决幻读问题。
    • 特点:开销大、加锁慢,可能引发死锁,但并发度高。

二、按锁的属性划分

  1. 共享锁(S锁)

    • 定义:允许其他事务读取但禁止写入。
    • 加锁方式:通过SELECT ... LOCK IN SHARE MODESELECT ... FOR SHARE实现。
    • 应用场景:适用于多事务并发读取同一数据。
  2. 排他锁(X锁)

    • 定义:禁止其他事务读写锁定对象。
    • 加锁方式:通过SELECT ... FOR UPDATE或更新语句(如UPDATE)自动添加。
    • 应用场景:数据修改或需要独占访问的场景。

三、按加锁机制划分

  1. 悲观锁

    • 原理:假定并发冲突必然发生,操作前先获取锁(如共享锁或排他锁)。
    • 实现方式:通过数据库内置锁机制(如FOR UPDATE)实现。
  2. 乐观锁

    • 原理:假定冲突较少,通过版本号或时间戳校验数据是否被修改。
    • 实现方式:使用WHERE条件检查数据版本,若冲突则重试或回滚。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dtcms.com/a/44790.html

相关文章:

  • DeepSeek-R1 大模型实战:腾讯云 HAI 平台 3 分钟极速部署指南
  • react 父组件调用子组件方法:forwardRef + useImperativeHandle
  • BKA-CNN基于黑翅鸢算法优化卷积神经网络的数据多特征分类预测Matlab
  • Windows在多网络下指定上网接口
  • 【愚公系列】《Python网络爬虫从入门到精通》038-SQLite数据库
  • ELK接入SpringBoot【Docker Compose】
  • 存储对象(MySQL笔记第五期)
  • Vue3实现文件上传、下载及预览全流程详解(含完整接口调用)
  • javaScript-系统知识点【同步 和 异步】
  • ConcurrentHashMap
  • 第七章 activiti流程 “容器融合控制室”
  • 论合理利润空间促进社会繁荣
  • alibaba商品数据采集实战:Python接口调用+反爬策略破解(2025最新版)
  • fluent-ffmpeg 依赖详解
  • Mybatis做批量操作
  • ST-LINK端口连接失败,启动GDB server失败的问题处理方法,有效
  • python容器之常用操作
  • 为AI聊天工具添加一个知识系统 之127 详细设计之68 编程 核心技术:Cognitive Protocol Language 之1
  • openEuler环境下GlusterFS分布式存储集群部署指南
  • 【FL0086】基于SSM和微信小程序的垃圾分类小程序
  • OpenFeign:服务间通讯携带 Token 的实现
  • 本地大模型搭建与webui交互
  • 我和我的通义灵码
  • LeetCode:131. 分割回文串(DP Java)
  • 8 - PS XADC接口实验
  • Java 大视界 -- Java 大数据机器学习模型的可解释性增强技术与应用(107)
  • nist关于rsa中p,q的要求
  • 【数据挖掘】Pandas
  • 【开源免费】基于SpringBoot+Vue.JS网络海鲜市场系统(JAVA毕业设计)
  • 看得见摸得着的AI:具身智能