事务
事务的ACID特性:
原子性;持久性;隔离性;一致性
保证事务隔离性的机制:并发机制
并发机制的两种方式:两阶段封锁和快照隔离
1:基于锁的协议
两阶段封锁协议:每个事务分两个阶段提出加锁和解锁的申请
阶段1:增长阶段:事务可以获得锁,但是不能释放锁
最初,事务处于增长阶段,事务根据需要获得锁,一旦事务释放了锁,就进入了缩减阶段,并且不能再发出加锁请求。事务最后加锁的位置称为封锁点,事务可以根据封锁点来进行排序,这个顺序就是事务的一个串行化顺序
阶段2:缩减阶段:事务可以释放锁,但是不能获得新锁
严格两阶段锁协议:避免两阶段锁出现的级联回滚现象,提出严格两阶段锁,要求事务所持有的所有排它锁必须在事务提交后才可以释放,避免该事务所写的数据在该事务提交之前被其他事务访问
强两阶段锁协议:在严格两阶段锁的基础上,不允许事务释放任何锁,保证事务按照提交的顺序可串行化。
事务日志记录类型:T,Start,T,commit,T,abort
redo操作:把事务更新过得数据值都置成新值
undo操作:把事务更新过得所有数据值都恢复成旧值,undo也会留下redo-only日志记录执行的更新
关于检查点(checkpoint)
在日志中加入checkpoint,对于在考察点前完成的事务来说,checkpoint必在Commit或者abort之后,所以此时不需要对事务载执行redo。对于在checkpoint写入日志之后才开始执行的事务进行undo或者redo操作
没有commit或者abort,执行undo操作
有commit或者abort,执行redo操作