数据库期末复习总结之并发控制(三)

并发控制概述

  1. 多事务执行方式 :
    (1)事务串行执行
    (2)交叉并发方式
    (3)同时并发方式(多处理机)
  2. 并发控制机制的任务
    (1)对并发操作进行正确调度
    (2)保证事务的隔离性
    (3)保证数据库的一致性
    事务并发执行破坏事务的隔离性和数据库的一致性。
数据的不一致性
  1. 数据丢失
  2. 不可重复读
  3. 读“脏”数据

并发控制的主要方法是封锁机制(对于DBMS)。

封锁

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

基本封锁类型
  1. 排它锁(简记为X锁)又称为写锁
    若事务T对数据对象A加上X锁,则只允许T读取和修改A,其它任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。

  2. 共享锁(简记为S锁)又称为读锁
    若事务T对数据对象A加上S锁,则其它事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。

三级封锁协议
  1. 一级封锁协议
    事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放该锁。
    结果:可防止丢失修改
    这里写图片描述
  2. 二级封锁协议
    一级封锁协议+事务T在读取数据R前必须先加S锁,读完后即可释放S锁。
    结果:防止丢失修改和读“脏”数据。
  3. 三级封锁协议
    一级封锁协议 + 事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放
    结果:防止丢失修改、不读“脏”数据和可重复读。
活锁和死锁
  1. 活锁: 先来先服务
  2. 死锁:
    预防方法:一次封锁法和顺序封锁法
  3. 死锁的诊断与解除
    超时法
    等待图法
并发调度的可串行性

定义:多个事务的并行执行是正确的,当且仅当其结果与按某一次序串行地执行它们时的结果相同。这种并行调度策略称为可串行化(Serializable)的调度。
可串行性是并行事务正确性的唯一准则。
一个给定的并发调度,当且仅当它是可串行化的,才认为是正确调度。

冲突可串行化调度

冲突操作是指不同事务对同一个数据的读写操作和写写操作:

注意:不同事务对同一个数据的写读操作不是冲突操作。

不同事务的冲突操作和同一事务的俩个操作是不能交换的。

一个调度Sc在保证冲突操作次序不变的情况下,通过交换两个事务不冲突操作的次序得到另一个调度Sc1,如果Sc1是串行的,称调度Sc为冲突可串行化调度。

一个调度是冲突可串行化的,一定是可串行化的调度。——是充分条件
保证并发操作调度正确性的方法
封锁方法:两段锁(Two-Phase Locking,简称2PL)协议

两段锁协议
  1. 两段锁协议的内容:

    • 在对任何数据进行读、写操作之前,事务首先要获得对该数据的封锁
    • 在释放一个封锁之后,事务不再获得任何其他封锁。
  2. “两段”锁的含义——事务分为两个阶段

    • 第一阶段是获得封锁,也称为扩展阶段;
    • 第二阶段是释放封锁,也称为收缩阶段。

事务遵守两段锁协议是可串行化调度的充分条件,而不是必要条件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值