MySQL 锁分类

MySQL 锁分类

在 MySQL 中,为了保证并发性能和数据安全,有多种锁机制。我们常见的有表级锁和行级锁。让我们一起来学习 MySQL 中各种锁的知识。

表级锁

表级锁是对整张表进行锁定。

表数据锁

1. 读锁

允许多个会话同时读取同一张表的数据,但不允许其他会话对该表进行写操作。

例如: 多个用户可以同时查看同一份订单表,但任何用户都无法在查看时修改订单数据。

2. 写锁

只允许一个会话对表进行写操作,其他会话无法读取或写入该表。

例如: 当一个用户在对订单表进行结算操作时,其他用户无法同时对订单表进行任何操作,直到结算完成。

3. 意向锁

意向锁是一个标识位,用来表示某个事务对表中某一区域(如行或表)的意图进行锁定。当有其他事务要对表进行加锁时,不需要遍历整张表,只需检查意向锁的存在即可。

表结构锁

元数据锁(MDL)

MySQL 默认开启元数据锁,用来保护表结构的并发修改。当有线程修改表结构时,会进行加锁操作,防止其他线程同时修改表结构。

例如: 当一个用户在对表添加新列时,其他用户无法同时修改表的其他结构,以确保表结构修改的安全性。

行级锁

行级锁允许同时操作表中的多行数据,提高了并发处理能力。

1. 共享锁(S 锁)

共享锁用于读取操作,多个线程可以同时持有共享锁,但阻止其他线程获取排他锁,保证数据读取的一致性。

例如: 多个用户可以同时读取订单表中的订单信息,但不允许任何用户在读取时修改订单数据。

2. 排他锁(X 锁)

排他锁用于写入操作,只允许一个线程持有排他锁,其他线程无法同时持有共享锁或排他锁,保证数据的独占性。

例如: 当一个用户在对订单表中的订单进行修改时,其他用户无法同时读取或修改同一订单数据,直到修改完成。

特殊行锁

1. 间隙锁

间隙锁用于锁定数据索引之间的间隙,防止其他事务在间隙内插入新数据,保证查询结果的一致性。它只影响索引间隙,而不锁定已有数据行。

例如: 当一个事务使用范围查询锁定某些订单号的索引间隙时,其他事务无法在这些订单号的索引间隙内插入新订单。

2. 临键锁

临界锁是行锁和间隙锁的结合体,既锁定特定行数据,也锁定其索引间隙,确保在操作过程中数据的完整性和一致性。

例如: 当一个事务锁定了某个订单的具体行数据及其订单号的索引间隙时,确保其他事务无法同时插入新订单或修改现有订单。

如何更安全的为表更新表结构?

当一个生产环境表需要更新表结构时,会引起MDL(元数据)锁,若此表有大量业务查询,将会影响其他业务使用,长时间等待连接阻塞,可以使用为更新表结构语句设置等待时间方式,阻塞时间过长则放弃,人为更新其结构,避免过度影响线上

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

大模型时代的目标检测

https://zhuanlan.zhihu.com/p/663703934https://zhuanlan.zhihu.com/p/6637039341.open set/open word/ood 这个任务是指在实际应用上可以检测任何前景物体,但是有些不需要预测类别,只要检测出框就行。在很多场合也有应用场景,有点像类无关…

HyperSD - 会画草图就能玩AI绘画,AI一键手绘,实时同步 本地一键整合包下载

字节跳动的Lightning团队发布的新图像模型蒸馏算法Hyper-SD,是一项在图像处理和机器学习领域的重要进展。这项技术通过创新的方法提升了模型在不同推理步骤下的性能,同时保持了模型大小的精简。 基于这个算法模型,一个很实用的功能出现了&am…

知识图谱入门笔记

自学参考: 视频:斯坦福CS520 | 知识图谱 最全知识图谱综述 详解知识图谱的构建全流程 知识图谱构建(概念,工具,实例调研) 一、基本概念 知识图谱(Knowledge graph):由结…

本地部署,MODNet 背景去除大模型

目录 摘要 引言 MODNet 架构 关键组件 技术原理 本地部署 运行结果 结论 GitHub - ZHKKKe/MODNet: A Trimap-Free Portrait Matting Solution in Real Time [AAAI 2022]A Trimap-Free Portrait Matting Solution in Real Time [AAAI 2022] - ZHKKKe/MODNethttps://gith…

【Linux】软件管理工具 yum

文章目录 概念搜索:yum list安装:yum install卸载:yum remove 概念 在Linux下安装软件,可以下载到程序的源代码,进行编译得到可执行程序,另外这些软件还有依赖其它工具的问题,还得下载编译这些依…

鸿蒙小练习

bean对象 export class BannerImage{id:numberurl:stringtargetUrl:stringproductId:numberconstructor(id: number, url: string, targetUrl: string, productId: number) {this.id idthis.url urlthis.targetUrl targetUrlthis.productId productId} }export class d…

嵌入式应用开发之模块驱动移植教程

前言:本篇主要面向小白的小伙伴,提供一些基础的模块移植教程,不涉及预处理指令类的移植教程。 #为什么要移植驱动 这个问题,可以来说是显而易见的,在标准库的开发过程中,如果重新写一个模块的驱动,从串行通…

Autosar Dcm配置-0x28服务ComControl-基于ETAS软件

文章目录 前言DcmDcmDsdDcmDspBswMBswMModeRequestPortBswMModeConditionBswMLogicalExpressionBswMActionBswMActionListBswMRule总结前言 0x28服务主要用来控制非诊断报文的通讯,一般在刷写预编程过程中,用来禁止APP的通信报文,可以减少总线负载率,提高刷写成功率。本文…

【Orange Pi AI Pro】开箱体验完,发现是真的强!!!

最近香橙派联合华为出了一款新的AI开发板——Orange Pi AI Pro,关键是搭载了昇腾AI处理器提供了8TOPS INT8的算力,作为一个嵌入式的CSDN博主,当然得体验一下这款新产品。 文章目录 1 开箱2 硬件介绍2.1 开发板硬件详情:2.2 顶层视…

分享浏览器被hao123网页劫持,去除劫持的方式

昨天看python相关的自动化工作代码时,发现谷歌浏览器被hao123劫持了,把那些程序删了也不管用 方法1:删除hao123注册表,这个方式不太好用,会找不到注册表 方法2:看浏览器快捷方式的属性页面,一…

keil5新建stm32工程的基本

1、建立工程文件夹,keil中新建工程,选择型号; 2、工程文件夹里建立自己所需要的文件夹等,复制固件库里面的文件到工程文件夹里; 3、将工程里建立对应的同名的分组,并将文件夹内的文件添加到工程分组中。 点…

MQTT——Mosquitto使用(Linux订阅者+Win发布者)

前提:WSL(Ubuntu22)作为订阅者,本机Win10作为发布者。 1、Linux安装Mosquitto 命令行安装。 sudo apt-get install mosquitto 以上默认只安装了mosquitto的服务,不带测试客户端工具mosquitto_sub和mosquitto_pub。如…

IC5000_IC5700 License激活步骤

文章目录 前言连接硬件License RequestLicense Progam 前言 用过的调试器除了Lauterbach之外,iSystem的应该是比较好用的,比Lauterbach也便宜一些。本文介绍IC5000的License激活说明,前提是正版采购了IC5000及对应的license 连接硬件 电源…

鸿蒙瀑布流和欢迎页(1)

1.瀑布流 https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-container-waterflow.md他有官网文档,有个瀑布流的案例 自定义一类实现官方瀑布流接口 // WaterFlowDataSource.ets// 实现IDataSource接口的…

开源项目:机遇与挑战共存的创新之路

开源项目:机遇与挑战共存的创新之路 开源(Open Source,开放源码)被非盈利软件组织(美国的Open Source Initiative协会)注册为认证标记,并对其进行了正式的定义,用于描述那些源码可以…

安全防御---防火墙实验1

安全防御—防火墙实验1 一、实验拓扑与要求 要求: 1、DMZ区内的服务器,办公区仅能在办公时间内(9:00-18:00)可以访问,生产区的设备全天可以访问 2、生产区不允许访问互联网,办公区和游客区允许访问互联网 …

6-7 宠物领养开发及相关代码

6-7 宠物领养开发及相关代码(react区块链实战) 来到ant-design https://ant.design/index-cn https://ant.design/components/layout-cn/ 来到布局 选择一个简单的布局即可 会显示出所有的相关界面的代码 根据对应界面的代码在我们的react项目woniu-…

Vagrant配合VirtualBox搭建虚拟机

目录 前言一、软件下载及安装1.下载2.安装扩展: 二、创建一个虚拟机1.Vagrant官方镜像仓库 三、使用远程工具连接虚拟机1.修改相关配置文件 四、虚拟机克隆及使用1.通用配置2.简单搭建一个java环境3.克隆虚拟机1.重命名虚拟机(可选)2.打包指定…

【精品资料】数字乡村一体化解决方案(45页PPT)

引言:数字乡村一体化解决方案是响应国家乡村振兴战略,依托现代信息技术和数字经济理念,对乡村进行全面改造和升级的综合框架。该方案旨在通过数字化手段,推动乡村产业、治理、文化、教育、医疗等领域的协同发展,实现乡…

离线下载linux mysql和mysql基本库

下载地址:https://dev.mysql.com/downloads/mysql/ 选择数据库版本,系统,系统版本信息 下载需要的rpm包,传入服务器,使用yum install xxx.rpm安装即可 mysql-community下载地址 https://dev.mysql.com/downloads/my…