一、按照粒度分类:

粒度越小,并发度越高,锁开销越大。

1.全局锁:

  • 作用: 锁定整个MySQL实例(所有数据库)。
  • 适用场景: 全库逻辑部分。(确保备份期间数据的一致性。)
  • 实现方式: 通过 FLUSH TABLES WITH READ LOCK (FTWRL) 命令实现,加锁后所有表变为只读,更新、删除、插入等操作会被阻塞。
  • 注意:InnoDB可通过 mysqldump --single-transaction 结合事务隔离级别避免使用全局锁(利用MVCC实现一致性读)。

2.表级锁:

作用: 锁定整个表,粒度较大,并发度低,但锁开销较小。

  • 适用场景: MyISAM存储引擎默认锁机制(InnoDB也支持,但更常用行锁),适合读多写少的场景。

  • 类型:

    • 表读锁: 多个事务可以加读锁,允许读表,但阻塞写操作(包括加写锁)。
    • 表写锁: 一个事务加锁后,独占表阻塞其他所有读锁和写锁。
  • 特点: MyISAM写锁优先级高于读锁,可能导致读请求饿死(一直等待写锁释放)。

3.行级锁:

  • 作用: 锁定单行记录,粒度最小,并发度最高,锁开销最大。
  • 适用场景: InnoDB存储引擎的核心锁机制,适合写操作频繁的场景(如电商订单、库存更新)。
  • 类型:
    • 行读锁: 事务对某行加读锁后,其他事务可以加读锁,但不能加写锁。
    • 行写锁: 事务对某行加锁后,其他事务不能加读锁或写锁。
  • 特点:InnoDB的行锁基于索引实现,若查询未命中索引,会升级为表锁。

二、按锁的功能划分:

1.共享锁(Shared Lock,S锁):

  • 又称: 读锁。
  • 特性: 多个事务可以同时持有同一资源的S锁,允许读操作,但阻塞写操作(X锁)。
  • 加锁方式:SELECT ... LOCK IN SHARE MODE (InnoDB 中,显式加读锁)。

2.排他锁(Exclusive Lock X锁):

  • 又称写锁。
  • 特性:一个事务持有X锁后,其他事务不能持有该资源的S锁或X锁,独占资源用于写操作。
  • 加锁方式SELECT ... FOR UPDATE;(InnoDB 中,显式加写锁);默认情况下,UPDATE/DELETE/INSERT 会自动加 X 锁。

三、InnoDB特有的锁(基于事务和索引):

1.意向锁:

  • 作用: 表级锁,用于标识”事务稍后会对表中的行加S锁或X锁“,避免表锁与行锁的冲突检查效率问题。
  • 类型:
    • 意向共享锁(Intention Shared Lock IS锁): 事务计划对表中的某些行加S锁,加行S锁前需要先加IS锁。
    • 意向排他锁(IX锁): 事务计划对表中的某些行加X锁,加行X锁前需要先加IX锁。

2.记录锁:

  • 作用: 锁定索引记录本身(具体某一行),防止其他事务修改或删除该记录。
  • 示例: WHERE id=10 id是主键,InnoDB会锁定id=10的这一行。

3.间隙锁:

  • 作用:锁定索引记录之间的"间隙",不包括记录本身,防止其他事务在间隙中插入新纪录。(解决"幻读"问题)。
  • 适用场景:InnoDB的RR隔离级别(默认级别)。
  • 示例:表中id=5、10,WHERE id BETWEEN 5 AND 10 ,会锁定(5,10)之间的间隙,阻止插入id=6、7等记录。

4.临建锁:

  • 作用记录锁+间隙锁的组合,锁定索引记录以及前面的间隙(左开右闭),是InnoDB RR级别下默认的行锁方式。
  • 示例:表中id=5、10,WHERE id=10会锁定 (5,10] 区间。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/91710.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/91710.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/91710.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

语义分割--deeplabV3+

根据论文网络结构图讲一下:网络分为两部分:encoder和decoder部分。 Encoder:DCNN就是主干网络,例如resnet,Xception,MobileNet这些(主干网络也要使用空洞卷积),对dcnn的结…

Azure DevOps 中的代理

必知词汇 深入研究 Azure DevOps 中的代理之前需要掌握的基本概念: 代理:Azure DevOps 中的代理是一个软件组件,负责执行流水线中的任务和作业。这可能包括数据中心内的物理服务器、本地或云端托管的虚拟机,甚至是容器化环境。这些代理可以在各种操作系统和环境中运行,例如…

AUTOSAR进阶图解==>AUTOSAR_SRS_ADCDriver

AUTOSAR ADC驱动详解 基于AUTOSAR标准的ADC驱动模块需求规范分析目录 ADC驱动模块概述 关键概念定义 ADC驱动架构 ADC驱动在AUTOSAR分层架构中的位置ADC驱动的主要职责 ADC驱动配置结构 通用配置(AdcGeneral)硬件单元配置(AdcHwUnit)通道配置(AdcChannel)通道组配置(AdcChanne…

宝马集团与SAP联合打造生产物流数字化新标杆

在德国雷根斯堡的宝马工厂,每57秒就有一辆新车下线。这座工厂不仅是汽车制造的基地,更是宝马集团向SAP S/4HANA云平台转型的先锋项目。通过“RISE with SAP”计划,宝马将该工厂的运营系统全面迁移至SAP S/4HANA Cloud Private Edition&#x…

Go 语言实战:构建一个高性能的 MySQL + Redis 应用

引言:为什么是 Go MySQL Redis?在现代后端技术栈中,Go MySQL Redis 的组合堪称“黄金搭档”,被广泛应用于各种高并发业务场景。Go 语言:以其卓越的并发性能、简洁的语法和高效的执行效率,成为构建高性能…

Excel超级处理器,多个word表格模板中内容提取到Excel表格中

在职场中,很多人习惯在word里插入表格,设计模板,填写内容,一旦有多个word文件需要整理在excel表格中,最常见的工作方式就是每个word文件打开,复制,粘贴到excel表格里,这样的工作方式…

前端工程化:ES6特性

本文为个人学习笔记整理,仅供交流参考,非专业教学资料,内容请自行甄别 文章目录一、let与var1.1、越狱问题1.2、变量的重复声明1.3、变量提升问题二、解构2.1、数组解构2.2、对象解构2.3、方法解构三、链判断四、参数默认值五、箭头函数六、模…

大屏项目展示

一、项目克隆与基础操作 我们参考的项目 互联网设备可视化平台---IofTV-Screen: 🔥一个基于 vue、datav、Echart 框架的物联网可视化(大屏展示)模板,提供数据动态刷新渲染、屏幕适应、数据滚动配置,内部图表自由替换、Mixins注入等功能,持续更新.... 将次项目克隆到本…

基于R语言地理加权回归、主成份分析、判别分析等空间异质性数据分析实践技术应用

在自然和社会科学领域有大量与地理或空间有关的数据,这一类数据一般具有严重的空间异质性,而通常的统计学方法并不能处理空间异质性,因而对此类型的数据无能为力。以地理加权回归为基础的一系列方法:经典地理加权回归,…

【Flask 基础 ①】 | 路由、参数与模板渲染

0 序言 Flask 是 Python 生态中一款轻量级 Web 框架,以简洁、灵活著称。 学习 Flask 的意义在于: 快速开发:通过少量代码即可搭建功能完整的 Web 应用;理解原理:其设计清晰体现了 Web 框架的核心逻辑,如路由…

wordpress登陆前登陆后显示不同的顶部菜单

在WordPress中让“未登录”和“已登录”用户看到不同的顶部菜单,最干净、最安全、最可维护的做法是: 在同一个菜单位置(themelocation)里,根据is_user_logged_in()动态切换菜单。 下面给出三种常见实现方式,按推荐程度排序。任选…

【昇腾推理PaddleOCR】生产级部署方式

已知的在昇腾上推理Paddle OCR有三种方法: 概要: PyTorch官方提供了昇腾插件包,安装后虽然可以支持PytorchOCR和PaddlePaddle的推理任务,但性能较低。换句话说,PaddlePaddle框架层面支持了昇腾,但具体到某个…

LangChain摘要记忆组件的使用与解析

01. 摘要记忆组件的类型 在 LangChain 中使用缓冲记忆组件要不就保存所有信息(占用过多容量),要不就保留最近的记忆信息(丢失太多重要信息),那么有没有一种情况是既要又要呢? 所以折中方案就出…

NAT与智能选路

1、NAT 基础概念核心作用:私网地址无法在 Internet 上直接使用和分配,NAT 通过将私有地址与公有地址及端口进行转换,实现私网与公网的通信。转换示例:内网用户(10.1.1.1)访问外网 FTP Server(12…

【05】VisionMaster入门到精通——圆查找

文章目录1 运行参数先检测出多个边缘点然后拟合成圆形,可用于圆的定位与测量 1 运行参数 先检测出多个边缘点然后拟合成圆形,可用于圆的定位与测量——运行参数 扇环半径——圆环ROI的内外圆半经; 边绿类型 最强——只检测扫描范围内梯度最…

p5.js 用 beginGeometry () 和 endGeometry () 打造自定义 3D 模型

点赞 关注 收藏 学会了 在 p5.js 的 3D 绘图中,这两个函数是一对 “黄金搭档”: beginGeometry():像一个 “3D 模型的开关”,调用它之后,你画的所有简单 3D 形状(比如球体、圆锥)都会被 “…

(9)NMPC非线性模型预测控制及机械臂ROS控制器实现

前言 本篇介绍Nonlinear Model Predictive Control,非线性模型预测控制,MPC是一种现代先进的控制方法,而NMPC特指对非线性模型的控制,其核心思想是在每个控制周期内利用系统的非线性模型及损失函数,预测未来一段时间内…

达梦数据库备份与还原终极指南:从基础到增量策略实战

第一部分:备份与还原核心原理 一、备份还原本质解析数据存储机制 数据存储在物理文件页中(最小单位4K-32K)有效数据页 文件描述页 已分配使用页日志优先原则:操作先写REDO日志再更新数据文件三大核心操作操作作用关键特性备份复…

设计模式篇:在前端,我们如何“重构”观察者、策略和装饰器模式

设计模式篇:在前端,我们如何“重构”观察者、策略和装饰器模式 引子:代码里“似曾相识”的场景 作为开发者,我们总会遇到一些“似曾相识”的场景: “当这个数据变化时,我需要通知其他好几个地方都更新一…

Node.js 服务可以实现哪些功能

以下是 Node.js 服务可以实现的 100 个功能,涵盖 Web 开发、工具链、系统集成、自动化等方向,按类别分类整理:一、Web 开发相关 RESTful API 服务GraphQL 服务实时聊天应用(WebSocket/Socket.IO)博客/CMS 系统电子商务…