什么是事务(transaction)?它有什么好处
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/18 01:39:18
什么是事务(transaction)?它有什么好处
什么是事务(transaction)?它有什么好处
什么是事务(transaction)?它有什么好处
为了完成对数据的操作,企业应用经常要求并发访问在多个构件之间共享的数据.这些应用在下列条件下应该维护数据的完整性(由应用的商务规则来定义):
分布式访问一个单独的数据资源,以及从一个单独的应用构件访问分布式资源.
在这种情况,可能要求在(分布式)资源上的一组操作被当作一个工作单元(unit).在一个工作单元中,操作的所有部分一起成功或失败并恢复.在下面的情况下这个问题更加复杂:
通过一组分布式的、访问多个资源的数据的构件实现一个工作单元,和/或部分操作是被顺序执行的或在要求协调和/或同步的并行线程中.
在所有情况下,都要求应用维护一个工作单元的成功或失败.在失败的情况下,所有资源要把数据状态返回到以前的状态
(比如说,工作单元开始前的状态).
事务的概念和和事务管理器(或者一个事务处理服务)在一个工作单元中的维护数据完整性,这就简化了这样的企业级别分布式应用的构造.
一个事务是有下列属性的一个工作单元:
原子性(ATOMICITY):
一个事务要被完全的无二义性的做完或撤消.在任何操作出现一个错误的情况下,构成事务的所有操作的效果必须被撤消,数据应被回滚到以前的状态.
一致性(CONSISTENCY):
一个事务应该保护所有定义在数据上的不变的属性(例如完整性约束).在完成了一个成功的事务时,数据应处于一致的状态.换句话说,一个事务应该把系统从一个一致-状态转换到另一个一致状态.举个例子,在关系数据库的情况下,
一个一致的事务将保护定义在数据上的所有完整性约束.
隔离性(ISOLATION):
在同一个环境中可能有多个事务并发执行,而每个事务都应表现为独立执行.串行的执行一系列事务的效果应该同于并发的执行它们.这要求两件事:
在一个事务执行过程中,数据的中间的(可能不一致)状态不应该被暴露给所有的其他事务.
两个并发的事务应该不能操作同一项数据.数据库管理系统通常使用锁来实现这个特征.
持久性(DURABILITY):
一个被完成的事务的效果应该是持久的.