Lecture 16 Concurrency Control Theory


并发控制横跨数据库实现的三个部分,operator execution,access methods,buffer pool manager

为什么需要并发控制

transaction

transaction是DBMS执行的最小单位,如果没有开启事务,那么DBMS会把一条sql语句当做一个transaction


将数据库看作是一系列Object的bag。

  • Atomicity,txn必须是原子的
  • Consistency, 对于一个txn执行前后的DB状态,必须保证DB的状态是一致的,比如A给B转100块,那么事务结束时,二者的钱的总数是一致的
  • Isolation,txn之间是透明的,也是就说一个txn未提交,那么其他txn不能够看见该txn所做的改变
  • Durability,txn提交后,其对数据库所做的改变是永久的

Atomicity

Logging


日志还可以audit,也就是查旧账
还可以提高性能,对于I/O操作不行的时候,可以选择先写日志,然后累加到一定时候,异步写到磁盘

Shadow Paging

只备份修改过的page

Consistency

Database Consistency

Transaction Consistency:

transaction consistency由应用本身保证,比如给A减100块,但是给B加150块,就是应用没有保证事务的一致性

Isolation

为了实现高效,DBMS需要实现事务的operation之间的交错执行

Concurrency Control

并发控制的好处:可以更好的利用慢的磁盘,更好的利用多核cpu,

并发控制的执行schedule

serializability这个量来描述一个schedule是否正确,其刻画的是
下面是描述schedule的属性

serializability不好理解,但是很重要与有效?

事务operation之间的conflict

coflict用于判断两个schedule是否是Equivalent,或者说判断一个schedule是否是serializable,
三种conflict:

  • Read-Write Conflicts (“Unrepeatable Reads”),不可重复读
  • Write-Read Conflicts (“Dirty Reads”):
  • Write-Write conflict (“Lost Updates”):

Conflict Serializability

如果依赖图无环,那么该schedule(也就是txn之间的operatorion执行方案)是可串行化的,注意,serializable意味着交错执行多个txn的operations的结果与serial execution一致,conflict serializability是为了保证correctness

但是schedule 与 serial execution一致并不能说明该schedule是conflict serializability

这个一致性冲突没看懂?这里应该是指图中的执行流程是错的,就是与serial execution的执行结果不一致
必须的先写完AB再读AB,或者先读完AB再写AB

view serializability

一个schedule,即使是依赖图中存在环,也有可能是Equivalent Serializable Schedule

view serializability与 conflict serializability都无法判断所有serializable schedule

view serializability虽然比 conflict serializability能够判断更多的schedule是serializable

Durability

logging 与 shadow page也能够保证durability



Google的程序员认为最好还是使用事务处理并发,只有当在使用事务时处理业务,遇到性能问题时,才考虑使用非事务的手段处理业务