1、写在前面
1.1 为什么要并发控制
如果事务在并发执行时,来自各个并发事务的所有指令的执行控制都是由操作系统负责,那么许多调度都是可能的。这样,很可能会导致数据库处于不一致的状态。所以,必须保证数据库执行的任何调度都能是数据库保持一致状态,这是数据库中并发控制(concurrency-control)模块的功能。
具体地说,数据库的并发控制模块就是为用户提交的多个事务产生满足需求的调度。
1.2 并发控制的相关内容
1.2.1 内容列表
为了理解这一过程,我们需要了解:
并发中有关调度的相关基本概念
串行化及其判定
可恢复调度与无级联调度
事务的隔离级别等相关信息。
1.2.2 内容概要
基本概念部分,略过不表。
串行化及其判定部分大致介绍了如何判定事务在并发执行时是否和先后顺序执行时效果一致。明确了这部分,DBMS在为事务选择并发调度时,才知道最优解是什么(也就是,执行效果和先后执行相同)。
可恢复调度和无级联调度部分是在从故障恢复的角度讲述,如果一个并行执行的调度中间发生故障,为了保证事务的原子性,必须进行回滚恢复,然而,有时恢复的代价很大,有时甚至无法恢复。这部分对这些情况分别介绍。
事务的隔离级别部分讲述,在事务并发的过程中,如果要保证任何时刻绝对的数据正确,代价是很高的。比如,好多时候就无法实现并发,只能是串行执行。在一些联机的场景中,这是不能接受的。隔离级别就是为了兼顾效率的产物,通过允许不同程度地允许,并发过程中数据的暂时不一致,来换取更好的执