数据库并发

 

1. 数据库并发控制理论

事务:是对数据库的一系列读或者写操作(R(A),W(B),…)

ACID of Txn

概念 定义
原子性(Atomicity) 事务是一个不可分割的工作单位,事务中的操作要么都做,要么都不做
一致性(Consistency) 事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态
隔离性(Isolation) 一个事务的执行不能被其他事务干扰
持久性(Durability) 事务一旦提交,对数据库的改变是永久的

如何做到 Atomicity

  1. undo log 数据库在事务开始之前,会先将事务对数据库的修改操作记录到一个日志(磁盘和内存中都有)中,当事务执行失败时,可以通过日志进行回滚操作。
  2. shadow paging 事务开始之前,数据库会将当前的数据库页拷贝一份,当事务执行成功后,再将拷贝的页替换原来的页。

如何做到 Isolation

通过使用 并发控制协议 来保证事务的隔离性,有两种类型的并发控制协议:

  1. 乐观并发控制协议 乐观并发控制协议是在事务提交时检查事务是否违反了隔离性,如果违反了隔离性,则进行回滚操作。
  2. 悲观并发控制协议 悲观并发控制协议是在事务执行时,就对事务进行加锁,保证事务的隔离性。

Schedule of tarnsactions

串行调度(Serial Schedule) :事务按照顺序执行,没有并发。不会交错不同事务的操作的调度。

等价调度(Equivalent Schedule) :执行第一个调度的效果与执行第二个调度的效果相同

可串行化调度(Serializable Schedule) :一个等价于一些事务串行执行的调度。如果每个事务都保持一致性,那么每个可序列化调度都保持一致性。

冲突操作

冲突操作 :两个事务操作的集合,如果这两个事务操作的集合中有一个操作是写操作,那么这两个事务操作的集合就是冲突操作。

  • 读写冲突(R-W):一个事务读取了另一个事务的写操作。

造成不可重复读(Unrepeatable Read):当事务多次读取同一对象时,得到的值不同。

  • 写读冲突(W-R):一个事务写了一个数据,另一个事务读了这个数据。
  • 写写冲突(W-W):两个事务都写了同一个数据。