ITPub博客

首页 > 应用开发 > IT综合 > 事务的基本概念ACID

事务的基本概念ACID

原创 IT综合 作者:hzh_hu 时间:2009-08-06 17:24:33 0 删除 编辑
事务的基本概念
事务处理在应用系统开发中起着重要的作用。简单地来说,事务就是由若干步处理组成的工作单元,这些步骤之间具有一定的逻辑关系,作为一个整体的操作过程,每个步骤必须同时成功或者失败。当所有的步骤都成功的时候,事务就必须“提交”,而当其中有一个步骤失败的时候,整个事务都必须“回滚”,也就是,其中的每一个步骤所做的改动都必须撤销。
举一个例子来说明事务处理的情形。我们考察一个仓库入库的过程。仓库的入库要经过以下步骤:
填写一张入库单,这张入库单上可能包含多种商品,每一种商品入库一定的数量
根据入库单上面的商品的数量,需要修改被入库的商品的现有库存量
保存这张入库单。
上面的操作都必须完整地执行,也就是说,必须在一个“事务”里面完成,否则,就可能出现下面的情形:
商品1在仓库里面原来有100件,这个时候,有一张入库单准备入库50件商品1
系统根据入库单的信息,修改商品1的库存量,这个时候商品1的库存量便为150件
在保存入库单的时候,由于网络故障,入库单保存失败了!
此时的系统中,商品1的库存量已经改变了,已经变成了150件,而实际上,没有任何商品入库!所以,在这种情况下,系统的数据就出现了不一致性。显然,这种情况是不允许发生的。事务处理提供了防止发生这种情况的的方法。
如果有问题发生,所有成功的操作都被撤销,所有的东西都恢复到开始事务的状态。撤销成功操作的过程叫做事务回滚(Rollback)
反之,如果所有的操作完全成功,改变就是永久性的,我们就说这事务已经被提交(Commit)
一个罗辑工作单元必须有四个属性ACID属性
事务的主要特性包括原子性、一致性、隔离性和永久性,即所谓的ACID属性
ACID (atomicity, consistency, isolation, and durability)。
(Atomicity)原子性
原子性表示事务作为一个工作单元处理。事务可能包括若干个步骤,通过把这些步骤作为一个工作单元处理,并在进程周围放上逻辑边界,就可以要求每一个步骤都完全成功,否则,就不能进行下一步的操作。
每一格步骤都依赖于前一步的顺利完成。如果一步失败,则不能完成任何其余的步骤,前面已经完成的步骤也必须全部回滚。如前面的例子,如果在保存入库单的时候出现问题,则所有的对商品现有库存量的修改,都必须恢复到初始的状态。
(Consistency)一致性
一致性将保证事务使系统或数据处于一致状态。数据处于一致状态就是符合数据库的限制或规则。限制就是事务完成时要成立的数据库条件,已在定义数据库结构时被定义,用以指定主键、数字字段有效范围和可否包含null值之类的事项。
如果事务开始时系统处于一致状态,则事务结束时系统ye应处于一致状态,不管事务成功还是失败,提交还是撤销。
一致性是由同一组业务规则或完整性限制确定的。为了保证一致性,需要事务管理者和应用程序开发人员共同努力。
事务管理者应保证事务的原子性、隔离性和耐久性,应用程序开发人员应保证事务的一致性,指定主键、引用完整性限制和其他条件。当准备提交事务的时候,数据库根据这些规则验证其一致性。如果发现事务结果与系统确定的规则一致,则事务提交。如果结果不符合要求,则事务撤销。
一致性保证了事务所做的任何改变不会使系统处于无效状态。这样能使事务更加可靠。如果事务将钱从一个帐户转到另一个帐户,则只要系统中的总金额保持相同,事务就是一致的。
(isolation)隔离性
事务的隔离性提供了事务处理中最强大的特性之一。简单地说,隔离性能保证事务访问的任何数据不会受其他事务所做的任何改变的影响,直到第一个事务完成。
这等于让事务象系统中的唯一事务一样执行。其他请求的数据库操作只能在不破坏当前使用的数据时才能进行。这对于支持数据的并发访问至关重要。
由于并发系统中很可能出现错误或搞乱数据的情况,因此保证隔离性和管理并发执行的责任不能由开发人员完成,而应该由系统来提供一个事务管理器。通常的数据库都支持事务管理,另外还有一些独立的事务管理服务器,如COM+、J2EE中的JTA等。
事务可以采用几种不同的隔离级,使用哪种隔离级取决于几种不同的因素。
(durability)永久性
永久性指定了事务提交时,对数据所做的任何改变都要记录到永久存储器中。这通常通过事务日志来实现。
事务日志将数据存放在数据库之类的资源中,可以在遇到故障时重新采用丢失的事务,也可以在遇到错误时撤销事务。简单的说,事务日志负责跟踪数据库中发生的每个数据操作,使数据可以返回到搞乱前的已知状态。一旦系统恢复到已知状态后,便可以利用事务日至更新构造或重新采用从这个状态开始的改变。
永久性在提交的数据改变是个关联合约时也很重要。事务提交表示数据源和应用程序之间的协议。事务日志就是这个协议的书面记录。更为重要的是,改变本身不是永久的,另一事务可能在此后改变数据。事务日志能提供可追查的依据。
这四个属性通过并发控制技术和日志恢复来保证的
并发控制技术
并发锁保证数据的一致性,隔离性,一致性
日志恢复
进行跟踪和记录,保持了持久性
[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/95530/viewspace-1024990/,如需转载,请注明出处,否则将追究法律责任。

下一篇: nestloop
全部评论

注册时间:2011-01-06

  • 博文量
    47
  • 访问量
    573889