`

转载:事务的特性(简称ACID)

阅读更多

数据库系统必须维护事务的以下特性(简称ACID)

  原子性(Atomicity)

  一致性(Consistency)

  隔离性(Isolation)

  持久性(Durability)

 

原子性(Atomicity)

事务中的所有操作要么全部执行,要么都不执行;

如果事务没有原子性的保证,那么在发生系统

故障的情况下,数据库就有可能处于不一致状

态。

 

原子性(Atomicity)

如果故障发生在write(A)read(B)之间,则将

有可能造成帐户A的余额已经减去50元钱,而

帐户B的余额却没有改变,凭空就少了50元钱。

 

值得注意的是,即使没有故障发生,系统在某

一时刻也会处于不一致状态。原子性的要求就

是这种不一致状态除了在事务执行当中出现

外,在其他任何时刻都是不可见的。保证原子

性是DBMS的责任:即事务管理器和恢复管理

器的责任。

 

一致性(Consistency)

主要强调的是,如果在执行事务之前数据库是

一致的,那么在执行事务之后数据库也还是一

致的;

所谓一致性简单地说就是数据库中数据的完整

性,包括它们的正确性。

 

对于图中的事务Ti来说,一致性要求就是事务

的执行不改变帐户A和帐户B的和。否则的话

事务就会创造或销毁钱!

 

单个事务的一致性是由对该事务进行编键的应

用程序员的责任,但是在某些情况下利用

DBMS中完整性约束(如触发器)的自动检查功

能有助于一致性的维护。

 

隔离性(Isolation)

即使多个事务并发(同时)执行,每个事务都

感觉不到系统中有其他的事务在执行,因而也

就能保证数据库的一致性;

 

事情的起因:

即使每个事务都能保持一致性和原子性,但如

果几个事务并发执行,且访问相同的数据项,

则它们的操作会以人们所不希望的某种方式交

叉执行,结果导致不一致的状态!

 

访问相同数据项的两个事务并发执行

 

 

解决办法:

如果几个事务要访问相同的数据项,为了保证

数据库的一致性,可以让这几个事务:

①串行执行:即一个接着一个地执行事务;

②并发执行:即同时执行多个事务,但用并发

控制机制来解决不同事务间的相互影响。

 

 

隔离性的保证:

事务的隔离性能够确保事务并发执行后的系统

状态与这些事务按某种次序串行执行后的状态

是等价的。保证隔离性也是DBMS的责任:即

并发控制管理器的责任。

 

持久性(Durability)

事务成功执行后它对数据库的修改是永久的,

即使系统出现故障也不受影响。

持久性的含义是说:一旦事务成功执行之后,

它对数据库的更新是永久的。可以用以下两种

方式中的任何一种来达到持久性的目的:

以牺牲应用系统的性能为代价

以多占用磁盘空间为代价

 

以牺牲应用系统的性能为代价:要求事务对数据库系

统所做的更新在事务结束前已经写入磁盘;

以多占用磁盘空间为代价:要求事务已经执行的和已

写到磁盘的、对数据库进行更新的信息是充分的(例

如,数据库日志的信息就足够的多),使得DBMS

系统出现故障后重新启动系统时,能够(根据日志)

新构造更新。保证持久性也是DBMS的责任:即恢复

管理器的责任。

 

事物的状态有如下几种:

⑴中止事务:执行中发生故障、不能执行完成的

事务;

⑵事务回滚:将中止事务对数据库的更新撤消

掉;

⑶已提交事务:成功执行完成的事务。

 

系统的恢复步骤是:

1、反向扫描文件日志(即从最后向前扫描日志文件),查找该事务

的更新操作。

2、对该事务的更新操作执行逆操作。即将日志记录“更新前的值”写

入数据库。这样,如果记录中是插入操作,则相当于做删除操

作;若记录中是删除操作,则做插入操作;若是修改操作,则相

当于用修改前的值代替修改后的值。

3、继续反向扫描日志文件,查找该事务的其他更新操作,并做和2

一样的同样处理。

4、如此处理下去,直至读到此事务的开始标记,事务的故障恢复就

完成了。

 

事务的隔离级别

隔离级别定义了事务与事务之间的隔离程度。

隔离级别与并发性是互为矛盾的:隔离程度越

高,数据库的并发性越差;隔离程度越低,数

据库的并发性越好。

 

 

 

ANSI/ISO SQL92标准定义了一些数据库操作的隔离级别

  未提交读(read uncommitted

  提交读(read committed

  重复读(repeatable read

  串行读(serializable

 

隔离级别的效果

更新丢失(lost update):当系统允许两个事务同时

更新同一数据是,发生更新丢失。

脏读(dirty read):当一个事务读取另一个事务尚未

提交的修改时,产生脏读。

不可重复读取(nonrepeatableread):同一查询在

同一事务中多次进行,由于其他提交事务所做的修改

或删除,每次返回不同的结果集,此时发生不可重复

读取。

幻像(phantom read):同一查询在同一事务中多次

进行,由于其他提交事务所做的插入操作,每次返回

不同的结果集,此时发生幻像读。

 

隔离级别及其对应现象

分享到:
评论

相关推荐

    MySQL数据库:事务的概述、ACID.pptx

    术语“ACID”是一个简称,每个事务的处理必须满足ACID原则, 即原子性(A)、一致性(C)、隔离性(I)和持久性(D)。 原子性 原子性意味着每个事务都必须被认为是一个不可分割的单元。假设一个事务由两个或者多个...

    深入学习MySQL事务:ACID特性的实现原理

    本文将首先介绍MySQL事务相关的基础概念,然后介绍事务的ACID特性,并分析其实现原理。MySQL博大精深,文章疏漏之处在所难免,欢迎批评指正。事务(Transaction)是访问和更新数据库的程序执行单元;事务中可能包含...

    请简述 MySQL 中的事务,以及事务的 ACID 特性

    MySQL 中的事务是指一组数据库操作,这些操作要么全部执行成功,要么全部失败回滚。MySQL 中的事务通过 ACID 特性来保证数据的一致性和可靠性,ACID 特性包括哪些?

    (详细)事务特性和隔离级别

    (详细)事务特性和隔离级别 事务特性和隔离级别 一.数据库事务特性 数据库事务transaction是组合一系列数据库操作(增删查改)作为一个逻辑处理单元的操作。单元内存ACID四大特性。 原子性(Atomicity):一个事务...

    数据库事务管理及锁.xmind

    数据库事务管理及锁机制原理剖析:包括事务特性 ACID、数据隔离级别、事务实现的原理、锁机制,及过程中可能遇到的查询效率及死锁问题等

    数据库恢复技术.doc

    这4 个特性也简称为ACID 特性。 原子性:事务是数据库的逻辑工作单位,事务中包括的诸操作要么都做,要么都不做。 一致性:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。 隔离性:一个事务的...

    分布式事务解决方案「手写代码」视频教程

    1.基础概念:了解事务的ACID、CAP理论、BASE理论,为分布式方案打基础 2.2PC/3PC:通过2PC演化各种方案:XA方案、JTA、LCN、Seata 3.TCC:TCC不依赖本地事务的解决方案 4.可靠消息最终一致性:唯有了解方案原理,方能...

    Java-JDBC【源码】事务介绍、事务特性、操作事务(事务提交、异常回滚)

    Java-JDBC【之】事务介绍、事务特性、操作事务(事务提交、异常回滚...1.2.事务特性(ACID) 1.3.隔离性(Isolation),带来的问题与处理 1.4.JDBC事务处理 2.事务提交(代码实现) 3.异常回滚(代码实现) 4.完整源码

    【面试高频!】数据库事务/事务的作用/数据库事务ACID属性 / 特性/事务的隔离性/数据库事务隔离级别/ 数据库的隔离级别导致问题/数据库事务的使用/mysql的事务死锁/ 快速解决mysql死锁问

    数据库事务ACID属性 / 特性 原子性(Atomicity):要么全部完成,要么全部不完成。 一致性(Consistency):事务必须始终保持系统处于一致性。 隔离性(Isolation):隔离执行事务,使它们好像是系统在给定时间内执行的...

    (mysql面试题)MySQL中的事务和锁的概念及其作用及代码展示.txt

    事务具有以下四个特性,通常称为ACID特性: - 原子性(Atomicity):事务中的所有操作要么全部成功,要么全部失败回滚; - 一致性(Consistency):事务必须使数据库从一个一致性状态变换到另一个一致性状态; - ...

    数据库系统中事务的ACID原则.pdf

    数据库系统中事务的 数据库系统中事务的ACID原则 原则 事务的原⼦性、⼀致性、独⽴性及持久性 事务的原⼦性是指⼀个事务要么全部执⾏,要么不执⾏.也就是说⼀个事务不可能只执⾏了⼀半就停⽌了.⽐如你从取款机取钱,这...

    19-事务-源代码.rar

    1.事务的特性ACID 2.并发访问问题----由隔离性引起 3.事务的隔离级别 默认是自动事务: 执行sql语句:executeUpdate() ---- 每执行一次executeUpdate方法 代表 事务自动提交 通过jdbc的API手动事务: 开启事务...

    Mysql中事务ACID的实现原理详解

    面试官:”知道事务的四大特性么?” 你:”懂,ACID嘛,原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)!” 面试官:”你们是用mysql数据库吧,能简单说说innodb中怎么实现这四大特性...

    LNH_MySQL 04-MySQL服务事务详细介绍及ACID特性说明.mp4

    LNH_MySQL 04-MySQL服务事务详细介绍及ACID特性说明.mp4

    讲解MySQL中的事务特性

    事务有以下四个标准属性的缩写ACID,通常被称为: 原子性: 确保工作单元内的所有操作都成功完成,否则事务将被中止在故障点,和以前的操作将回滚到以前的状态。 一致性: 确保数据库正确地改变状态后,成功提交的...

    MySQL 事务(五).pdf

    事务日志:事务日志的作用和恢复机制。 批量操作和事务:在执行大量数据插入或更新时如何有效使用事务。 分布式事务:涉及多个数据库时的事务管理。 案例研究:通过实际案例分析,展示事务在复杂查询中的应用。 适用...

    数据库面试题集.docx

    简述数据库事务的四个特性及含义。 答:数据库事务Transaction正确执行的四个基本要素:ACID,原子性(Atomicity)、一致性(Correspondence)、隔离性(Isolation)、持久性(Durability)。 原子性:整个事务中的所有操作...

    基础篇-MySQL简介 (Java面试,MySQL高频知识点:事务特点ACID,事务隔离级别,存储引擎,数据库锁)

    事务讲下。 MySQL有几个隔离级别(最好这个问题不要等被问,而在问上个的时候主动说这个) MySQL是怎么确保事务的正常执行的(日志,这个问得好像不多,但是可以作为一个亮点) MySQL有哪些存储引擎,各自的特点 ...

    数据库简答题及答案.pdf

    这 4 个特性也简称为 ACID 特性。 原子性:事务是数据库的逻辑工作单位,事务中包括的诸操作要么都做,要么都不做。 一致性:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。 隔离性:一个事务...

Global site tag (gtag.js) - Google Analytics