恢复机制-数据库系统中的故障(事务故障、系统故障、介质故障)、一致性错误、窃取但不强制的缓冲区管理策略

news2024/11/22 5:36:32

一、引言

数据库管理系统DBMS的事务处理技术实现的一个主要功能部分就是恢复机制,恢复机制完成的功能就是对发生故障后系统中事务的更新结果进行数据恢复,保证事务的原子性和持久性,从而进一步保证数据库的一致性。

数据库系统与其他计算机系统一样易发生故障,可能发生的故障大致可归为事务故障、系统故障和介质故障三类。数据恢复就是针对不同故障导致数据库出现的不一致错误进行的

二、事务故障

事务故障就是在事务执行过程中发生错误,导致事务夭折,不能执行完成。发生的错误主要有两种

  • 一种是事务内部操作受限,如不满足完整性约束限制,访问不到数据、运算溢出等,导致事务无法继续正常执行。比如对于银行转账事务,因账户余额不足让事务回滚
  • 另一种错误是系统进入了一种不良的状态,如发生死锁等,导致事务无法继续正常执行

三、系统故障

1、系统故障是指造成系统停止运转的任何事件,例如CPU等特定类型的硬件故障、操作系统故障、突然断电等。发生系统故障后,系统崩溃,需要重启 

2、由于主存是易失性存储器,会造成主存内容,尤其是数据库缓冲区中的内容丢失,导致所有事务都将非正常终止

但系统故障不会影响到磁盘上的数据库,系统故障常称为软故障

三、介质故障

介质故障被称为硬故障,介质故障主要是指使数据库存储介质发生破坏的故障

  • 一般是磁盘故障,如磁盘损坏、磁头碰撞、即时强磁场干扰等
  • 或者是自然灾害或人为破坏造成的设备毁坏,如爆炸、火灾等引起数据库服务器的毁坏 

介质故障比事务故障和系统故障发生的可能性要小,但破坏性更大,有时是难以恢复的 

四、不一致错误

1、故障导致数据库出现的不一致错误,与系统的数据库读写操作策略有关

2、数据库系统的数据读写

在数据库系统中,数据库常驻于非易失性存储器,通常为磁盘。由于读取磁盘的速度相对来说是比较慢的,为了能够加快处理数据的速度,须将事务读取的数据缓存在内存里读取的数据所在的内存区域称为数据库缓冲区,当事务执行时,首先到缓冲区中去读取数据,假设要读取的数据这里用X表示,当数据X不在缓冲区中,则需由缓冲区管理器将数据库中X所在磁盘块的内容由磁盘输入到内存中,即执行input操作,然后数据X被事务读取到事务的私有工作区,即执行read操作,在工作区内完成对数据X的拷贝t的处理,事务可在每一个更新操作后,将t值复制给缓冲区中的数据X,即执行write操作,如果此时数据X不在缓冲区内,也需要首先执行input操作,将数据X从磁盘读入到数据库缓冲区中,数据库缓冲区中的数据更新到磁盘上,也需要由缓冲区执行output操作

因此,为了更好地阐述问题,也为了更好地理解数据库管理系统的实现技术,后续我们将事务中的数据库操作,用对数据库缓冲区的读写操作来表示

3、对于从账户A转账1000元到账户B的转账事务,我们就可以用这样的对缓冲区数据A和B的读写来表达对数据库中账户A和账户B余额的读写操作

4、假设恢复机制采用一种窃取但不强制的缓冲区管理策略,这也是一些DBMS的事务处理机制实际采用的策略

  • 该策略的思想是为了从磁盘上输入事务B所需的数据到内存,需要占用事务A所处理的数据使用的内存空间,就要先将事务A所处理的数据输出到磁盘上,即执行事务A所处理数据的output操作,再执行事务B所需的数据的input操作,此时称事务B窃取事务A的空间
  • 此外,在事务提交后,其他事务可能仍会访问缓冲区中的数据库数据,因此并不要求将事务的更新结果立即反应到磁盘上,即不强制地执行output操作。

至于窃取哪个事务占用的内存空间,以及何时强制执行提交事务所写数据的output操作由缓冲区管理器根据具体的缓冲器置换算法来决定,比如采用一种LRU即最近最久未使用算法

5、当恢复机制采用这种窃取不强制的缓冲区管理策略

  • 就会出现在事务提交之前,事务的部分执行结果可能已被更新到磁盘上的数据库中
  • 而事务提交后,事务的执行结果并没有立即更新到磁盘上的数据库中

6、这样就导致在发生事务故障后

  • 事务不能正常提交,但夭折的事务的部分执行结果可能已对数据库进行了更新。事务没有保持原子性

 7、在发生系统故障后

  • 在发生系统故障后,除了夭折的事务的部分执行结果可能已经写入磁盘上的数据库,有些已提交的事务对数据库的更新结果可能有一部分甚至全部还在缓冲区中,尚未写回到磁盘上的数据库中事务没有保持持久性

8、在发生介质故障后

  • 不仅影响正在存取磁盘上数据库的所有运行事务,使得这些事务夭折,更主要会破坏磁盘上的数据库,使已提交的事务对数据库的更新结果丢失,事务不能保持持久性

因此,当数据库系统发生故障后,数据库可能会出现这三种错误现象,处于暂时的不一致错误状态,破坏了事务的原子性和持久性 

五、小结

1、事务处理的恢复机制,就是要在数据库系统发生各类故障后,对于可能处于不一致错误状态的数据库采取一定的恢复技术并运用相关的恢复策略,来保持事务的原子性和持久性,将数据库恢复到一个一致性状态

2、不同的DBMS的事务处理机制所采用的缓冲区管理策略可能不同,发生故障后的数据库不一致错误也会不同恢复技术和恢复策略的具体实现也会有所不同 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1880224.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

办公开源利器:ONLYOFFICE

目录 0、引子:一、ONLYOFFICE协作空间1.可集成至Web应用程序2.多种协作方式3.快捷的AI助手4.公共房间:连接第三方存储空间5.集成6.开发人员工具7.用插件拓展功能 二、新增功能1.功能全面的PDF编辑2.PDF 表单3.文本文档编辑器4.电子表格编辑器 三、结语 0…

EasyExcel数据导入

前言: 我先讲一种网上信息的获取方式把,虽然我感觉和后面的EasyExcel没有什么关系,可能是因为这个项目这个操作很难实现,不过也可以在此记录一下,如果需要再拆出来也行。 看上了网页信息,怎么抓到&#x…

【操作系统】进程管理——进程的概念、组成和特征(个人笔记)

学习日期:2024.6.29 内容摘要:进程的基本概念和特征、状态和转换 进程的概念 程序与进程 程序:是静态的,是存放在磁盘里的可执行文件,就是一系列的指令集合 进程(Process):是动态…

一文带你了解乐观锁和悲观锁的本质区别!

文章目录 悲观锁是什么?乐观锁是什么?如何实现乐观锁?什么是CAS应用局限性ABA问题是什么? 悲观锁是什么? 悲观锁它总是假设最坏的情况,它会认为共享资源在每次被访问的时候就会出现线程安全问题&#xff0…

primeflex overflow样式类相关的用法和案例

文档地址&#xff1a;https://primeflex.org/overflow 案例1 <script setup> import axios from "axios"; import {ref} from "vue";const message ref("frontend variable") axios.get(http://127.0.0.1:8001/).then(function (respon…

库存管理系统基于spingboot vue的前后端分离仓库库存管理系统java项目java课程设计java毕业设计

文章目录 库存管理系统一、项目演示二、项目介绍三、部分功能截图四、部分代码展示五、底部获取项目源码&#xff08;9.9&#xffe5;带走&#xff09; 库存管理系统 一、项目演示 库存管理系统 二、项目介绍 基于spingboot和vue前后端分离的库存管理系统 功能模块&#xff…

如何利用python画出AHP-SWOT的战略四边形(四象限图)

在企业或产业发展的相关论文分析中&#xff0c;常用到AHP-SWOT法进行定量分析&#xff0c;形成判断矩阵后&#xff0c;如何构造整洁的战略四边形是分析的最后一个环节&#xff0c;本文现将相关代码发布如下&#xff1a; import mpl_toolkits.axisartist as axisartist import …

chrome.storage.local.set 未生效

之前chrome.storage.local.set 和 get 一直不起作用 使用以下代码运行成功。 chrome.storage.local.set({ pageState: "main" }).then(() > {console.log("Value is set");});chrome.storage.local.get(["pageState"]).then((result) > …

java之命令执行审计思路

1 漏洞原理 因用户输入未过滤或净化不完全&#xff0c;导致Web应用程序接收用户输入&#xff0c;拼接到要执行的系统命令中执行。一旦攻击者可以在目标服务器中执行任意系统命令&#xff0c;就意味着服务器已被非法控制。 2 审计中常用函数 一旦攻击者可以在目标服务器中执行…

2024 Parallels Desktop for Mac 功能介绍

Parallels Desktop的简介 Parallels Desktop是一款由Parallels公司开发的桌面虚拟化软件&#xff0c;它允许用户在Mac上运行Windows和其他操作系统。通过强大的技术支持&#xff0c;用户无需重新启动电脑即可在Mac上运行Windows应用程序&#xff0c;实现了真正的无缝切换。 二…

基于LangChain+LLM的本地知识库问答:从企业单文档问答到批量文档问答

前言 过去半年&#xff0c;随着ChatGPT的火爆&#xff0c;直接带火了整个LLM这个方向&#xff0c;然LLM毕竟更多是基于过去的经验数据预训练而来&#xff0c;没法获取最新的知识&#xff0c;以及各企业私有的知识 为了获取最新的知识&#xff0c;ChatGPT plus版集成了bing搜索…

11_电子设计教程基础篇(磁性元件)

文章目录 前言一、电感1、原理2、种类1、制作工艺2、用途 3、参数1、测试条件2、电感量L3、品质因素Q4、直流电阻&#xff08;DCR&#xff09;5、额定电流6、谐振频率SRF&#xff08;Self Resonant Frequency&#xff09;7、磁芯损耗 4、应用与选型 二、共模电感1、原理2、参数…

第一周:李宏毅机器学习笔记

第一周学习周报 摘要一、机器学习基础理论1. 什么是机器学习&#xff1f;2. 机器学习“寻找”的函数有哪些类型&#xff1f;3. 机器学习中机器如何“寻找”函数&#xff1f;三步走3.1 第一步&#xff1a;设定函数的未知量&#xff08;Function with Unknown Parameters&#xf…

大多数博客首页都在使用的文字打字机出现效果

打字机效果展示 原理步骤 初步框架 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</…

vue使用axios获取信息的案例

List组件&#xff08;用来展示搜索的信息&#xff09; <template><div class"row"><!-- 列表数据 --><div class"card" v-for"user in info.users" :key"user.login" v-show"info.users.length">&l…

在 Windows 下使用 Linux 命令的多种方法

在 Windows 操作系统上使用 Linux 命令行工具&#xff0c;对于许多开发者和系统管理员来说是一个常见的需求。特别是对于那些习惯于 Linux 命令行的用户来说&#xff0c;Windows 自带的 CMD 和 PowerShell 可能并不满足他们的需求。虽然 Windows Subsystem for Linux (WSL) 是一…

【JavaEE】多线程代码案例(1)

&#x1f38f;&#x1f38f;&#x1f38f;个人主页&#x1f38f;&#x1f38f;&#x1f38f; &#x1f38f;&#x1f38f;&#x1f38f;JavaEE专栏&#x1f38f;&#x1f38f;&#x1f38f; &#x1f38f;&#x1f38f;&#x1f38f;上一篇文章&#xff1a;多线程&#xff08;2…

力扣 单词规律

所用数据结构 哈希表 核心方法 判断字符串pattern 和字符串s 是否存在一对一的映射关系&#xff0c;按照题意&#xff0c;双向连接的对应规律。 思路以及实现步骤 1.字符串s带有空格&#xff0c;因此需要转换成字符数组进行更方便的操作&#xff0c;将字符串s拆分成单词列表…

Linux --账号和权限管理

目录 1、 管理用户账号和组账概述 1.1 用户账号分类 1.2 组账号 1.3 UID 和 GID 2、用户账号文件 2.1 passwd 2.2 shadow 3、管理目录和文件属性 3.1 chage 命令 3.2 useradd 命令 3.3 passwd 命令 ​编辑3.4 usermod 命令 3.5 userdel 命令 4、用户账户的初始配置…