数据库系统原理
  • 数据库系统原理
  • 引言
    • 数据库系统概述
  • 关系模型介绍
    • 关系数据库结构
    • 数据库模式
    • 关系代数
      • 选择运算
      • 投影运算
      • 笛卡尔运算
      • 连接运算
      • 集合运算
      • 其他运算
  • SQL介绍
    • SQL语言分类
    • SQL数据类型
    • SQL数据库操作
    • SQL数据表操作
    • SQL数据操纵语言
    • SQL数据查询语言
    • 集合运算
    • 聚集函数
  • 中级SQL
    • 连接查询
    • 内连接
    • 外连接
    • 交叉连接和自连接
    • 视图
    • 完整性约束
    • SQL用户和授权
  • 高级SQL
    • 函数
    • 存储过程
    • 触发器
  • ER模式数据库设计
    • 数据库设计过程概览
    • 需求分析
    • 实体-联系模型
      • 复杂属性
      • 映射基数和弱实体集
    • 将E-R图转换为关系模式
    • E-R模型设计
  • 关系数据库设计
    • 数据库设计规范化
    • 函数依赖理论
    • 关系范式
  • 半结构化数据
    • 半结构化数据
  • 应用程序开发
    • ADO.NET访问数据库技术
    • 断开模式数据查询
    • 连接模式数据更新
  • 数据存储结构
    • 磁盘
    • 文件的存储
    • 文件的逻辑结构
    • 文件组织
  • 索引
    • 索引基本概念
    • B树索引
    • B+树索引
    • MySQL索引的基本语法
    • 联合索引
  • 查询处理
    • 查询处理概述
  • 查询优化
    • 查询优化概述
    • 查询树的启发式优化(代数优化算法)
  • 事务
    • 事务的概念
    • 事务的特性
    • MySQL事务处理
    • 可串行化
  • 并发控制
    • 并发控制概述
    • 封锁
    • 两阶段封锁协议封锁
    • 多粒度封锁
    • 活锁和死锁
    • 基于时间戳排序的并发控制
    • 乐观控制法
  • 恢复系统
    • 数据库恢复概述
    • 数据库恢复的实现技术
    • 基于检查点的数据库恢复
Powered by GitBook
On this page
  1. 并发控制

封锁

Previous并发控制概述Next两阶段封锁协议封锁

Last updated 4 months ago

并发控制避免由于并发操作引起的三类问题,即保障事务的隔离型。

并发控制的主要方法:封锁机制

封锁是实现并发控制的一个非常重要的技术,是指事务T在对某个数据对象(例如表、记录等)操作之前,先向系统发出请求,对其加锁。加锁后事务T可以操作该对象,在事务T释放它的锁之前,其他的事务不能更新该数据对象。封锁一般由DBMS自动执行。

封锁类型:排他锁(X)和共享锁(S)

  • X锁:排他锁或者写锁。若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他事务对A的任何封锁请求都不能成功。

  • S锁:共享锁或者读锁。若事务T对数据对象A加上S锁,则T可以读A,但不可以修改A,其他事务可以对A加S锁,而不可以加X锁。

封锁协议:对数据对象加锁时,还需约定一些规则。对封锁方式规定不同的规则,形成不同的封锁协议。

封锁协议

  • 一级封锁协议:事务T在修改数据R之前,必须先对其加X锁,直到事务结束才释放。一级封锁协议可以防止丢失修改。如果只是读数据,不需要加锁,不能保证可重复读,不读脏数据。

  • 二级封锁协议:一级封锁协议的基础上,事务T在读取数据R之前,必须先对其加上S锁,读完后即可释放S锁,可以防止读脏数据。不能保证可重复读。

  • 三级封锁协议:一级封锁协议的基础上,事务T在读取数据R之前,必须先对其加S锁,直到事务结束才释放。三级封锁协议可以更进一步防止读-写依赖。