数据库系统概念》18-事务



事务是一个程序执行单元,它访问且可能更新不一样的数据项。事务对于实现数据库中的数据更新是很关键的,只有这样才能保证并发执行与各类故障不会致使数据库处于不一致状态。

1、事务具备ACID特性:即原子性、一致性、隔离性和持久性
原子性保证事务的全部影响在数据库中要么所有反映出来,要么根本不反映。发生故障后数据库不能处于事物部分执行后的状态。
一致性保证若数据库一开始是一致的,则事务执行后数据库仍处于一致状态。
隔离性保证并发执行的事务相互隔离,使得每一个事务感受不到系统中其它事务的并发执行。
持久性保证一旦一个事务提交后,它对数据库的改变不会丢失,即便系统可能出现故障。

2、事务的并发执行提升了事务的吞吐量和系统利用率,也减小了事务的等待时间。
但多个事务在数据库中并发执行时,可能没法再保证数据的一致性。所以系统必须控制各并发事务之间的相互做用。
因为事务是保持一致性的单元,因此事务的串行执行能保证一致性。串行调度是可串行化的,但若是许多事务的步骤交错执行,则很难肯定一个调度是不是可串行化的。肯定一个事务有哪些操做、多个事务的操做如何相互做用是比较困难的。因此,一般不会考虑一个事务对某一数据项的的全部细节操做,而只考虑两种操做:read和write。
要求事务集的并发执行所产生的任何调度的执行效果等价于由这些事务按某种串行顺序执行的效果,保证这个特性的系统称为保证了可串行化。考虑一个调度S含有I,J两条指令,只有I和J全为read指令时,两条指令的执行顺序才是可有可无的,而只要有至少一条是write指令时,I和J是冲突的。
若是调度S能够通过一系列非冲突指令交换转换成S1,则称S1是S的冲突等价。存在几种不一样的等价概念,因此可串行化分为了冲突可串行化和视图可串行化。

3、事务并发执行所产生的调度的可串行化能够经过多种并发控制机制中的一种来加以保证。给定一个调度,能够经过为该调度构造优先图及搜索是否无环来断定它是否冲突可串行化。还有更好的并发控制机制可用来保证可串行化。
调度必须是可恢复的,这样若是事务a依赖于事务b,若是b停止时,a也要停止。调度也最好是无级联的,这样不会因为一个事务的停止引发其它事务的级联停止。无级联性是经过只容许事务读取已经提交的数据来保证的。

学习资料:Database System Concepts, by Abraham Silberschatz, Henry F.Korth, S.Sudarshan

 数据库

相关文章
相关标签/搜索