当前位置: 首页 > news >正文

✅ MySQL 事务 MVCC ROLLBACK


🧠 一、MVCC 与可重复读(REPEATABLE READ)

项目内容
MVCC 概念多版本并发控制,事务中读到的是开启事务时的数据快照
实现机制依赖 Read View + trx_id + Undo Log 实现版本判断
快照读普通 SELECT,使用 MVCC,不加锁,读取历史版本
当前读SELECT … FOR UPDATE / UPDATE,不使用快照,读取当前版本并加锁
默认隔离级别MySQL InnoDB 默认 REPEATABLE READ,快照在事务首次读时固定
插入型幻读快照读无法解决,InnoDB 通过“间隙锁(Gap Lock)”解决

🔬 二、实验验证行为(你亲自操作的)

场景描述验证结果
快照读能否看到别的事务提交的新记录❌ 不能,看到的是旧版本
当前读是否能看到别的事务刚提交的记录✅ 能看到,当前读不走 MVCC
当前读是否加锁✅ 加排他锁,阻塞并发写操作
锁是否在事务中立即释放❌ 不会,直到 COMMIT / ROLLBACK 才释放
如何查看锁持有状态✅ 用 SHOW ENGINE INNODB STATUS + innodb_trx 查看
performance_schema 能否替代老锁表✅ 推荐使用 data_locks 和 data_lock_waits

🔄 三、ROLLBACK 撤销事务

内容点说明与示例简述
作用撤销事务内的所有操作,恢复到事务开始前的状态
常见用法校验失败、异常中断、业务取消、死锁回滚
搭配 SAVEPOINT实现“部分回滚”逻辑控制
行锁释放ROLLBACK 会自动释放当前读加的锁
对 DDL 无效如 ALTER TABLE 会隐式提交,不能被 ROLLBACK 撤销
自动提交下无效autocommit = 1 时每条语句立即提交,ROLLBACK 无效
底层机制依赖依赖 Undo Log 回滚数据,不会写 binlog,Redo 不落盘

🔍 四、事务状态排查方法

工具/命令说明
SHOW ENGINE INNODB STATUS\G查看当前事务、锁、死锁、读视图等 InnoDB 信息
information_schema.innodb_trx查看活动事务、事务ID、锁、回滚等
performance_schema.data_locks替代 innodb_locks,查看当前所有锁持有情况
performance_schema.data_lock_waits查看事务之间的锁等待关系

📚 五、实操项目(高价值)

  • ✅ 快照读实验(多次 SELECT 结果一致)

  • ✅ 当前读实验(FOR UPDATE 加锁)

  • ✅ 插入新记录事务可见性测试

  • ✅ 锁状态监控与观察

  • ✅ ROLLBACK 撤销事务并释放锁

  • ✅ 配合事务工具查看锁结构

  • ✅ 手动设置事务隔离级别,排查幻读来源


相关文章:

✅ MySQL 事务 MVCC ROLLBACK

🧠 一、MVCC 与可重复读(REPEATABLE READ) 项目内容MVCC 概念多版本并发控制,事务中读到的是开启事务时的数据快照实现机制依赖 Read View trx_id Undo Log 实现版本判断快照读普通 SELECT,使用 MVCC,不…...

信息系统项目管理工程师备考计算类真题讲解四

一、三点估算(PERT) PERT(Program Evaluation and Review Technique):计划评估技术,又称三点估算技术。PERT估算是一种项目管理中用于估算项目工期或成本的方法,以下是其详细介绍: …...

winfrom 查询某字符串 找到它在 richTextbox 的位置 定位 并高亮 并且滚动定位到所查询的字符串所在的行

如图: 代码: //查找关键字private void buttonSearch_Click(object sender, EventArgs e){string searchText textBoxSearch.Text;if (!string.IsNullOrEmpty(searchText)){TextBoxFinds(txtJSON, searchText);TextBoxFinds(txtSQL, searchText);}}//查…...

数据结构学习笔记 :线性表的链式存储详解

目录 单链表 1.1 无头单链表 1.2 有头单链表单向循环链表双链表 3.1 双链表 3.2 双向循环链表总结与对比 一、单链表 1. 无头单链表(Headless Singly Linked List) 定义:链表无头结点,直接由头指针指向第一个数据节点。 特点&…...

MyBatis-Plus 详解:快速上手到深入理解

一、前言 🌟 🧩 MyBatis & MyBatis-Plus 是啥关系? MyBatis 是一个优秀的 ORM 框架(Object Relational Mapping,面向对象关系映射),它让我们可以通过编写 SQL 来操作数据库,同…...

【软件工程大系】净室软件工程

净室软件工程(Cleanroom Software Engineering)是一种以缺陷预防(正确性验证)为核心的软件开发方法,旨在通过严格的工程规范和数学验证,在开发过程中避免缺陷的产生,而非依赖后期的测试和调试。…...

[区块链lab2] 构建具备加密功能的Web服务端

实验目标: 掌握区块链中密码技术的工作原理。在基于Flask框架的服务端中实现哈希算法的加密功能。 实验内容: 构建Flash Web服务器,实现哈希算法、非对称加密算法的加密功能。 实验步骤: 哈希算法的应用:创建hash…...

2025年- H10-Lc117-560.和为K的子数组(子串)--java版

1.题目描述 2.思路 例子1&#xff1a; 3.代码实现 class Solution {public int subarraySum(int[] nums, int k) {// List<Integer> listnew ArrayList<>();// int cnt0;// for(int i0;i<nums.length;i)// {// for(int ji1;j<nums.length;j)// {// …...

肾脏系统触发 “元数据泄漏警报“(蛋白尿+)

肾脏系统触发 "元数据泄漏警报"&#xff08;蛋白尿&#xff09; 核心故障模块&#xff1a;肾小球滤过屏障&#xff08;GlomerularFilter v2.5.0&#xff09; 漏洞类型&#xff1a;孔径屏障漏洞 电荷屏障校验失败 → 元数据&#xff08;蛋白质&#xff09;越界泄漏 …...

摄像头的工作原理与应用摄像头的工作原理与应用

一、摄像头的工作原理与应用 基本概念 V4L2的全称是Video For Linux Two&#xff0c;其实指的是V4L的升级版&#xff0c;是linux系统关于视频设备的内核驱动&#xff0c;同时V4L2也包含Linux系统下关于视频以及音频采集的接口&#xff0c;只需要配合对应的视频采集设备就可以…...

一个由通义千问以及FFmpeg的AVFrame、buffer引起的bug:前面几帧影响后面帧数据

目录 1 问题描述 2 我最开始的代码----错误代码 3 正确的代码 4 为什么前面帧的结果会叠加到了后面帧上----因为ffmpeg新一帧只更新上一帧变化的部分 5 以后不要用通义千问写代码 1 问题描述 某个项目中&#xff0c;需要做人脸马赛克&#xff0c;然后这个是君正的某款芯片…...

MyBatis-动态SQL

MyBatis Plus 作为 MyBatis 的增强工具&#xff0c;简化了 CRUD 操作&#xff0c;但在复杂查询时&#xff0c;仍需使用 MyBatis 的动态 SQL 功能。以下是一些常用的动态标签、用法示例及注意事项&#xff1a; 常用动态标签及用法示例 <if> 标签 用途&#xff1a;条件判…...

顺序表(Arraylist)和链表(Linkedlist)

List List是一个接口&#xff0c;继承自Collection。 从数据结构角度来说&#xff0c;List就是一个线性表&#xff0c;即用n个相同类型的有限序列&#xff0c;可以在此序列中可以进行增删改查操作。 List是接口不能直接实例化&#xff0c;Linkedlist和Arraylist都实现了List…...

【python】django sqlite版本过低怎么办

方法一&#xff1a;下载最新版本 复制上面的内容的链接 在服务器上进行操作 wget https://sqlite.org/2025/sqlite-autoconf-3490100.tar.gz tar -zxvf sqlite-autoconf-3490100.tar.gz cd sqlite-autoconf-3490100 ./configure --prefix/usr/local make && make in…...

解决Dify使用Docker Compose部署中无法通过OpenAI插件等国外大模型厂商的插件访问其API的问题

解决Dify使用Docker Compose部署中无法通过OpenAI插件等国外大模型厂商的插件访问其API的问题 问题描述 在使用Docker Compose部署Dify时&#xff0c;发现无法通过OpenAI等国外大模型厂商的插件访问其API。这主要是因为Docker容器内的网络环境与宿主机不同&#xff0c;导致无…...

【ROS】代价地图

【ROS】代价地图 前言代价地图&#xff08;Costmap&#xff09;概述代价地图的参数costmap_common_params.yaml 参数说明costmap_common_params.yaml 示例说明global_costmap.yaml 参数说明global_costmap.yaml 示例说明local_costmap.yaml 参数说明local_costmap.yaml 示例说明…...

Deno 统一 Node 和 npm,既是 JS 运行时,又是包管理器

Deno 是一个现代的、一体化的、零配置的 JavaScript 运行时、工具链&#xff0c;专为 JavaScript 和 TypeScript 开发设计。目前已有数十万开发者在使用 Deno&#xff0c;其代码仓库是 GitHub 上 star 数第二高的 Rust 项目。 Stars 数102620Forks 数5553 主要特点 内置安全性…...

把城市变成智能生命体,智慧城市的神奇进化

智能交通系统的建立与优化 智能交通系统&#xff08;ITS&#xff09;是智慧城市建设的核心部分之一&#xff0c;旨在提升交通管理效率和安全性。该系统利用传感器网络、GPS定位技术以及实时数据分析来监控和管理城市中的所有交通流动。例如&#xff0c;通过部署于道路两侧或交…...

青少年编程与数学 02-016 Python数据结构与算法 23课题、分布式算法

青少年编程与数学 02-016 Python数据结构与算法 23课题、分布式算法 课题摘要:一、一致性算法Paxos 算法 二、领导者选举算法Bully 算法 三、分布式锁算法基于 ZooKeeper 的分布式锁 四、分布式事务处理算法两阶段提交&#xff08;2PC&#xff09; 五、负载均衡算法最少连接法 …...

Windows10系统RabbitMQ无法访问Web端界面

项目场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; 项目场景&#xff1a; 在一个基于 .NET 的分布式项目中&#xff0c;团队使用 RabbitMQ 作为消息队列中间件&#xff0c;负责模块间的异步通信。开发环境为 Windows 10 系统&#xff0c;开发人员按照官…...

人工智能之数学基础:特征值分解与奇异值分解的区别分析

本文重点 矩阵分解是线性代数的核心工具,广泛应用于数据分析、信号处理、机器学习等领域。特征值分解与奇异值分解在数学定义、适用范围、几何意义、计算方法、应用场景及稳定性方面存在显著差异。EVD 适用于方阵,强调矩阵的固有属性;SVD 适用于任意矩阵,揭示矩阵的内在结…...

UDP概念特点+编程流程

UDP概念编程流程 目录 一、UDP基本概念 1.1 概念 1.2 特点 1.2.1 无连接性&#xff1a; 1.2.2 不可靠性 1.2.3 面向报文 二、UDP编程流程 2.1 客户端 cli.c 2.2 服务端ser.c 一、UDP基本概念 1.1 概念 UDP 即用户数据报协议&#xff08;User Datagram Protocol &…...

Go语言实现OAuth 2.0认证服务器

文章目录 1. 项目概述1.1 OAuth2 流程 2. OAuth 2.0 Storage接口解析2.1 基础方法2.2 客户端管理相关方法2.3 授权码相关方法2.4 访问令牌相关方法2.5 刷新令牌相关方法 2.6 方法调用时序2.7 关键注意点3. MySQL存储实现原理3.1 数据库设计3.2 核心实现 4. OAuth 2.0授权码流程…...

【版本控制】idea中使用git

大家好&#xff0c;我是jstart千语。接下来继续对git的内容进行讲解。也是在开发中最常使用&#xff0c;最重要的部分&#xff0c;在idea中操作git。目录在右侧哦。 如果需要git命令的详解&#xff1a; 【版本控制】git命令使用大全-CSDN博客 一、配置git 要先关闭项目&#xf…...

永磁同步电机控制中,滑模观测器是基于反电动势观测转子速度和角度的?扩展卡尔曼滤波观测器是基于什么观测的?扩展卡尔曼滤波观测器也是基于反电动势吗?

滑模观测器在PMSM中的应用&#xff1a; 滑模观测器是一种非线性观测器&#xff0c;利用切换函数设计&#xff0c;使得状态估计误差迅速趋近于零&#xff0c;实现快速响应和对外部干扰的鲁棒性。 在永磁同步电机&#xff08;PMSM&#xff09;无传感器控制中&#xff0c;滑模观测…...

十倍开发效率 - IDEA 插件之RestfulBox - API

提高效率不是为了完成更多的任务&#xff0c;而是有充足的时间摸鱼。 快速体验 RestfulBox - API 是 IDEA 的插件&#xff0c;适合本地测试接口&#xff0c;完全不需要对项目进行任何以来。 接口管理&#xff1a;支持接口扫描、浏览、搜索、跳转、导入和导出。支持接口请求&a…...

HTML、CSS 和 JavaScript 常见用法及使用规范

一、HTML 深度剖析 1. 文档类型声明 HTML 文档开头的 <!DOCTYPE html> 声明告知浏览器当前文档使用的是 HTML5 标准。它是文档的重要元信息&#xff0c;能确保浏览器以标准模式渲染页面&#xff0c;避免怪异模式下的兼容性问题。 2. 元数据标签 <meta> 标签&am…...

人工智能概念股投资:10大潜力标的深度研究

人工智能概念股投资&#xff1a;10大潜力标的深度研究 一、人工智能概念股投资的基本概念 人工智能&#xff08;Artificial Intelligence&#xff0c;AI&#xff09;是指利用计算机程序模拟人类智能的一种技术&#xff0c;通过对数据的分析和学习&#xff0c;实现类似人类思维和…...

centos部署的openstack发布windows虚拟机

‌CentOS上部署的OpenStack可以发布Windows虚拟机‌。在CentOS上部署OpenStack后&#xff0c;可以通过OpenStack平台创建和管理Windows虚拟机。以下是具体的步骤和注意事项&#xff1a; ‌安装和配置OpenStack‌&#xff1a; 首先&#xff0c;确保系统满足OpenStack的最低硬件…...

Fortran 中使用 C_LOC 和 C_F_POINTER 结合的方法来实现不同类型指针指向同一块内存区域

在 Fortran 中&#xff0c;可以使用 C_LOC 和 C_F_POINTER 结合的方法来实现不同类型指针指向同一块内存区域。以下是具体方法和示例&#xff1a; 关键步骤&#xff1a; 获取内存地址&#xff1a;用 C_LOC 获取原始数组的 C 地址。类型转换&#xff1a;用 C_F_POINTER 将地址转…...

两个 STM32G0 I2C 通信异常的案例分析

1. 案例一问题描述 客户反馈其产品在使用 STM32G0C1NEY6TR 和一个充电管理 IC 通信时&#xff0c;速率为100KHz 时通信正常&#xff0c;但工作在 400KHz 时&#xff0c;有时会产生 I2C 错误。 把 I2C GPIO 配置为推挽输出后产生错误的概率会下降。 2. 案例一问题确认 针对客…...

尚硅谷-react[1-6集]

目录 步骤 1. devlopment.js 2. react-dom.devopment.js 3. babel.min.js // 将jsx转为js体验 // 这个虚拟dom的内容不能够写引号,单引号双引号 const VDOM <h1>nihao react</h1> // 可以使用括号进行编写 const VDOM1 (<h1>nihao react</h1> )…...

树状数组简单介绍

树状数组简单介绍 前言树状数组&#xff08;Binary Indexed Tree&#xff09;JavaScript 详细指南一、什么是树状数组&#xff1f;二、核心概念&#xff08;前置知识&#xff09;&#xff1a;lowbit 函数三、树状数组的实现1. 初始化树状数组2. 使用示例 四、详细原理解释1. 树…...

使用Redis实现分布式限流

一、限流场景与算法选择 1.1 为什么需要分布式限流 在高并发系统中&#xff0c;API接口的突发流量可能导致服务雪崩。传统的单机限流方案在分布式环境下存在局限&#xff0c;需要借助Redis等中间件实现集群级流量控制。 1.2 令牌桶算法优势 允许突发流量&#xff1a;稳定速…...

【MySQL学习】存储过程

目录 一、定义 二、基本语法 1.创建存储过程 2.删除存储过程 3.查看存储过程 三、控制语句 1.变量声明与赋值 四、游标&#xff08;Cursor&#xff09; &#xff08;1&#xff09;声明游标 &#xff08;2&#xff09;处理游标结束 &#xff08;3&#xff09;打开游标 …...

Bp靶场 - Jwt

你知道JWT漏洞如何进行攻击利用吗&#xff1f;快来看一看如何利用JWT漏洞进行攻击利用把&#xff01;https://mp.weixin.qq.com/s/2iBIEGnkiliprsuHyY5Udg...

手机上的APN是什么,该怎么设置

网上说改个APN就可以让网速快几倍&#xff0c;那到底APN是个什么东西&#xff0c;真的能让网速快几倍吗&#xff1f; APN的作用 网络连接基础&#xff1a;APN&#xff08;接入点名称&#xff09;是手机连接移动网络的“桥梁”&#xff0c;负责识别运营商网络类型&#xff08;…...

[bug]langchain agent报错Invalid Format: Missing ‘Action Input:‘ after ‘Action:‘

在学习langchain的agent时候&#xff0c;采用ollama调用本地的deepseek-r1:32b来做一个agent&#xff0c;代码如下&#xff1a; def create_custom_agent():llm ChatOllama(model"deepseek-r1:32b", temperature0.5)memory ConversationBufferWindowMemory(memory…...

blender关联复制与Three.js网格和材质共享验证

blender和three.js小白的学习之路。 最近看到Three.js官网上说&#xff0c;模型合并是一个很好的优化性能的方式&#xff0c;因为渲染2000个物体总要比一次性渲染一个模型要来的慢。很有道理&#xff01; 但此时就不禁思考一个问题&#xff0c;现有的模型进行合并通过blender…...

Spark宽窄依赖与Join优化:协同划分与非协同划分的底层逻辑

在大数据领域&#xff0c;Spark的性能优化始终是开发者关注的焦点。理解宽依赖&#xff08;Wide Dependency&#xff09;和窄依赖&#xff08;Narrow Dependency&#xff09;的底层原理&#xff0c;能够帮助我们从根本上优化Join操作的性能。本文将通过这两个核心概念&#xff…...

每日算法-250416

今天我们来探讨两道可以通过贪心算法解决的 LeetCode 题目。 什么是贪心算法&#xff1f; 贪心算法&#xff08;Greedy Algorithm&#xff09;是一种在每一步选择中都采取在当前状态下最好或最优&#xff08;即最有利&#xff09;的选择&#xff0c;从而希望导致结果是全局最…...

python爬虫降低IP封禁,python爬虫除了使用代理IP和降低请求频率,还有哪些方法可以应对IP封禁?

文章目录 前言1. 利用 CDN 节点2. 模拟真实用户行为3. 使用 IP 池轮换策略4. 处理 Cookie 和会话信息5. 分布式爬虫 前言 除了使用代理 IP 和降低请求频率&#xff0c;以下这些方法也能应对 IP 封禁&#xff1a; Python 3.13.2安装教程&#xff08;附安装包&#xff09;Python…...

NLP高频面试题(四十五)——PPO 算法在 RLHF 中的原理与实现详解

近端策略优化(Proximal Policy Optimization, PPO)算法是强化学习领域的一种新颖且高效的策略优化方法,在近年大规模语言模型的人类反馈强化学习(Reinforcement Learning with Human Feedback, RLHF)中发挥了关键作用。本文将以学术严谨的风格,详细阐述 PPO 算法的原理及…...

bert项目解析

读取csv def read_file(file_path):data []label []with open(file_path, "r", encoding"utf-8") as file:reader csv.reader(file)next(reader) # 跳过标题行for row in reader:if len(row) < 2:print(f"跳过不完整行: {row}")continue…...

ubuntu20.04 Android14编译环境配置

ubuntu 更新和必要安装 sudo apt update sudo apt install git sudo apt install python2-minimal sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 1 sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 2 sudo upda…...

lombok requires enabled annotation processing

这个错误信息表明你在使用 Lombok 时&#xff0c;编译器无法正常工作&#xff0c;因为 注解处理器&#xff08;Annotation Processing&#xff09; 没有被启用。Lombok 是一个 Java 库&#xff0c;它通过注解处理器在编译时自动生成代码&#xff08;例如 Getter、Setter、NoArg…...

应用系统中的报表开发成本知多少?

应用系统的开发过程中&#xff0c;报表的业务虽然不算太难&#xff0c;但投入的开发成本可不一定小&#xff0c;因为总会有没完没了的报表要去做&#xff0c;成本的投入不容小觑 下面我们就来分析一下报表开发成本的构成&#xff0c;看看它是多是少 报表的开发成本&#xff0c…...

STM32F103ZET6移植FATFS文件系统教程(W25Q32)

一、FATFS核心特性 跨平台支持‌ 支持FAT12/FAT16/FAT32格式&#xff0c;兼容Windows文件系统‌&#xff1b; 采用标准C语言编写&#xff0c;代码量小且支持RTOS‌。 配置灵活性‌ 通过宏定义实现功能裁剪&#xff0c;例如&#xff1a; FF_FS_READONLY&#xff1a;设为1时禁…...

数据泄露防护系统:全面保护企业信息安全的功能解析

随着信息技术的快速发展&#xff0c;数据泄露事件频发&#xff0c;给企业带来了巨大的经济损失和声誉损害。为了有效应对这一挑战&#xff0c;越来越多的企业开始部署专业的数据泄露防护&#xff08;DLP&#xff09;系统。安固软件作为一款领先的数据防泄漏解决方案&#xff0c…...

【野火模型】利用深度神经网络替代 ELMv1 野火参数化:机制、实现与性能评估

目录 一、ELMv1 野火过程表示法&#xff08;BASE-Fire&#xff09;关键机制野火模拟的核心过程 二、采用神经网络模拟野火过程三、总结参考 一、ELMv1 野火过程表示法&#xff08;BASE-Fire&#xff09; ELMv1 中的野火模型&#xff08;称为 BASE-Fire&#xff09;源自 Commun…...