mysql实现隔离性——锁

锁主要解决写-写问题,mvcc用来解决读-写问题

MyISAM不使用行级锁,主要使用表锁

MyISAM存储引擎主要使用表锁(table-level locking),并不支持行级锁(row-level locking)。当MyISAM存储引擎执行修改数据(如INSERT、UPDATE、DELETE)的操作时,会在相关的表上加锁,这阻止了其他用户对同一表的写操作,但仍然允许读操作。由于MyISAM锁的粒度较大(整个表),它可能会在高并发的应用中成为瓶颈。

innodb默认使用行级锁,还会使用表锁

InnoDB默认行为是在需要时自动使用行级锁
尽管如此,InnoDB也可以使用表锁,特别是在执行全表操作(如ALTER TABLE)时。

BDB还有页锁

innodb的锁的mode和type

在这里插入图片描述

mode:读锁,写锁,意向读锁,意向写锁,自增锁(自增锁,auto字段添加,插入时会阻塞,值加一,并且事务回滚也不会回滚,所以可能不连续)
type:表锁,行锁
行子类型:间隙锁,行锁,邻键锁(间隙锁+行锁)
间隙锁和邻键锁用于解决幻读问题

主要用于保证可重复读(REPEATABLE READ)隔离级别下的一致性,
在这里插入图片描述

两阶段锁定协议

InnoDB遵循两阶段锁定协议来管理事务中的锁。这意味着事务在其执行过程中先加锁,直到事务结束(提交或回滚)才释放所有锁。

innnodb的行锁上在聚簇索引或者二级索引,存储在锁管理器这个数据结构中

锁的设置过程
  1. 当一个事务试图访问数据库中的一行数据时,InnoDB会检查是否有适合该查询的索引。
  2. 如果有,InnoDB通过索引查找到具体的数据行。
  3. 根据操作的类型(读取或写入),InnoDB决定施加共享锁还是独占锁。
  4. 如果索引是二级索引,InnoDB可能首先在二级索引上设置锁,然后通过二级索引找到聚簇索引中的实际数据行,再在聚簇索引的数据行上设置必要的锁。
  5. 锁信息被记录在内存中的锁表中。每当其他事务试图访问相同的数据行时,都会首先检查这个锁表来决定是否可以立即访问该行,还是需要等待或是触发死锁解决机制。
锁的管理

锁的信息并不存储在物理的索引结构中,而是在内存中的一个特定的数据结构(通常是哈希表)中管理。
这种设计允许InnoDB快速处理锁的检查和冲突解决,减少对数据库性能的影响。

在InnoDB中,意向锁的设计主要是为了在表级别表明事务对行级锁的意图

意向锁的加锁流程:意向锁只加载表上

一个事务想加行级锁,需要先给表加意向锁。

意向表锁的冲突

表有独占锁,加任何意向锁。
表有共享锁,加意向独占锁。尽管两个事务可能操作不同的行,意向锁仍然必须管理和协调事务之间在表级别的访问,以保证整个表的数据完整性和事务的隔离需求。

mysql给操作加共享锁指令

select * where id<10 lock in share mode;//加共享锁
select * where id<10 for update;//加独占锁

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

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

相关文章

OpenCV人脸识别,报错缺少haarcascade_frontalface_default.xml文件解决方案(随手记)

使用pip安装的opencv库可能会缺少进行人脸识别的haarcascade_frontalface_default.xml等文件。 可以通过github直接进行下载&#xff0c;再放到需要使用的python文件目录下 单击连接&#xff0c;github人脸识别库-link 找到对应需要的xml文件&#xff0c;这里我举例为haarcas…

01软件下载安装和P解

凯哥英语视频 软件下载安装和P解 凯哥英语视频1.官网直接下&#xff0c;专业版安装不会有人不会吧实在下载不到就去我这百度云吧结语 1.官网直接下&#xff0c;专业版 点击前往逛网下载https://www.jetbrains.com/pycharm/ 下载专业版&#xff0c;奶茶外卖都能点&#xff0c;只…

《企业科技与发展》是什么级别的期刊?是正规期刊吗?

问题解答 问&#xff1a;《企业科技与发展》期刊怎么样&#xff1f; ​答&#xff1a;企业科技与发展》&#xff08;月刊&#xff09;1985年创刊&#xff0c;由广西科学技术厅主管、广西科学技术情报研究所主办&#xff0c;国内外公开发行。主要栏目:科技对策与研究、企业科技…

优化Mac系统,TinkerTool一键掌控!

TinkerTool System for Mac是一款专为Mac用户设计的系统设置维护工具。这款软件不仅具备执行系统维护任务的能力&#xff0c;如管理文件和调整系统或用户设置&#xff0c;还包含一系列功能强大的工具&#xff0c;旨在帮助用户解决、修复、排除故障或修复系统错误和损坏的帐户等…

大企业总部与分部组网方案

在全球化的经济环境中&#xff0c;大企业往往设有总部和多个地理分散的分部。为了确保信息的快 速流通、资源的优化配置以及管理的高效运作&#xff0c;构建一个稳定、安全且高效的组网方案显 得尤为重要。本文将探讨大企业如何通过技术手段和管理策略&#xff0c;实现总部与分…

Python专题:十三、日期和时间(2)

datetime 模块 today()函数 date类型 year month day

用suno创作歌曲音乐的8个技巧

导读 Suno Ai可以将文本转化为高度逼真的音乐和语音。 该系统包括多种音乐风格&#xff0c;如电影、RAP、翻唱等&#xff0c;并提供了多语言和不同性别的播音员选择。 用户可以使用命令来生成音频并进行个性化设置。 用suno.ai所生成的歌曲质量非常高&#xff0c;而且完美支…

http代理有什么作用?

HTTP代理在网络环境中扮演着重要角色&#xff0c;同时具有多种作用&#xff0c;包括加速网络访问、提高安全性、突破地域限制、访问控制和安全、访问授权和监控、突破IP限制、访问内部资源、充当防火墙以及节省IP资源等。 接下来&#xff0c;为大家详细介绍&#xff1a; 加速网…

Linux使用脚本删除多个版本的jar包

问题描述&#xff1a;在进行测试的过程中发现&#xff0c;有一个导出xls文件的功能&#xff0c;文件正常到导出来了&#xff0c;但是页面上显示的是中文&#xff0c;但是导出来的xls文件取的确是数据库的存值&#xff0c;没有转换 前端一看代码说没问题&#xff0c;那没办法重…

pycharm如何有效读取到win10设置的环境变量

参考链接&#xff1a; 参考文章 该参考文章的第一种方法&#xff1a;设置win10环境变量。 在设置完环境变量后&#xff0c;在pycharm终端上不能有效读取到刚刚设置的环境变量的&#xff0c;需要启动win的cmd&#xff0c;在项目路径下执行脚本。如下所示的对比&#xff1a; cm…

chorme浏览器或者edge浏览器使用开发者模式

本篇文章主要讲解edge&#xff0c;因为它内核是chorme&#xff0c;还可以使用微软账号同步&#xff0c;谷歌翻译也凉凉了&#xff0c;edge还可以用翻译&#xff0c;推荐国内windows用户用它。 打开开发者模式 直接按F12点击右上角三个点...&#xff0c;点击更多工具&#xff…

基于Vue3+ElementPlus项目,复制文字到剪贴板功能实践指南,揭秘使用js-tool-big-box工具库的核心优势

在前端开发项目中&#xff0c;很多时候有那么一个场景&#xff0c;就是要求将一段文案复制下来&#xff0c;这段文案可能是一串很长的id&#xff0c;可能是一条命令语句&#xff0c;可能是一小段文案&#xff0c;复制到剪贴板上。这样有利于用户复制到其他地方去&#xff0c;使…

RuoYi-Vue-Plus (Logback 和 logback-plus.xml 、p6spy)

项目后本地日志 一、logback依赖 打开最外层的 pom.xml,查看 SpringBoot的依赖配置。 <dependencyManagement><dependencies><!-- SpringBoot的依赖配置--><dependency><groupId>org.springframework.boot</groupId><artifactId>s…

国外新闻媒体推广:多元化媒体分发投放-大舍传媒

前言 &#xff1a;随着全球化的进程&#xff0c;国外新闻市场呈现出快速发展的趋势。在这个趋势下&#xff0c;国外新闻媒体推广成为了各行业企业宣传业务的重要一环。本文将重点介绍大舍传媒的多元化媒体分发投放服务&#xff0c;以及对国外新闻媒体推广的意义。 1. 多元化媒…

【docker】SpringBoot应用容器镜像日志挂载

启动镜像时候使用 -v 挂载 首先得在宿主机创建目录&#xff1a;/workspace/java/demo/logs mkdir -pv /workspace/java/demo/logs 启动镜像 docker run -p 8080:8080 -itd -v /workspace/java/demo/logs/:/logs/ 192.168.2.1:5000/demo:0.0.1-SNAPSHOT -v /workspace/ja…

《控制系统实验与综合设计》综合四至六(含程序和题目)

1.电机模型辨识实验 1.1 实验目的 &#xff08;1&#xff09;掌握一阶系统阶跃响应的特点&#xff0c;通过实验加深对直流电解模型的理解&#xff1b; &#xff08;2&#xff09;掌握系统建模过程中参数的整定&#xff0c;体会参数变化对系统的影响&#xff1b; &#xff0…

国外新闻媒体投放:多元化媒体分发投稿平台-大舍传媒

引言 随着全球信息传播的加速和全球化的发展&#xff0c;国外新闻媒体的推广变得越来越重要。在这个数字化时代&#xff0c;多元化的媒体分发投放成为了有效推广的关键。本文将介绍大舍传媒在国外新闻媒体推广中的经验与策略。 国外新闻媒体的重要性 国外新闻媒体是获取国际…

信创替代后的设备处置

信创替代后的设备处置 在信创项目中替换下来的设备&#xff0c;如果从技术层面讲还具有较高的应用价值&#xff0c;如何处置呢&#xff1f; 一、数据处置 信创适配完成后&#xff0c;这些被替换下来的服务器上有大量的数据&#xff08;包括结构化和非结构化&#xff09;&…

【2024】前端,该卷什么呢?

✅顺便推个机会&#xff0c;技术大厂&#xff0c;部门捞人&#xff0c;前后端可投。 2024ChatGPT 的炸裂式发展&#xff0c;很多大佬都亲自入场整活儿&#xff0c;你不得不说&#xff0c;人工智能时代的未来已来&#xff0c;大势所趋&#xff0c;不可阻挡。随着生成式AI的迅猛发…

Linux进程控制——Linux进程等待

前言&#xff1a;接着前面进程终止&#xff0c;话不多说我们进入Linux进程等待的学习&#xff0c;如果你还不了解进程终止建议先了解&#xff1a; Linux进程终止 本篇主要内容&#xff1a; 什么是进程等待 为什么要进行进程等待 如何进程等待 进程等待 1. 进程等待的概念2. 进…