原标题:浅析数据库并发控制github.com/CatKangCatKang:数据库事务隔离发展历史zhuanlan.zhihu.com数据库事务隔离发展标准一文中,从标准制定的角度介绍了数据库的隔离级别,介绍了ReadUncommitted、ReadCommitted、RepeatableRead、Serializable等隔离级别的定义。
这个过程中,对可能破坏数据正确性的冲突事务,调度器可能选择下面两种处理方式:Delay:延迟某个事务的执行到合法的时刻Abort:直接放弃事务的提交,并回滚该事务可能造成的影响可以看出Abort比Delay带来更高的成本,接下来我们就介绍不同的并发控制机制在不同情况下的处理方式。分类
如上图所示,这里从横纵两个维度,对常见的并发控制机制进行分类:1.乐观程度不同的实现机制,基于不同的对发生冲突概率的假设,悲观方式认为只要两个事务访问相同的数据库对象,就一定会发生冲突,因而应该尽早阻止;而乐观的方式认为,冲突发生的概率不大,因此会延后处理冲突的时机。
Scheduler对冲突的判断还需要配合LockTable,如下图所示是一个可能得LockTable信息示意,每一个被访问的数据库对象都会在LockTable中有对应的表项,其中记录了当前最高的持有锁的模式、是否有事务在Delay、以及持有或等待对应锁的事务链表;同时对链表中的每个事务记录其事务ID,请求锁的模式以及是否已经持有该锁。
基于Timestamp基于Timestamp的Scheduler会在事务开始时候分配一个全局自增的Timestamp,这个Timestamp通常由物理时间戳或系统维护的自增id产生,用于区分事务开始的先后。
浅析数据库并发控制
领取专属 10元无门槛券
私享最新 技术干货