数据库系统必须维护事务的以下特性(简称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数据库中的事务是数据库操作的基本单位,用于确保一组SQL语句要么全部执行,要么全部不执行,从而保证数据...在设计数据库系统时,合理地利用事务和ACID特性,可以有效地防止数据错误,提高系统的稳定性和可靠性。
本文将首先介绍MySQL事务相关的基础概念,然后介绍事务的ACID特性,并分析其实现原理。MySQL博大精深,文章疏漏之处在所难免,欢迎批评指正。事务(Transaction)是访问和更新数据库的程序执行单元;事务中可能包含...
### 数据一致性的守护者:事务的神秘力量 在数据库领域,数据一致性是保障信息准确性与可靠性的核心。尤其是在像MySQL这样的关系型数据库管理系统(RDBMS)中,事务扮演着确保数据一致性的基石角色。本文将深入探讨...
主要内容包括事务的ACID特性(原子性、一致性、隔离性、持久性)、事务的隔离级别(读未提交、读已提交、可重复读、序列化)、事务的开始与结束、锁的类型(共享锁、排他锁、更新锁、意图锁)及其级别(页级锁、行级...
事务具备四个核心特性,通常被称为ACID特性: 1. **原子性(Atomicity)**:事务中的所有操作被视为一个不可分割的整体,要么全部成功执行,要么全部失败并回滚。这意味着事务中的每个操作都必须成功,否则整个事务...
3. 隔离性(Isolation):事务的执行不能被其他事务干扰,一个事务内部的操作及使用的数据对并发的其他事务是隔离的。 4. 持久性(Durability):一旦事务提交,则其所做的修改就会永久保存在数据库中。 MySQL中...
### MySQL数据库:事务与锁机制 #### 一、事务的基础概念与特性 ##### 1. 事务的概念 事务(Transaction)是数据库操作的基本单位。它确保了一组操作要么全部成功,要么全部失败,从而保持数据的一致性和完整性。...
MySQL 中的事务是指一组数据库操作,这些操作要么全部执行成功,要么全部失败回滚。MySQL 中的事务通过 ACID 特性来保证数据的一致性和可靠性,ACID 特性包括哪些?
事务管理需要保证四个基本原则,即ACID属性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。 事务管理的基本概念包括事务的定义、特性、以及数据库的一致性和可靠性。...
事务具备四大特性,通常称为ACID特性,它们分别是: 1. **原子性(Atomicity)**:事务中的所有操作被视为一个不可分割的工作单元。这意味着事务中的所有操作要么全部成功,要么全部失败。如果事务中的某个操作失败...
事务的ACID属性是确保数据库事务正确执行的四个关键特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。本文将详细探讨这四个属性,并展示如何在实际的数据库操作中...
(详细)事务特性和隔离级别 事务特性和隔离级别 一.数据库事务特性 数据库事务transaction是组合一系列数据库操作(增删查改)作为一个逻辑处理单元的操作。单元内存ACID四大特性。 原子性(Atomicity):一个事务...
数据库事务管理及锁机制原理剖析:包括事务特性 ACID、数据隔离级别、事务实现的原理、锁机制,及过程中可能遇到的查询效率及死锁问题等
#### 二、事务的四大特性(ACID) 1. **原子性(Atomicity)**: - 定义:事务中的所有操作,要么全部完成,要么全部都不完成。一旦事务的一部分被提交,所有其他部分也必须完成。 - 示例:如在银行转账场景中,...
根据给定文件的信息,本文将深入探讨"HBase_SI"这一理论框架,该理论旨在实现HBase中的ACID特性。文章将从多个角度分析HBase_SI的设计理念、技术细节及其应用场景。 ### HBase_SI:实现HBase_ACID特性的理论 #### ...
1.基础概念:了解事务的ACID、CAP理论、BASE理论,为分布式方案打基础 2.2PC/3PC:通过2PC演化各种方案:XA方案、JTA、LCN、Seata 3.TCC:TCC不依赖本地事务的解决方案 4.可靠消息最终一致性:唯有了解方案原理,方能...
Java-JDBC【之】事务介绍、事务特性、操作事务(事务提交、异常回滚...1.2.事务特性(ACID) 1.3.隔离性(Isolation),带来的问题与处理 1.4.JDBC事务处理 2.事务提交(代码实现) 3.异常回滚(代码实现) 4.完整源码
ACID属性是数据库事务处理的基石,确保了数据的完整性和一致性。通过理解和应用ACID属性,开发者可以设计出高效、可靠的数据库事务处理流程。随着技术的发展,对ACID属性的深入理解和应用将变得更加重要。