如果事务只提交对数据库所做更新的一部分而不是全都,这违反了事务的( )。

admin2017-08-31  20

问题 如果事务只提交对数据库所做更新的一部分而不是全都,这违反了事务的(    )。

选项 A、原子性
B、一致性
C、隔离性
D、持久性

答案A

解析 数据库管理系统运行的基本工作单位是事务,事务是用户定义的一个数据库操作序列,这些操作序列要么全做要么全不做,是一个不可分割的工作单位。事务具有以下特性(ACID特性):
(1)原子性:数据库的逻辑工作单位。
事务的原子性保证事务包含的一组更新操作是原子不可分的,也就是说这些操作是一个整体,对数据库而言全做或全不做,不能部分完成。这一性质即使在系统崩溃之后仍能得到保证,在系统崩溃之后将进行数据库恢复,用来恢复和撤销系统崩溃处于活动状态的事务对数据库的影响,从而保证事务的原子性。系统对磁盘上的任何实际数据的修改之前都会将修改操作信息本身的信息记录到磁盘上。当发生崩溃时,系统能根据这些操作记录当时该事务处于何种状态,以此确定是撤销该事务所做的所有修改操作还是将修改的操作重新执行。
(2)一致性:使数据库从一个一致性状态变到另一个一致性状态。
一致性要求事务执行完成后,将数据库从一个一致状态转变到另一个一致状态。它是一种以一致性规则为基础的逻辑属性。例如,在转账的操作中,各账户金额必须平衡,这一条规则对于程序员而言是一个强制的规定,由此可见,一致性与原子性是密切相关的。事务的一致性属性要求事务在并发执行的情况下事务的一致性仍然满足。它在逻辑上不是独立的,由事务的隔离性来表示。
(3)隔离性:不能被其他事务干扰。
隔离性意味着一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。它要求即使有多个事务并发执行,看上去每个成功事务按串行调度执行一样。这一性质的另一种称法为可串行性,也就是说系统允许的任何交错操作调度等价于一个串行调度。串行调度的意思是每次调度一个事务,在一个事务的所有操作没有结束之前,另外的事务操作不能开始。由于性能原因,需要进行交错操作的调度,但也希望这些交错操作的调度的效果和某一个串行调度是一致的。DM实现该机制是通过对事务的数据访问对象加适当的锁,从而排斥其他的事务对同一数据库对象的并发操作。
(4)持续性(永久性):一旦提交,改变就是永久性的。
系统提供的持久性保证要求一旦事务提交,那么对数据库所做的修改将是持久的,无论发生何种机器和系统故障都不应该对其有任何影响。例如,自动柜员机(ATM)在向客户支付一笔钱时,就不用担心丢失客户的取款记录。事务的持久性保证事务对数据库的影响是持久的,即使系统崩溃。正如在讲原子性时所提到的那样,系统通过做记录来提供这一保证。
转载请注明原文地址:https://kaotiyun.com/show/kVRZ777K
0

最新回复(0)