ACID是数据库事务正确执行的四个基本要素的缩写,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。一个支持事务(Transaction)的数据库系统,必需要具有ACID特性,否则在事务过程(Transaction processing)当中无法保证数据的正确性,交易过程极可能达不到交易方的要求。
原子性(Atomicity)
– 事务的所有操作,要么全部完成,要么全部不完成,不会结束在某个中间环节。
一致性(Consistency)
– 事务开始之前和事务结束之后,数据库的完整性限制未被破坏。
隔离性(Isolation)
– 当多个事务并发访问数据库中的同一数据时,所表现出来的相互关系。
持久性(Durability)
– 事务完成之后,事务所做的修改持久化保存,不会丢失。
1.原子性
整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
2. 一致性
在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。
3. 隔离性
隔离状态执行事务,使它们好像是系统在给定时间内执行的唯一操作。如果有两个事务,运行在相同的时间内,执行相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统。
这种属性有时称为串行化,为了防止事务操作间的混淆,必须串行化或序列化请求,使得在同一时间仅有一个请求用于同一数据。
4. 持久性
在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。
由于一项操作通常会包含许多子操作,而这些子操作可能会因为硬件的损坏或其他因素产生问题,要正确实现ACID并不容易。ACID建议数据库将所有需要更新以及修改的资料一次操作完毕,但实际上并不可行。
目前主要有两种方式实现ACID:第一种是Write ahead logging,也就是日志式的方式。第二种是Shadow paging。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15498/viewspace-2125599/,如需转载,请注明出处,否则将追究法律责任。