第十一章]并发控制

概述

  • 事务是并发控制的基本单位
  • 要保证数据的隔离性和一致性

数据不一致性

  • 丢失数据
    • 两个事务同时读改,T2的提交覆盖了T1所读的数
  • 不可重复读
    • T1读后T2改,看似正常,T1所读的数其实已经覆盖
  • 读”脏”数据
    • T1修改后,T2读,T1撤销后,T2所读被修改

主要技术

  • 封锁
  • 时间戳
  • 乐观控制法
  • 多版本并发控制

封锁

封锁就是事务T在对某个数据对象记录操作之前,先向系统发出请求,对其加锁。加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其他事务不能更新此数据对象。

排他锁

其他任何事务不能读写和加锁
  • 写锁
  • X锁

共享锁

其他事务不能写,可以读,和加共享锁
  • 读锁
  • S锁

封锁协议

一级封锁协议

事务T在修改R之前,加X锁,直到事务结束为止
  • 实现修改丢失

二级封锁协议

在一级封锁基础上,事务T在读取R之前,加S锁,直到读取完成
  • 实现读出‘脏’数据

三级封锁协议

在二级封锁基础上,事务T在读取R之前,加S锁,直到事务结束为止
  • 实现不可重复读

死锁和活锁

活锁

一个事务永远等待另一个事务
  • 先来先服务策略

死锁

A等B,B又等A,永不止
  • 一次封锁法
  • 顺序封锁法

两段锁协议

所有事物必须分为两个阶段对数据项加锁和封锁
  • 在对任何数据进行读、写操作前,首先要申请获得对该数据的封锁
  • 释放一个封锁后,事务部在申请和获得其他任何封锁
Prev
实验
Next
第十章]数据库恢复技术
Loading...