在本节中,基于上一节的页模型,提出并发执行正确性的概念,并建立多个事务在时间上交叉执行的模型,提出有关并发事务调度的概念。首先要明确的是,事务的执行是高度动态的,完全建模会带来巨大的理解成本,实际上,当事务到来,并发控制需要对该事务做出执行决定,并使能其和系统中正在运行的事务正确同步。其次,需要考虑执行失败而被终止的事务,在正常执行的路径中,包含提交终止。这些操作的处理方式和直觉很不一样。
并发执行的事务之间的数据访问操作存在潜在的冲突,比如“修改后丢失”、“读不一致”、“脏读”等问题,作为事务执行顺序的保证来说,这些异常都是要避免的,给外部执行一致的印象。
为了判断事务执行时,何种情况是期望的,何种情况是应该避免的,调度器需要在线的应用这些规则。首先,本文假定调度中包含了事务结束标志成功或者不成功,具体的,一个事务成功的结束使用$c$表示,即事务在没有被中断的情况下完成了内部所有的数据操作,而失败事务的结束使用$a$表示,一个被终止的事务不应该对底层数据产生任何影响,这由恢复过程保证。