mysql实现隔离性——锁

news2025/1/18 16:57:11

锁主要解决写-写问题,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;//加独占锁

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

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

相关文章

一个不知名的开源项目可以带来多少收入

起源 2020 年新冠疫情开始蔓延&#xff0c;当时我在同时经营 3 个不同的公司。除了其中的体育赛事平台因为疫情关门大吉之外&#xff0c;另外两个公司并没有受影响&#xff0c;营收和利润反而都持续增加。但是连续几个月不能出远门&#xff0c;也不能随便见朋友和客户&#xff…

Netgear无线路由器漏洞复现(CVE-2019-20760)

漏洞概述 漏洞服务&#xff1a; uhttpd 漏洞类型&#xff1a; 远程命令执行 影响范围&#xff1a; 1.0.4.26之前的NETGEAR R9000设备会受到身份验证绕过的影响 解决建议&#xff1a; 更新版本 漏洞复现 操作环境&#xff1a; ubuntu:22.04 qemu-version&#xff1a; 8.1…

【Linux】了解信号产生的五种方式

文章目录 正文前的知识准备kill 命令查看信号man手册查看信号信号的处理方法 认识信号产生的5种方式1. 工具2. 键盘3. 系统调用kill 向任意进程发送任意信号raise 给调用方发送任意信号abort 给调用方发送SIGABRT信号 4. 软件条件5. 异常 正文前的知识准备 kill 命令查看信号 …

Linux下COOLFluiD源码编译安装及使用

目录 软件介绍 基本依赖 其它可选依赖 一、源码下载 二、解压缩&#xff08;通过Github下载zip压缩包格式&#xff09; 三、编译安装 3.1 依赖项-BOOST 3.2 依赖项-Parmetis 3.3 依赖项-PETSc 3.4 安装COOLFluiD 四、算例运行 软件介绍 COOLFluiD&#xff08;面向对象…

【生信技能树】GEO数据挖掘全流程

R包的安装&#xff0c;每次做分析的时候先运行这段代码把R包都安装好了&#xff0c;这段代码不需要任何改动&#xff0c;每次分析直接运行。 options("repos""https://mirrors.ustc.edu.cn/CRAN/") if(!require("BiocManager")) install.packag…

Java的类和对象(一)—— 初始类和对象,this关键字,构造方法

前言 从这篇文章开始&#xff0c;我们就进入到了JavaSE的核心部分。这篇文章是Java类和对象的第一篇&#xff0c;主要介绍类和对象的概念&#xff0c;this关键字以及构造方法~~ 什么是类&#xff1f;什么是对象&#xff1f; 学过C语言的老铁们&#xff0c;可以类比struct自定义…

【RAG 论文】BGM:为 LLM 和 Retriever 的偏好 gap 搭建一个 Bridge

论文&#xff1a;Bridging the Preference Gap between Retrievers and LLMs ⭐⭐⭐ Google Research, arXiv:2401.06954 论文速读 LLM 与 Retriever 之间存在一个 preference gap&#xff1a;大多数 retriever 被设计为 human-friendly&#xff0c;但是 LLM 的偏好与人类的却…

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

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

OpenHarmony 3.1 Release实战开发 + Linux 原厂内核Launcher起不来问题分析报告

1、关键字 Launcher 无法启动&#xff1b;原厂内核&#xff1b;Access Token ID&#xff1b; 2、问题描述 芯片&#xff1a;rk3566&#xff1b;rk3399 内核版本&#xff1a;Linux 4.19&#xff0c;是 RK 芯片原厂发布的 rk356x 4.19 稳定版内核 OH 版本&#xff1a;OpenHa…

漏桶算法:稳定处理大量突发流量的秘密武器!

漏桶算法的介绍 我们经常会遇到这样一种情况&#xff1a;数据包的发送速率不稳定&#xff0c;而网络的带宽有限。如果在短时间内有大量的数据包涌入&#xff0c;那么网络就会出现拥塞&#xff0c;数据包的丢失率就会增大。为了解决这个问题&#xff0c;人们提出了一种叫做“漏…

怎样辨别LED显示屏的品质

在当今数字化时代&#xff0c;LED显示屏已成为信息传播的重要媒介&#xff0c;广泛应用于广告、信息显示、舞台背景等领域。然而&#xff0c;市场上的LED显示屏品质参差不齐&#xff0c;如何鉴别其品质等级成为了用户关注的焦点。以下是一些专业的方法&#xff0c;帮助用户辨别…

geotrust ov泛域名证书2990

Geotrust是一家正规的CA证书颁发机构&#xff0c;致力于为个人以及企事业单位开发者提供安全可靠的数字证书产品&#xff0c;维护了个人博客网站、企业官网、商城网站以及银行等金融网站的数据安全&#xff0c;营造了一种健康的网络环境。今天就随SSL盾小编了解Geotrust旗下的O…

如何判断海外住宅ip的好坏?

在海外IP代理中&#xff0c;住宅IP属于相对较好的资源&#xff0c;无论是用于工作、学习、还是娱乐&#xff0c;都能得到较好的使用效果。作为用户&#xff0c;该如何判断海外住宅IP的好坏呢&#xff1f; 稳定性与可靠性&#xff1a;海外住宅IP相比动态IP地址&#xff0c;通常具…

C++(week3):数据结构与算法

文章目录 (十一) 常用数据结构1.动态数组(1)模型(2).h与.c(3)实现 2.链表(1)模型(2)分类(3)基本操作(API)(4)实现(5)链表常见面试题(6)空间与时间 3.栈(1)模型(2)基本操作(3)实现(4)栈的应用 4.队列(1)模型(2)基本操作(API)(3)实现(4)队列的应用 5.哈希表(1)哈希表的提出原因(2…

Samtec技术分享 | 电源/信号高密度阵列的新视角

【摘要/前言】 “角度”&#xff0c;这个词每天都出现在我们的生活中&#xff0c;有物理学的角度&#xff0c;如街边的拐角&#xff0c;还有视觉上的角度和观点中的角度~ Samtec新型 AcceleRate mP 高密度电源/信号互连系统正是从电源完整性 90度旋转的不同角度中诞生的。 …

作为前端开发,感受下 nginx 带来的魅力!

引言&#xff1a;纯干货分享&#xff0c;汇总了我在工作中八年遇到的各种 Nginx 使用场景&#xff0c;对这篇文章进行了细致的整理和层次分明的讲解&#xff0c;旨在提供简洁而深入的内容。希望这能为你提供帮助和启发&#xff01; 对于前端开发人员来说&#xff0c;Node.js 是…

#自学习# 记一次py脚本打开浏览器页面

在项目总结中&#xff0c;遇到系统后台利用浏览器拉起一个已知路径页面的需求&#xff0c;趁着机会整理下。实现起来比较简单&#xff0c;浏览器默认谷歌。 一、技术原理 Selenium&#xff1a;Selenium 是一个用于自动化 Web 浏览器的工具&#xff0c;可模拟用户在浏览器中的各…

帧类型代价计算原理:slicetype_frame_cost 函数分析

slicetype_frame_cost 函数 函数功能 这个函数的核心是计算编码一系列帧(从 p0 到p1,以 b 为当前帧)的代价 cost,并根据这个代价 cost来辅助帧类型决策。它考虑了运动搜索的结果、帧间和帧内预测的成本,并且可以并行处理以提高效率。该函数在帧类型决策、MBtree 分析、场…

硅胶可以镭射吗?

在科技发展的今天&#xff0c;我们经常会遇到各种各样的材料&#xff0c;其中就有一种叫做硅胶的材料。那么&#xff0c;硅胶可以镭射吗&#xff1f;答案是肯定的&#xff0c;硅胶不仅可以镭射&#xff0c;而且在某些应用中&#xff0c;它的镭射特性还非常突出。 首先&#xff…

HarmonyOS应用模型Stage基本介绍

文章目录 <font colorcoral> HarmonyOS应用模型概况<font colorcoral> Stage模型基本概念<font colorcoral> Stage模型UIAbiliry的生命周期<font colorcoral> Stage模型的配置文件<font colorcoral> 写在后面的话<font colorcoral>Referen…