数据库系统必须控制事务的并发执行以保证数据库处于一致性状态。
1 | 可串行化的调度(serializability schedule) | 多个事务的并发执行是正确的,当且仅当其结果与某一次序串行执行它们时的结果相同 可串行性是并发事务正确性的准则 当且仅当某并发调度是可串行化的,才认为是正确调度。 |
2 | 冲突可串行化 | 冲突(conflict):当I和J是不同事务在相同数据项上操作的命令,且至少有一个是write命令时,则称I和J是冲突的。 若I和J分别访问不同数据项,则交换I和J的执行次序不会影响调度执行结果。 若I和J访问相同的数据项,则I和J的执行次序可能会影响调度执行结果。 等价调度:若I和J是调度S的两条连续命令,I和J分属不同事务且不冲突,则可以交换执行顺序得到新调度S*,称S和S*等价 冲突等价(conflict equivalent):如果调度S经过一系列非冲突命令交换成S*,则称S与S*是冲突等价的。 冲突可串行化(conflict serializable):若调度S与一个串行调度S*冲突等价,则S是冲突可串行化的。 |
冲突可串行化判定(环检测算法) 如果调度S的优先图中有环,则调度S是冲突不可串行化的; 如果图中无环,则调度S是冲突可串行化的。 步骤:首先需要构造有向图,然后调用环检测算法进行判定。 |