当前位置: 首页 > news >正文

系统架构设计师—数据库基础篇—数据库的控制功能

文章目录

  • 事务管理
    • 原子性(Atomicity)
    • 一致性(Consistency)
    • 隔离性(Isolation)
    • 持久性(Durability)
  • 并发控制
    • 排他型封锁(X封锁,写锁)
    • 共享型封锁(S封锁,读锁)
  • 备份
    • 逻辑备份
    • 物理备份
    • 备份的类型
  • 故障恢复
    • 事务故障的恢复
    • 系统故障的恢复
    • 介质故障与病毒破坏的恢复
    • 具有检查点的恢复技术

事务管理

事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。

原子性(Atomicity)

  • 操作
  • 操作序列要么全做要么全不做。

一致性(Consistency)

  • 数据
  • 数据库从一个一致性状态变到另一个一致性状态。

隔离性(Isolation)

  • 执行
  • 不能被其他事务打扰

持久性(Durability)

  • 变化
  • 一旦提交,改变就是永久的。

并发控制

排他型封锁(X封锁,写锁)

只允许一个事物,独锁某个数据,具有排他性

  • 不允许并发加写锁。

共享型封锁(S封锁,读锁)

在S封锁解除之前,不允许任何事务对S锁数据实现X锁。

  • 允许并发加读锁

备份

逻辑备份

利用DBMS自带的工具软件备份和恢复数据库的内容。

物理备份

在操作系统层面上对数据库的数据文件进行备份。

冷备份热备份
关闭数据库进行备份不关闭数据库进行备份。可使用备份软件。

备份的类型

完全备份增量备份差异备份
将数据库的内容全部备份,备份所需时间较长。只备份上次完全、增量或差异备份以来修改的数据。备份自上次完全备份后发生变化的所有数据。

故障恢复

事务故障的恢复

事务故障是指,事务未运行至正常终止点前被撤销,这时恢复子系统应对此事务做撤销处理。

事务故障的恢复是由系统自动完成的,不需要用户干预,步骤如下:

  1. 反向扫描文件日志,查找该事务的更新操作。
  2. 对该事务的更新操作执行逆操作。
  3. 继续反向扫描日志文件,查找该事务的其他更新操作,并做同样处理。
  4. 如此处理下去,直至读到此事务的开始标记,事务故障恢复完成。

系统故障的恢复

系统故障发生时,造成数据库不一致状态的原因有两个:

  1. 由于一些未完成事务对数据库的更新已写入数据库。
  2. 由于一些已提交事务对数据库的更新还留在缓冲区未写入数据库。

系统故障的恢复是在重新启动时自动完成的,不需要用户干预,步骤如下:

  1. 正向扫描日志文件,找出在故障发生前已经提交的事务,将其事务标识记入重做(Redo)队列。同时找出故障发生时尚未完成的事务,将事务标识记入撤销(Undo)队列。
  2. 对撤销队列中的各个事务进行撤销处理:反向扫描日志文件,对每个Undo事务的更新操作执行逆操作。
  3. 对重做队列中各个事务进行重做处理:正向扫描日志文件,对每个Redo事务重新执行日志文件登记的操作。

介质故障与病毒破坏的恢复

在发生介质故障和遭病毒破坏时,磁盘上的物理数据库被破坏,这时的恢复操作可分为三步:

  1. 装入最新的数据库后备副本,使数据库恢复到最近一次转储时的一致性状态。
  2. 从故障点开始反向读日志文件,找出已提交事务标识将其记入重做队列。
  3. 从起始点开始正向阅读日志文件,根据重做队列中的记录,重做所有已完成事务,将数据库恢复至故障前某一时刻的已执行状态。

具有检查点的恢复技术

检查点记录的内容可包括:

  • 建立检查点时刻所有正在执行的事务清单。
  • 这些事务最近一个日志记录的地址。

采用检查点的恢复步骤如下:

  • 找到最后一个检查点记录在日志文件中的位置,由该地址在日志文件中找到最后一个检查点记录。
  • 由该检查点记录得到检查点建立时,所有正在执行的事务清单队列(A)。
  • 建立重做队列(R)和撤销队列(U),将A队列放入U队列中,R队列为空。

相关文章:

  • 【形态学操作中的开运算和闭运算详细讲解】
  • Windows设置目录及子目录大小写不敏感暨git克隆报错同名文件已存在的解决办法
  • Flink MysqlCDC和OracleCDC对比
  • 虚拟卡 WildCard (野卡) 保姆级开卡教程
  • QT day5
  • 当夸克让搜索学会深度思考,AI搜索掀开新篇章
  • 分布式ID生成方案:数据库号段、Redis与第三方开源实现
  • 代码随想录算法训练营第35天 | 01背包问题二维、01背包问题一维、416. 分割等和子集
  • 【芯片设计】处理器芯片大厂前端设计工程师面试记录·20250307
  • ClickHouse 中出现 DB::Exception: Too many parts 错误
  • 什么是向量数据库?向量数据库概念,详细入门
  • 【五.LangChain技术与应用】【26.LangChain Agent基础应用(上):智能代理的构建】
  • 护照阅读器在机场流程中的应用
  • MATLAB中lookAheadBoundary函数用法
  • TWind 的黑马点评随笔
  • Android15请求动态申请存储权限完整示例
  • meta|BioMercator:整合遗传图谱和 QTL 以发现候选基因
  • 【五.LangChain技术与应用】【28.LangChain Agent添加记忆:智能代理的长期学习能力】
  • Java基础知识大全(含答案,面试基础)
  • Facebook 的隐私保护数据存储方案研究
  • 做网站咨询/友链
  • 教师做网站赚钱/推广网站多少钱
  • 网站地市频道建设/seoul national university
  • 男女在床上做羞羞的事的网站/seo服务顾问
  • 网站设计网站建设网站制作/东莞快速优化排名
  • 知名的网站建设/搜索引擎查关键词排名的软件