暑期系列:数据库杂七杂八

Author Avatar
NENEIIII Sep 02, 2021
  • Read this article on other devices

写在^ 前面

并发控制

并发可能导致的三种不一致状态

  1. 丢失修改

    写-写

    两个事务T2和T2读入同一数据并修改,T2的提交结果破坏了T1提交的结果,导致T1的修改被丢失

  2. 不可重复读

    读-修改

    image-20210830125511047

    读-删除

    读-插入

  3. 读脏数据

    修改-读

并发控制:正确调度并发操作,避免造成不一致性

  • 封锁技术

写锁:其他事务不能读和写,也不能申请任何锁

读锁:其它事务可以读,可以再申请读锁

  • 封锁协议:规定申请时间,持锁时长,释放时间

    一级协议:修改前必须加写锁,事务[^ 结束]后释放

    [^ 结束]: commit OR rollback

    image-20210830164133066
  1. 判断有几个事务
  1. 自左向右,逐个判断是否存在冲突操作

  2. 以锚定事务为起点,形成冲突的操作为终点,得有向边

(1)先判断第一个r2(A),找到冲突操作R2(A)W3(A),形成一条有向边

(2)接着判断第二个

(3)以此类推得到全部有向边

  1. 绘制前驱图(不用重复画)
  1. 判断:前驱图存在回路,说明该调度是冲突不可串行化
  • 两段锁协议:所有加锁放在第一个解锁之前

    满足该协议的调度一定是可串行化的(正确的),反之不成立。