⑴ 数据库事务正确执行的四个基本要素包括
ACID,指数据库事务正确执行的四个基本要素的缩写。包含:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。一个支持事务(Transaction)的数据库,必需要具有这四种特性,否则在事务过程(Transaction processing)当中无法保证数据的正确性,交易过程极可能达不到交易方的要求。
原子性
整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
一致性
一个事务可以封装状态改变(除非它是一个只读的)。事务必须始终保持系统处于一致的状态,不管在任何给定的时间并发事务有多少。
也就是说:如果事务是并发多个,系统也必须如同串行事务一样操作。其主要特征是保护性和不变性(Preserving an Invariant),以转账案例为例,假设有五个账户,每个账户余额是100元,那么五个账户总额是500元,如果在这个5个账户之间同时发生多个转账,无论并发多少个,比如在A与B账户之间转账5元,在C与D账户之间转账10元,在B与E之间转账15元,五个账户总额也应该还是500元,这就是保护性和不变性
隔离性
隔离状态执行事务,使它们好像是系统在给定时间内执行的唯一操作。如果有两个事务,运行在相同的时间内,执行相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统。这种属性有时称为串行化,为了防止事务操作间的混淆,必须串行化或序列化请求,使得在同一时间仅有一个请求用于同一数据。
持久性
在事务完成以后,该事务对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。
由于一项操作通常会包含许多子操作,而这些子操作可能会因为硬件的损坏或其他因素产生问题,要正确实现ACID并不容易。ACID建议数据库将所有需要更新以及修改的资料一次操作完毕,但实际上并不可行。
目前主要有两种方式实现ACID:第一种是Write ahead logging,也就是日志式的方式(现代数据库均基于这种方式)。第二种是Shadow paging。
⑵ 什么是事务的acid性质由哪些机制保证这些性质的实现
ACID性质
ACID property
定义:ACID指数据库事务正确执行的四个基本要素的缩写,包含原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(rability)。一个支持事务的数据库系统,必须要具有这四种特性,否则在事务执行过程中无法保证数据的正确性,处理过程极可能达不到正确要求。
学科:计算机科学技术_数据库_数据库管理系统及其实现
技术
相关名词:数据库 数据库管理系统 事务
【延伸阅读】
从数据库用户的观点看,数据库中某些特定操作的集合需要被认为是一个独立单元。例如,顾客认为从支票账户到储蓄账户的资金转账是一个操作单元,尽管在数据库系统中这是由对支票账户资金余额的修改、对储蓄账户资金余额的修改以及对本次交易的登记等几个操作组成的。显然,必须要求这些操作要么全都发生,要么由于出错而全不发生。保证这一点非常重要。无论从系统的观点还是从用户的观点,都不愿意看到资金从支票账户支出而未转入储蓄账户的情况发生。
由上述问题,可以引入数据库的“事务”概念。事务是构成单一逻辑工作单元的操作集合。不论有无故障,数据库系统必须保证事务的正确执行,即该事务的整个操作集合完全被执行,或属于该事务的操作一个也不执行。此外,数据库系统必须以一种能避免引入不一致性的方式来管理事务的并发执行。例如,假设系统中有一个资金转账事务,将一笔资金从支票账户转到储蓄账户中,假设还有一个事务是计算顾客总金额,它和上述资金转账的事务在系统中并发地执行。如果计算顾客总金额的事务在资金转账事务从支票账户支出金额之前查看支票账户余额,而在资金存入储蓄账户之后查看储蓄账户余额,并对它们进行求和,该事务就会得到不正确的结果,因为同一笔资金被重复计算了两次。所以,为了保证事务的正确执行,维护数据库的完整性,要求数据库系统维护以下事务特性:
原子性:事务的所有操作在数据库中要么全部正确反映出来,要么全部不反映。
一致性:事务的隔离执行(即没有并发执行的其他事务),保持数据库的一致性。
隔离性:尽管多个事务可以并发执行,但系统必须保证,对任一对事务A和B,在A看来,B或者在A开始之前已经停止执行,或者在A完成之后开始执行。这样,每个事务都感觉不到系统中有其他事务在并发地执行。
持久性:一个事务成功完成后,它对数据库的改变必须是永久的,即使系统可能出现故障。
以上特性统称为ACID特性,他们全部是由数据库管理系统来维护的。
成功完成执行的事务称为已提交事务。已提交事务使数据库进入一个新的一致状态。未能成功完成的事务称为中止事务,中止事务必须对数据库的状态不造成影响。即中止事务对数据库所做的任何改变必须撤销。一旦中止事务造成的变更被撤销,就说明事务已回滚。如此,才能保证数据库当中的数据在经过操作或
⑶ acid的持久性
在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。
由于一项操作通常会包含许多子操作,而这些子操作可能会因为硬件的损坏或其他因素产生问题,要正确实现ACID并不容易。ACID建议数据库将所有需要更新以及修改的资料一次操作完毕,但实际上并不可行。
目前主要有两种方式实现ACID:第一种是Write ahead logging,也就是日志式的方式(现代数据库均基于这种方式)。第二种是Shadow paging。
⑷ 什么是数据库ACID
事务在当今的企业系统无处不在,即使在高并发环境下也可以提供数据的完整性。一个事务是一个只包含所有读/写操作成功的集合。
一个事务本质上有四个特点ACID:
Atomicity原子性
Consistency一致性
Isolation隔离性
Durability耐久性
原子性
原子性任务是一个独立的操作单元,是一种要么全部是,要么全部不是的原子单位性的操作。
一致性
一个事务可以封装状态改变(除非它是一个只读的)。事务必须始终保持系统处于一致的状态,不管在任何给定的时间并发事务有多少。
一致性有下面特点:
如果一个操作触发辅助操作(级联,触发器),这些也必须成功,否则交易失败。
如果系统是由多个节点组成,一致性规定所有的变化必须传播到所有节点(多主复制)。如果从站节点是异步更新,那么我们打破一致性规则,系统成为“最终一致性”。
一个事务是数据状态的切换,因此,如果事务是并发多个,系统也必须如同串行事务一样操作。
在现实中,事务系统遭遇并发请求时,这种串行化是有成本的, Amdahl法则描述如下:它是描述序列串行执行和并发之间的关系。
“一个程序在并行计算情况下使用多个处理器所能提升的速度是由这个程序中串行执行部分的时间决定的。”
大多数数据库管理系统选择(默认情况下)是放宽一致性,以达到更好的并发性。
隔离性
事务是并发控制机制,他们交错使用时也能提供一致性。隔离让我们隐藏来自外部世界未提交的状态变化,一个失败的事务不应该破坏系统的状态。隔离是通过用悲观或乐观锁机制实现的。
耐久性
一个成功的事务将永久性地改变系统的状态,所以在它结束之前,所有导致状态的变化都记录在一个持久的事务日志中。如果我们的系统突然受到系统崩溃或断电,那么所有未完成已提交的事务可能会重演。