ACID,指数据库事务正确执行的四个基本要素的缩写.包含:原子性(Atomicity)、一致性 (Consistency)、隔离性(Isolation)、持久性(Durability)。一个支持交易(Transaction)的 数据库系统,必需要具有这四种特性,否则在交易过程(Transaction processing)当中无法保证数据 的正确性,交易过程极可能达不到交易方的要求.
原子性 (ATOMICITY)
整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执 行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
一致性 (CONSISTENCY)
在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。
隔离性 (ISOLATION)
两个事务的执行是互不干扰的,一个事务不可能看到其他事务运行时,中间某一时刻的数据。
持久性 (DURABILITY)
在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。
一事务处理介绍
事务是这样一种机制,它确保多个SQL语句被当作单个工作单元来处理。事务具有以下的作用:
* 一致性:同时进行的查询和更新彼此不会发生冲突,其他用户不会看到发生了变化但尚未提交的 数据。
* 可恢复性:一旦系统故障,数据库会自动地完全恢复未完成的事务。
二事务与一致性
事务是完整性的单位,一个事务的执行是把数据库从一个一致的状态转换成另一个一致的状态。因 此,如果事务孤立执行时是正确的,但如果多个事务并发交错地执行,就可能相互干扰,造成数据库状 态的不一致。在多用户环境中,数据库必须避免同时进行的查询和更新发生冲突。这一点是很重要的, 如果正在被处理的数据能够在该处理正在运行时被另一用户的修改所改变,那么该处理结果是不明确的 。
不加控制的并发存取会产生以下几种错误:
1 丢失修改(lost updates)
当多个事务并发修改一个数据时,不加控制会得出错误的结果,一个修改会覆盖掉另一个修改。
2 读的不可重复性
当多个事务按某种时间顺序存取若干数据时,如果对并发存取不加控制,也会产生错误。
3 脏读(DIRDY DATA),读的不一致性
4 光标带来的当前值的混乱
事务在执行过程中它在某个表上的当前查找位置是由光标表示的。光标指向当前正处理的记录。当 处理完该条记录后,则指向下一条记录。在多个事务并发执行时,某一事务的修改可能产生负作用,使 与这些光标有关的事务出错。
5 未释放修改造成连锁退出
一个事务在进行修改操作的过程中可能会发生故障,这时需要将已做的修改回退(Rollback)。如 果在已进行过或已发现错误尚未复原之前允许其它事务读已做过修改(脏读),则会导致连锁退出。
6 一事务在对一表更新时,另外的事务却修改或删除此表的定义。
数据库会为每个事务自动地设置适当级别的锁定。对于前面讲述的问题:脏读、未释放修改造成的 连锁退出、一事务在对一表更新时另外的事务却修改或删除此表的定义,数据库都会自动解决。而另外 的三个问题则需要在编程过程中人为地定义事务或加锁来解决。