【MySQL】锁篇

SueWakeup

                                                      个人主页:SueWakeup

                                                      系列专栏:学习技术栈

                                                      个性签名:保留赤子之心也许是种幸运吧 

本文封面由 凯楠📸友情提供

目录

本系列专栏

 1. MySQ 中的锁

2. 表锁和行锁

表锁

行锁

3. InnoDB 存储引擎的三种行级锁

4. 悲观锁和乐观锁的区别

悲观锁

乐观锁

注:手机端浏览本文章可能会出现 “目录”无法有效展示的情况,请谅解,点击侧栏目录进行跳转   


本系列专栏

1.数据库排名

2.【MySQL】数据库开篇

3.【MySQL】索引篇

4.【MySQL】事务篇

5.【MySQL】锁篇


 1. MySQ 中的锁

锁的分类描述
按属性分类
  • 共享锁(读锁、S锁)
  • 排他锁(写锁,X锁)
按粒度分类
  • 表锁
  • 行锁(记录锁、间隙锁、临键锁)
按状态分类
  • 意向共享锁
  • 意向排它锁

2. 表锁和行锁

表锁

  1. MySQL中锁定粒度最大的一种锁
  2. 实现简单,资源消耗少,加锁快,不会出现死锁
  3. 触发锁冲突概率高,并发度最低

行锁

  1. MySQL中粒度最小的一种锁
  2. 只针对当前操作的行进行加锁,大大减少数据库操作的冲突
  3. 加锁的开销大,加锁慢,会出现死锁
  4. 加锁粒度最小,并发度高

3. InnoDB 存储引擎的三种行级锁

  • Record lock:记录锁,单个行记录上的锁
  • Gap lock:间隙锁,锁定一个范围,不包括记录本身
  • Next-key lock:Record+Gap 临键锁,锁定一个范围,包含记录本身

4. 悲观锁和乐观锁的区别

悲观锁

总是假设最坏的情况,每次读取数据都默认其他事务会修改数据,会进行加锁操作,操作之后释放锁

乐观锁

一般情况不会造成冲突,在数据进行提交更新时,才会对数据的冲突与否进行检查,一般是通过版本号控制,适用于读多写少的场景


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

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

相关文章

文心一言 VS 讯飞星火 VS chatgpt (234)-- 算法导论17.2 2题

二、用核算法重做练习17.1-3。练习17.1-3的内容是:假定我们对一个数据结构执行一个由 n 个操作组成的操作序列,当 i 严格为 2 的幂时第 i 个操作的代价为 i ,否则代价为1。使用聚合分析确定每个操作的摊还代价。 文心一言: 练习…

【树莓派初始化】教你从0开始搭建树莓派的使用环境

文章目录 前言1.什么是树莓派?1.1什么用户适合购买树莓派学习编程? 2.如何初始化一个树莓派2.1 烧录系统2.2 测试开机2.3 设置树莓派显示输出的分辨率2.4 网络链接2.5 Putty链接树莓派2.6 VNC链接树莓派2.7 使用filezilla软件传输文件到树莓派 3.使用Xsh…

实现创建线程的五种写法

创建线程的五种写法 1、通过继承Thread类并实现run方法创建一个线程package 创建线程;2、通过实现Runnable接口,并实现run方法的方法创建一个线程3、通过Thread匿名内部类创建一个线程4、通过Runnable匿名内部类创建一个线程5、通过Lambda表达式的方式创建一个线程 …

【OpenVINO™】使用 OpenVINO™ C# API 部署 YOLOv9 目标检测和实例分割模型(上篇)

YOLOv9模型是YOLO系列实时目标检测算法中的最新版本,代表着该系列在准确性、速度和效率方面的又一次重大飞跃。它通过引入先进的深度学习技术和创新的架构设计,如通用ELAN(GELAN)和可编程梯度信息(PGI)&…

AWS游戏全球智能翻译,助力企业出海

随着全球数字化时代的到来,游戏行业已经成为跨越国界、语言和文化的强大力量。然而,要将游戏产品成功推向全球市场并确保用户体验的流畅与愉悦,语言障碍却是一道不可忽视的挑战。在这个多元化的世界中,如何解决语言障碍&#xff0…

graylog使用Sidecars方式收集springboot程序的日志

1、部署graylog后台服务 使用docker-compose启动三个服务程序,包括graylog、mongodb、opensearch。 docker-compose.yml内容如下 version: 3 services: # MongoDB: https://hub.docker.com/_/mongo/ mongodb: image: mongo:6.0.14 privileged: true …

PS入门|如何让模糊的图片变得清晰?

前言 前段时间的PS入门讲的都是如何抠图、抠图、抠图。小白都快抠出三室一厅了,不知道学习的小伙伴如何了。 如果在学习过程中没有练习的照片,那直接使用每一篇文章的照片即可,学PS最忌讳的就是光看不练,眼睛会了,手…

Erlang中常用数据结构原理及其实现

文章目录 一、Erlang 简介二、数据结构2.1、元组(Tuple)2.1.1、示例:2.1.2、实现: 2.2、列表(List)2.2.1、示例2.2.2、实现2.2.3、原理 3. 字典(Dictionary)3.1、创建字典3.2、添加和…

FPGA基于VCU的H265视频压缩,HDMI2.0输入,支持4K60帧,提供工程源码+开发板+技术支持

目录 1、前言免责声明 2、相关方案推荐我这里已有的视频图像编解码方案 3、详细设计方案设计框图FPGA开发板视频输入Video PHY ControllerHDMI 1.4/2.0 Receiver SubsystemVideo Processing SubsystemVideo Frame Buffer WriteZynq UltraScale VCUPetaLinux 系统制作VLC播放器工…

Collection与数据结构 二叉树(二):二叉树精选OJ面试题(上)

1. 判断是否为相同的二叉树 OJ链接 public boolean isSameTree(Node p, Node q) {if (p null && q ! null || p ! null && q null){//结构不同return false;}if (p null && q null){//结构相同,都是空树return true;}if (p.value ! q.value){//…

vector及cv::Mat删除指定元素并不改变位置

1、vector删除指定元素且不改变原有的顺序 使用erase方法&#xff0c;测试例子如下所示&#xff1a; //测试用例 struct MyStruct {int a;int b; }; std::vector<MyStruct> spotInfo; spotInfo.push_back({ 1,2 }); spotInfo.push_back({ 3,4 }); spotInfo.push_back({…

医疗器械UDI码的DI和PI什么意思

一、理解医疗器械UDI 医疗器械的UDI码是Unique Device Identifier Code的缩写&#xff0c;意为唯一设备识别码。 医疗器械的UDI码是唯一设备识别码&#xff0c;由两个部分组成&#xff1a;DI和PI。 1.1、DI 理解 DI&#xff08;Device Identifier&#xff0c;设备标识符&am…

电池二次利用走向可持续大循环周期的潜力和挑战(第三篇)

一、电池的梯级利用 电池梯级利用&#xff08;Battery Tiered Utilization&#xff09;是一种可持续发展的策略&#xff0c;指的是当电池在其最初的应用场景中不再能满足高性能需求时&#xff0c;通过检测、评估、重组等一系列技术手段&#xff0c;将这些电池转移到对性能要求…

JetBrains RubyMine 2024.1 发布 - 最智能的 Ruby 与 Rails IDE

JetBrains RubyMine 2024.1 发布 - 最智能的 Ruby 与 Rails IDE 请访问原文链接&#xff1a;JetBrains RubyMine 2024.1 (macOS, Linux, Windows) - 最智能的 Ruby 与 Rails IDE&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org…

MobX入门指南:快速上手状态管理库

一、什么是MobX MobX 是一个状态管理库&#xff0c;它可以让你轻松地管理应用程序的状态&#xff0c;并且可以扩展和维护。它使用观察者模式来自动传播你的状态的变化到你的 React 组件。 二、安装及配置 安装 MobX 和 MobX-React&#xff1a;你可以使用 npm 或 yarn 安装这…

DePIN打猎之旅:AI算力作饵,道阻且长

出品&#xff5c;OKG Research 作者&#xff5c;Hedy Bi 香港Web3嘉年华已告一段落&#xff0c;然而Web3自由的脉搏还在跳动&#xff0c;并不断向其他行业渗透。和上一轮周期相比&#xff0c;本轮牛市开启的逻辑是由“原生创新叙事”转变成“主流认可&#xff0c;资金驱动”的…

vue3的创建使用

一、vue3 用vite创建vue3项目 注意node.js版本 创建一个文件夹 首先要 安装npm &#xff1a; npm i 运行 npm run dev 新建了testView alt shift enter 运行js文件 cd .\ project\node .\index.js\ 二、vue3的特性(vue2和vue3的区别) 使用Proxy代替definePropert…

solidworks electrical 2D和3D有什么区别

SolidWorks Electrical 是一款专为电气设计开发的软件工具&#xff0c;它提供了两种主要的工作环境&#xff1a;2D电气设计和3D电气集成设计。两者在功能和应用场景上存在显著的区别&#xff1a; SolidWorks Electrical 2D 设计 特点与用途&#xff1a; SolidWorks Electrica…

水泵轴承的寿命计算

水泵轴承的寿命计算 按平均值法计算滑动轴承的寿命&#xff0c;对参加试验的多个相同滑动轴承&#xff0c;按试验前、后对运动副零件尺寸的精密测量结果&#xff0c;算出平均的磨损量&#xff0c;与滑动运动幅允许的最大配合间隙进行比较&#xff0c;得出运动副的使用寿命或更…

专科学习嵌入式合适吗?

专科学习嵌入式是完全合适的&#xff0c;但确实需要注意一些因素以确保你的学习之路更加顺利。我这里有一套嵌入式入门教程&#xff0c;不仅包含了详细的视频讲解&#xff0c;项目实战。如果你渴望学习嵌入式&#xff0c;不妨点个关注&#xff0c;给个评论222&#xff0c;私信2…