MySQL数据库精讲:一文讲解MySQL事务隔离!

快照隔离交易失败访问数据库“数据库名” 快照隔离失败,访问数据库“数据库名”,因为没有在此数据库允许快照隔离。用户的ALTER DATABASE允许隔离。 我们做了一些检查后发现,所有其他Lync的数据库在其他网站和我们的实验室进行不同的设置。以下是该修补程序。 去到您的SQL后端服务器,并运行下面的查询: 从sys.databases中选择snapshot_isolation_state_ 阅读详情

# 本文转载自:MySQL数据库精讲:一文讲解MySQL事务隔离!


事务就是一组数据库操作要么全部成功,要么全部失败。

事务的四大特性:ACID(Atomicity、Consistency、Isolation、Durability,即原子性、一致性、隔离性、持久性)

MySQL中事务支持是在引擎层实现的,而MySQL的原生MyISAM引擎就不支持事务,所以被InnoDB取代。

隔离性与隔离级别

数据库中多个事务同时执行时,可能出现以下问题:

  • 脏读:读取到其他事务未提交的数据;
  • 不可重复读:读取到其他事物已提交的数据,即本次事务多次读取的数据不一致;
  • 幻读:本次事务修改后又被其它事务改回去,误以为本次修改未生效。

为了解决这些问题,SQL标准规定了以下四个事务隔离级别;隔离得越严实,效率就会越低。。

  • 读未提交:一个事务还未提交时,它做的变更就能被别的事务看到;隔离级别最低,会导致脏读、幻读以及不可重复读。
  • 读提交:一个事务提交之后,它做的变更才会被其他事务看到;避免了脏读,但仍会导致幻读和不可重复读。
  • 可重复读:一个事务执行过程中看到的数据,总是跟这个事务在启动时看到的数据是一致的;能够避免脏读和不可重复读,但仍会导致幻读。
  • 串行化:对于同一行记录读写都会加锁,当出现读写锁冲突的时候,后访问的事务必须等前一个事务执行完成,才能继续执行;能够避免以上三个问题,但执行效率最低。

下面通过举例事务A/B说明这四种事务隔离级别:

  • 如果隔离级别是读未提交:那么V1、V2、V3的值为2;虽然事务B还未提交,但结果已被事务A看到了。
  • 如果隔离级别是读提交:那么V1的值为1,V2、V3的值为2;只有在事务B提交后,V2才能读取到变更的值2。
  • 如果隔离级别是可重复读:那么V1、V2的值为1,V3的值为2;即无论事务B是否提交,事务A在执行期间看到的数据前后必须是一致的。
  • 如果隔离级别是串行化:那么事务A在查询到值后便会加读锁,直到事务A提交(释放读锁)后,事务B才能查询到结果并修改(增加读写锁);所以V1、V2都是1,V3是2。

InnoDB的事务隔离实现

MySQL的默认隔离级别为可重复读,并且还解决了幻读问题;下面我们来讨论可重复读。

MVCC多版本并发控制

在InnoDB中给每行增加两个字段来实现MVCC,分别是创建的事务版本号和删除的版本号,每开启一个事务,事务的版本号就会递增。

  • SELECT:创建版本号<=当前版本号 AND (删除版本号 IS NULL OR 删除版本号 > 当前版本号)
  • INSERT:将当前事务版本号保存至新行的创建版本号
  • UPDATE:新插入一行,并且将当前事务版本号作为新行的创建版本号;将原纪录行的删除版本号设置为当前事务版本号
  • DELETE:将当前事务版本号保存至该行的删除版本号

快照读/当前读、一致性非锁定读/锁定读

  • 快照读:读取的是快照版本,也就是历史版本。
  • 当前读:读取的是最新版本。
  • 一致性非锁定读:不会给它所访问的表加任何形式的锁,其它事务可以同时并发的修改它们。
  • 锁定读:SELECT … LOCK IN SHARE MODE 给记录添加共享锁,其它事务只能读取不能修改;SELECT … FOR UPDATE给索引记录加锁,加锁情况桶UPDATE。

在MySQL默认的可重复读中,普通的SELECT是一致性非锁定的快照读,读取的是事务创建时的快照;而UPDATE、DELETE、INSERT、SELECT … LOCK IN SHARE MODE、SELECT … FOR UPDATE是锁定的当前读。假设当前事务执行了锁定的当前读,那么其它事务将不能进行修改直到当前事务提交。

长事务

事务在提交之前会保留回滚记录,导致大量占用存储空间,并且还会占用锁资源,所以尽量避免使用长事务;如果无法避免,应保证逻辑日志空间足够用,并且支持动态日志空间增长。监控Innodb_trx表,发现长事务报警。


# 本文转载自:MySQL数据库精讲:一文讲解MySQL事务隔离!

HTTP错误处理及快照隔离事务访问 建站过程遇到的问题以及解决方案 1.HTTP 错误 404.17 - Not Found   请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理。 出现这种情况的原因通常是因为先安装了Framework,后安装的IIS; 运行cmd,输入: C:\Windows\Microsoft.NET\Framework\V4.0.30319 阅读详情

相关推荐

【MySQL】深度理解事务的隔离性:全面讲解事务的四种隔离级别

*前言:**上节内容我们主要说了如果没有设置保存点,也可以回滚,但是只能回滚到事务的开始。直接使用rollback的前提是事务还没有提交。并且如果一个事务被提交了,就不可以回退。同时我们也可以使用savepoint设置回滚点。可以自己选择想要回滚到的位置。同时最后我们也提到了,InnoDB支持事务,但是MyISAM不支持事务。这节就将更深入的使用事务。看一下事物的特性——隔离性。下面友友们开始学习吧!

m0_74824002的博客 1242

MySQL事务详解

MySQL事务详解

靖节先生的博客 1046

MySql中的事务、MySql事务详解、MySql隔离级别

思考:我去银行给朋友汇款,我卡上有100元,朋友卡上50元,我给朋友转账50元,如果我的钱刚扣,而朋友的钱又没加时,网线断了, 怎么办(Transaction)是数据库管理系统(DBMS)中的一个核心概念,它确保了一系列数据库操作要么全部成功,要么全部失败,从而维护数据库的完整性和一致性。MySQL在5.5版本开始,就将InnoDB引擎作为默认存储引擎。由于Mysql中的事务是存储引擎实现,而且只有InnoDB支持事务。

m0_74824755的博客 1109

设置ALLOW_SNAPSHOT_ISOLATION ON 快照隔离事务后出现错误7105

昨天接到同事反馈过来一个这样的问题: 消息21,级别22,状态1,过程Test_TestInfo_aud,第152 行 警告: 在07 22 20084:53PM 出现错误7105。请记录该错误和时间,并与您的系统管理员联系。 是在执行一个修改信息存储过程出现的。而执行修改的字段为大字段nvarchar(max) 如: 1. test表中有两个字段(id int, intr...

weixin_30919429的博客 615

一文读懂 MySQL 事务隔离级别

ACID是数据库事务的四大特性:原子性(事务不可分割)、一致性(数据合法状态)、隔离性(事务间互不干扰)和持久性(提交后永久保存)。原子性通过Undo Log实现回滚机制;一致性通过约束条件和触发器保证;隔离性通过MVCC和锁机制(如间隙锁)处理并发问题,但可重复读级别仍可能在某些情况下出现幻读;持久性确保事务提交后数据不丢失。MySQL通过多种锁机制(行锁、表锁、意向锁等)保障事务安全执行。

huobaotiandao的博客 848

同花顺PC端逆向解析:Hook注入与加密破解实战指南

在Windows客户端数据采集场景中,当常规HTTP爬虫失效时,内存级逆向分析成为获取实时行情数据的关键路径。其核心涉及进程注入、运行时解密、反调试绕过等底层技术,本质是理解PE加载机制、函数调用约定与内存保护策略的协同过程。同花顺作为典型加固客户端,采用ASPack加壳+自研解密+多线程校验三重防护,迫使开发者转向APC注入、动态密钥提取与XXTEA算法复刻等高阶手段。本文聚焦于DLL注入选型依据、解密函数定位方法及二进制Blob结构化解析,最终实现从内存读取到Pandas DataFrame的端到端数据

weixin_32234493的博客 1208

问题解决: 发布'xxx'的初始快照尚不可用

自己的一些毛病,导致xx快照尚不可用的错误,解决方法...打SP4补丁... 附一个稍正式语言: [SQL Server 2005 至 SP3] 问题解决: 发布'xxx'的初始快照尚不可用 收藏 经微软技术支持确认...

cpo97305的博客 5660

CentOS 7下Multipath多路径存储的实战配置与性能优化

本文详细介绍了在CentOS 7系统中配置与优化Multipath多路径存储的完整实战流程。从安装部署、核心配置文件解读,到性能调优与生产环境避坑指南,全面解析如何利用Device Mapper Multipath构建高可用、负载均衡的存储链路,提升存储系统可靠性与I/O性能。

weixin_29278805的博客 321

mysql数据库事务讲解_MySQL数据库精讲:一文讲解MySQL事务隔离!

欢迎关注专栏《Java架构筑基》——专注于Java技术的研究与分享!Java架构筑基​zhuanlan.zhihu.comJava架构筑基——专注于Java技术的研究与分享!后续文章将首发此专栏!欢迎各位Java工程师朋友投稿和关注事务就是一组数据库操作要么全部成功,要么全部失败。事务的四大特性:ACID(Atomicity、Consistency、Isolation、Durability,即原子...

weixin_29955355的博客 144

告别连接难题:Windows 11下Multisim主数据库稳定运行终极配置指南

本文详细解析了Windows 11下Multisim 14.0主数据库连接失败的三大根源,并提供了四步终极解决方案,包括系统环境优化、软件权限配置、注册表修复和网络验证绕过技巧。通过实测数据对比,本方案显著提升了启动速度和稳定性,解决了电子仿真中的常见连接问题。

weixin_33738555的博客 436

【RT-DETR涨点改进】独家注意力改进篇 | 手把手教你在RT-DETR上使用LSKAttention大核注意力机制(助力目标检测极限涨点)含多种创新改进点

本文提出了一种LSKA大核注意力机制优化RT-DETR模型的方法。LSKA通过将2D深度卷积核分解为级联的1D水平和垂直核,显著降低了计算复杂度和内存占用,尤其在处理大卷积核时优势明显。该模块在图像分类、目标检测等视觉任务中保持与LKA相当的性能,同时展现出更强的鲁棒性。文章详细介绍了LSKA的网络结构、核心代码实现方法,并提供了多种RT-DETR改进方案,包括rtdetr-r18-LSKA、rtdetr-l-LSKA等7种yaml配置文件,通过实验验证了该方法的有效性。

Ai缝合怪、助力小伙伴高效发论文 252

修改数据无法提交_MySQL数据库精讲:一文讲解MySQL事务隔离!

欢迎关注专栏《Java架构筑基》——专注于Java技术的研究与分享!Java架构筑基​zhuanlan.zhihu.comJava架构筑基——专注于Java技术的研究与分享!后续文章将首发此专栏!欢迎各位Java工程师朋友投稿和关注# 链接 Java程序员福利"常用资料分享"事务就是一组数据库操作要么全部成功,要么全部失败。事务的四大特性:ACID(Atomicity、Consistency、Is...

weixin_36082388的博客 173

ubuntu emto-cpa安装与编译

ubuntu emto-cpa安装与编译

qq_45834835的博客 1436

事务复制提示初始快照不可用_MySQL数据库精讲:一文讲解MySQL事务隔离!

欢迎关注专栏《Java架构筑基》——专注于Java技术的研究与分享!Java架构筑基​zhuanlan.zhihu.comJava架构筑基——专注于Java技术的研究与分享!后续文章将首发此专栏!欢迎各位Java工程师朋友投稿和关注# 链接 Java程序员福利"常用资料分享"事务就是一组数据库操作要么全部成功,要么全部失败。事务的四大特性:ACID(Atomicity、Consistency、Is...

weixin_39922642的博客 79

连接参数详解:Connection Interval, Slave Latency, Supervision Timeout 的协同与调优实战

在低功耗蓝牙(BLE)开发与调试中,Connection Interval(连接间隔)、Slave Latency(从机延迟) 和 Supervision Timeout(监督超时) 是三个核心参数。它们不仅直接影响设备的通信性能、功耗表现和连接稳定性,更是各类技术面试与认证考试的高频考点。本文将从基础概念出发,深入剖析三者的协同机制,结合历年真题解析考点与解题思路,并通过实战案例演示调优方法,快速掌握这一核心知识点。

byte轻骑兵的技术小窝 2762

电路中的DGND、GROUND、GROUND_REF的区别,VREF、VCC、VDD、VEE和VSS的区别?

DGND是数字地,是数字电路部分的公共基准端,用于连接数字电路的接地。

XU157303764的博客 2342

MySQL-事务(下)-MySQL事务隔离级别与MVCC

MySQL事务隔离级别与MVCC机制解析:文章深入剖析了MySQL四种事务隔离级别(读未提交、读已提交、可重复读、可串行化)及其解决的数据一致性问题,重点讲解了默认的可重复读级别。详细阐述了MVCC工作原理,包括隐藏字段、undo日志和ReadView三个关键概念,通过示例演示了版本链形成过程。最后对比了RR和RC隔离级别的本质区别——ReadView生成时机的不同,解释了RR如何避免不可重复读问题。这些核心机制共同保障了数据库在并发环境下的数据一致性和高性能。

nplplus的博客 6232

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

【MySQL】事务(隔离性、MVCC)

事务的概念以及原理

weixin_69380220的博客 1776

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

【MySQL事务】事务的隔离级别

正在进行中且尚未提交。

2301_80224556的博客 2120

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【MySQL】事务及其隔离性/隔离级别

MySQL事务的隔离级别(只有innoDB解决了RR级别的幻读问题)

学了就忘是正常现象 5475

【MySQL】事务及隔离性

【MySQL】事务及隔离性

Sweet_0115的博客 1446
上一篇: 历时七天,史上最强MySQL优化总结,从此优化So Easy!
下一篇: Java后端开发算法基础面试题分享,你离大厂也许就差这份面试题!
Java_supermanNO1
博客等级 码龄7年 1170粉丝 329原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值