数据库事务的四大特性:ACID

了解数据库前必须要搞懂的事情:MySQL 事务四大特性 ACID 是怎么实现的? 本文详细解析了MySQL事务的ACID特性及其底层实现机制:原子性通过undolog记录修改前状态实现回滚;持久性依赖redolog确保提交数据不丢失;隔离性采用锁和MVCC技术处理并发冲突;一致性则是前三者与数据库约束共同作用的结果。文章还区分了redolog(崩溃恢复)和binlog(主从同步)的不同作用,并简要说明了两阶段提交的必要性。通过转账案例的通俗讲解,帮助读者理解事务如何保障数据安全与一致性。 阅读详情

http://blog.youkuaiyun.com/tianjf0514/article/details/7858004

事务的4大特性(ACID):

原子性(Atomicity):

事务是数据库的逻辑工作单位,它对数据库的修改要么全部执行,要么全部不执行。

一致性(Consistemcy):

事务前后,数据库的状态都满足所有的完整性约束。

隔离性(Isolation):

并发执行的事务是隔离的,一个不影响一个。如果有两个事务,运行在相同的时间内,执行相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统。这种属性有时称为串行化,为了防止事务操作间的混淆,必须串行化或序列化请求,使得在同一时间仅有一个请求用于同一数据。通过设置数据库的隔离级别,可以达到不同的隔离效果。

持久性(Durability):

在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。

并发事务引起的问题:

更新丢失:

两个事务都同时更新一行数据,但是第二个事务却中途失败退出,导致对数据的两个修改都失效了。这是因为系统没有执行任何的锁操作,因此并发事务并没有被隔离开来。

脏读:

脏读又称无效数据读出。一个事务读取另外一个事务还没有提交的数据叫脏读。

例如:事务T1修改了一行数据,但是还没有提交,这时候事务T2读取了被事务T1修改后的数据,之后事务T1因为某种原因Rollback了,那么事务T2读取的数据就是脏的。

不可重复读:

不可重复读是指在同一个事务内,两个相同的查询返回了不同的结果。

例如:事务T1读取某一数据,事务T2读取并修改了该数据,T1为了对读取值进行检验而再次读取该数据,便得到了不同的结果。

幻读:

事务在操作过程中进行两次查询,第二次查询的结果包含了第一次查询中未出现的数据或者缺少了第一次查询中出现的数据

例如:系统管理员A将数据库中所有学生的成绩从具体分数改为ABCDE等级,但是系统管理员B就在这个时候插入了一条具体分数的记录,当系统管理员A改结束后发现还有一条记录没有改过来,就好像发生了幻觉一样。这就叫幻读。

事务的隔离级别:

以上的4种问题(更新丢失、脏读、不可重复读、幻读)都和事务的隔离级别有关。通过设置事务的隔离级别,可以避免上述问题的发生。

未授权读取级别:

也称为读未提交(Read Uncommitted)。

以操作同一行数据为前提,读事务允许其他读事务和写事务,未提交的写事务禁止其他写事务(但允许其他读事务)。

此隔离级别可以防止更新丢失,但不能防止脏读、不可重复读、幻读。

此隔离级别可以通过“排他写锁”实现。

授权读取级别:

也称为读提交(Read Committed)。

以操作同一行数据为前提,读事务允许其他读事务和写事务,未提交的写事务禁止其他读事务和写事务。

此隔离级别可以防止更新丢失、脏读,但不能防止不可重复读、幻读。

此隔离级别可以通过“瞬间共享读锁”和“排他写锁”实现。

可重复读取级别:

可重复读取(Repeatable Read)。

以操作同一行数据为前提,读事务禁止其他写事务(但允许其他读事务),未提交的写事务禁止其他读事务和写事务。

此隔离级别可以防止更新丢失、脏读、不可重复读,但不能防止幻读。

此隔离级别可以通过“共享读锁”和“排他写锁”实现。

序列化级别:

序列化(Serializable)。

提供严格的事务隔离。它要求事务序列化执行,事务只能一个接着一个地执行,不能并发执行。

此隔离级别可以防止更新丢失、脏读、不可重复读、幻读。

如果仅仅通过“行级锁”是无法实现事务序列化的,必须通过其他机制保证新插入的数据不会被刚执行查询操作的事务访问到。

隔离级别越高,越能保证数据的完整性和一致性,但是对并发性能的影响也越大。对于多数应用程序,可以优先考虑把数据库系统的隔离级别设为Read Committed。它能够避免更新丢失、脏读,而且具有较好的并发性能。尽管它会导致不可重复读、幻读这些并发问题,在可能出现这类问题的个别场合,可以由应用程序采用悲观锁或乐观锁来控制。


D触发器(D Flip-Flop)与D锁存器(D Latch) 在解释这个练习题之前,我们先来简单回顾一下D触发器(D flip-flop)和D锁存器(D latch)的概念,以及它们在数字电路中的作用。这将帮助我们理解所提到的练习。 阅读详情

相关推荐

反激电源RCD尖峰吸收电路的原理以及调试

反激电源RCD尖峰吸收电路的原理以及调试

mnmmnmn的博客 9250

SpringBoot(15) 事务(@Transactional)整合

SpringBoot(15) 事务(@Transactional)整合

weixin_38380811的博客 3418

语言 拉丁超立方抽样_医学统计与R语言:间断时间序列分析(Interrupted time series regression)...

微信公众号:医学统计与R语言如果你觉得对你有帮助,欢迎转发Interrupted time series (ITS) analysis is a valuable study design for evaluating the effectiveness of population-level health interventions that have been implemented...

weixin_29300805的博客 3706

【JavaEE】Spring事务-@Transactional参数介绍-事务的隔离级别以及传播机制

本文重点讲解@Transactional的各个参数作用,尤其是其中的事务隔离级别isolation和事务传播机制propagation!

Carefree_State的博客 5625

基于GIS的生态安全网络格局构建(附练习数据下载)

基于GIS的生态安全网络格局构建(附练习数据下载)

qq_43173805的博客 3124

clock-gating整理

文章目录clock gating 理解1、latch双稳态器件常见锁存器结构SR锁存器D锁存器2、clock gating(clock low-active) latch + AND gating 电路(clock high-active)latch + OR gating 电路 clock gating 理解 1、latch 参考:https://www.cnblogs.com/IClearner/p/6443539.html 双稳态器件 稳定状态为0或1两种 举例:交叉耦合反相器 假设初始Q为1,则可

d_b_的博客 1万+

spring 事务-使用@Transactional 注解(事务隔离级别)

先看下@Transactional可以配制那些参数及以其所代表的意义。 isolation事务隔离级别,使用时一般如下。 @Transactional(isolation=Isolation.DEFAULT) public void method(){} isolation的参数有以下五种: 1_1、Isolation.DEFAULT:为数据源的默认隔离级别 1_2、isolation=Isolation.READ_UNCOMMITTED:未授权读取级别 以操作同一行数据为前提,读.

红袖添香的博客 1万+

手把手教你用Github提交CVE漏洞(附完整截图流程)

本文提供了在GitHub平台提交CVE漏洞的完整实战指南。从前期准备、目标搜寻与漏洞验证,到撰写规范的GitHub Issue进行披露,最后通过官方渠道完成CVE提交,手把手教你如何将安全研究成果转化为获得国际认可的CVE编号。

weixin_28309571的博客 324

@Transactional事务的传播行为和隔离级别

事务传播行为和隔离级别

weixin_38417148的博客 2365

EVM算法的Python实现

EVM(Eulerian Video Magnification,欧拉视频放大或欧拉影像放大)是一种将视频中的微小变化进行放大的算法,正如论文标题所说《Eulerian Video Magnification for Revealing Subtle Changes in the World》,该算法可以将视频中的微小变化转变为肉眼可以

flyingzhao 1万+

Matlab仿真:均匀面阵方向图、均匀线阵方向图、均匀圆阵方向图

其中,阵列方向图是评价阵列性能的重要参数之一。均匀面阵由若干个相同的阵元构成,阵元间等距排列,阵元的方向图形状为一个圆盘。均匀线阵由若干个相同的阵元构成,阵元间等距排列,阵元的方向图形状为一个矩形。本文将采用Matlab进行仿真,分别实现均匀面阵方向图、均匀线阵方向图和均匀圆阵方向图,并对三种阵列进行比较分析。通过以上代码仿真,我们可以对均匀面阵、均匀线阵和均匀圆阵进行方向图的绘制,进一步分析不同阵列在天线性能方面的差异。Matlab仿真:均匀面阵方向图、均匀线阵方向图、均匀圆阵方向图。

2301_79326857的博客 3436

@Transactional详解

@Transactional 是 Spring 框架中的一个注解,用于声明一个方法需要进行事务处理。通过在方法上加上 @Transactional 注解,表示该方法需要被包装成一个事务,并由 Spring 容器统一管理、控制和回滚事务。 @Transactional 注解可以用于类或方法级别上,并且可以指定特定的事务属性,如传播行为、隔离级别、是否只读等。也可以使用默认值,即使用默认的事务管理器和默认的事务属性。 使用 @Transactional 注解可以方便地在 Spring 中实现对目标方法的事务

Ascend1977的博客 4451

Unity之ASE如何实现UV扰动闪电效果

UV扰动,顾名思义,就是通过干扰原贴图的UV,使UV发生变化,导致贴图出现会动的效果,如果我们贴图和扰动的速度调整的刚好合适的话,会出现一些非常棒的效果,比如下图所示的闪电效果:好了,一个简单的UV扰动就讲完了,同学们可以发挥想象力,我们是否可以利用UV扰动的原理,做一点别的炫酷的效果出来,比如,交错流动,流光效果等等。很期待你的留言,这篇文章就到这里,希望对你有所帮助。

TxNet 1789

数据库事务ACID四大特性:原子性、一致性, 隔离性, 持久性

数据库的事务必须满足4个特性:原子性, 一致性, 隔离性, 持久性,它们英文单词首字母合起来就是:ACID 在这些事务特性中,数据“一致性”为最终目标,其他特性都是为达到这个目标而采取的措施和手段。数据库管理系统一般采用重执行日志来保证原子性、一致性和持久性。重执行日志记录了数据库变化的每一个动作,数据库在一个事务中执行一部分操作后发生错误退出,数据库即可根据重执行日志撤销已经...

摸金校尉的博客 1万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

数据库:事务ACID四大特性(图文详解)

数据库事务的四大特性(图文详解)

喻师傅的学习笔记 4950

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

事务与 ACID:数据库到底承诺了什么

关系型数据库都说自己支持事务,但承诺到哪一步?本文只讲标准层:三条特性是可实现的机制,一致性只是结果;隔离级别对应三类并发异常;提交成功后到底保证了什么。凡涉及实现都标注产品出处。

生活,本身就是一场“知行合一”的修行。 561

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

数据库知识速记:事务的四大特性(ACID)

思维导图链接:https://kdocs.cn/l/ceP4cpYdx3Vu。

无限大的博客 607

你真的会用DB::transaction吗?:Laravel 10事务使用中的4大误区与纠正

掌握Laravel 10数据库事务DB::transaction的正确用法,避开常见误区。详解事务适用场景、自动回滚机制、闭包内外异常处理差异及嵌套事务注意事项。提升数据一致性与代码健壮性,值得收藏。

CompiGap的博客 718

面试100题:第61/63题数据库事务的四大特性以及隔离级别| ACID | MVCC

一、什么是事务?(transaction control language) 它是对数据进行访问与更新操作所组成的一个逻辑工作单元,要么成功完全执行,要么失败都不执行。 二、事务的四大特性(ACID原则)是什么? 1.原子性:事务在一次执行过程中只允许要么全部成功执行要么全部失败执行。 2.一致性:(事务完成提交)事务不能破坏数据库的完整性和一致性,一个事务执行前和执行后为从一个一致性状态转为新的一个一致性状态。若数据库一个事务在执行的过程中只成功部分执行则为不一致性。 3.持久性:一旦提交(commit)

weixin_39309258的博客 737

MySQL数据库事务的四大特性以及事务的隔离级别

目录 一、事务的四大特性(ACID) 1、原子性(Atomicity) 2、一致性(Consistency) 3、隔离性(Isolation) 4、持久性(Durability) 二、事务的隔离级别(默认事务级别为可重复读) MySQL数据库的四种事务隔离级别 Read Uncommitted(读取未提交内容) Read Committed(读取提交内容) Repeatable...

l1394049664的博客 7万+

ACID(数据库事务正确执行的四个基本要素)

关系型数据库都会有ACID(数据库事务正确执行的四个基本要素的缩写) 关于关系型数据库与非关系型数据库的知识请观看笔者的:https://blog.youkuaiyun.com/weixin_43606158/article/details/91060443 ACID其中包含:原子性,一致性,隔离性,持久性。一个支持事务的数据库,必须要具有这四种特性,否则在事务过程当中无法保证数据的正确性,交易过程可能达不到...

吴小迪的博客 3万+

数据库四大特性

数据库系统必须维护事务的以下特性(简称ACID): 原子性(Atomicity) 一致性(Consistency) 隔离性(Isolation) 持久性(Durability) ⑴ 原子性(Atomicity)   原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。 ⑵ 一致性...

sinat_38195280的博客 7964
上一篇: mysql 主主互备
下一篇: 讯宝DS9808的设置文档以及如何恢复出场设置并且添加回车符的步骤
千雅爸爸
博客等级 码龄18年 292粉丝 639原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值