浅析数据库并发控制

原标题:浅析数据库并发控制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产生,用于区分事务开始的先后。

浅析数据库并发控制

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180927A03KPG00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券