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

一、引言

数据库管理系统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.mzph.cn/diannao/37460.shtml

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

相关文章

Win11 搭建 Java 开发环境(JDK)

Win11 搭建 Java 开发环境(JDK) 前言步骤1、下载 JDK2、安装 JDK3、配置环境变量(我设置的顺序可不是随便的哟~)3-1、设置 JAVA_HOME_11和 JAVA_HOME3-2、设置 PATH3-3、设置 CLASS_HOME备注1、可以不必再手动配置 CLASSPATH2、恢复 jre 文件夹(有没有 jre 文件夹其实不影…

昇思25天学习打卡营第2天|数据集Dataset

学习目标:熟练掌握mindspore.dataset mindspore.dataset中有常用的视觉、文本、音频开源数据集供下载,点赞、关注收藏哦 了解mindspore.dataset mindspore.dataset应用实践 拓展自定义数据集 昇思平台学习时间记录: 一、关于mindspore.dataset minds…

在HBuilder X中ElementUI框架的搭建

前言 本文将详解基于Vue-cli脚手架搭建的项目如何使用ElementUI ?所以在学习本篇文章内容之前建议先学习vue-cli脚手架项目的搭建和学习 使用HbuilderX快速搭建vue-cil项目https://mp.csdn.net/mp_blog/creation/editor/140043776 ElementUI框架: Element&#xff…

【Java】解决Java报错:UnsupportedOperationException in Collections

文章目录 引言一、UnsupportedOperationException的定义与概述1. 什么是UnsupportedOperationException?2. UnsupportedOperationException的常见触发场景3. 示例代码 二、解决方案1. 使用适当的集合类型2. 创建可变副本3. 使用合适的集合工厂方法4. 使用不可变集合…

帮助某企业分析人才流失问题(附方案)

网游公司如何留住人才?某大型网游公司在如何留住人才方面存在一些问题,人才流失严重,人才流失也给企业带来了不小的打击,对该网游公司的发展造成了严重影响,在日益激励的人才争夺战中,如何保留优秀人才一直…

GPT-4o技术粗粗粗解

GPT-4o是一个非常优秀的多模态大模型。它的输入是语音、文字、图像/视频。输出自然有语音、文字、图像。如果说它像一个人的能力,那还真的差不多了。可能离AGI就不远了吧!在现有的AI能力路上,SamAltman那句逆言的忠耳一定要听:不要…

ElementUI搭建使用过程

1.ElementUI概述 Element,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库,相当于是css的框架 2.安装ElementUI 第一步:创建一个vue-cil项目 !!!(上篇文章已详细讲述搭建过…

游戏AI的创造思路-技术基础-深度学习(7)TF

重头戏TF,汽车人,变形~~~~ 现在广泛应用的GPT中,数据处理的关键点就是Transformer算法,多次多层的映射“变形”造就了其对自然语言处理能力的提升,但本篇介绍的内容中,Transformer算法是用来构建游戏AI的“…

昇思25天学习打卡营第5天 | 神经网络构建

1. 神经网络构建 神经网络模型是由神经网络层和Tensor操作构成的,mindspore.nn提供了常见神经网络层的实现,在MindSpore中,Cell类是构建所有网络的基类,也是网络的基本单元。一个神经网络模型表示为一个Cell,它由不同…

Quantlab5.0:一切围绕可实盘策略驱动开发

原创文章第573篇,专注“AI量化投资、世界运行的规律、个人成长与财富自由"。 2024年上半年即将结束,开始准备星球下半年的工作。 目前设想的——Quantlab5.0,之所以升级一个大版本,与4.x有很大不同。 5.0专注策略开发&…

Python28-2 机器学习算法之SVM(支持向量机)

SVM(支持向量机) 支持向量机(Support Vector Machine,SVM)是一种用于分类和回归分析的监督学习模型,在机器学习领域中被广泛应用。SVM的目标是找到一个最佳的分割超平面,将不同类别的数据分开&…

【Vue】Vue.js中常见的几种语法

在 Vue.js 中,主要的语法可以分为以下几种: 插值语法 (Interpolation) 使用双大括号 {{ }} 进行文本插值。 示例: {{ message }} 指令语法 (Directives) 指令是特殊的标记,用于告诉Vue框架如何操作DOM。Vue提供了多种内置指…

【最新鸿蒙应用开发】——鸿蒙国际化

1. 国际化 鸿蒙应用开发的国际化主要是指让应用支持多种语言和适应不同地区的用户习惯。这包括对不同语言环境的支持,如文本和布局的本地化设置。要实现国际化,开发者需要准备应用程序支持的每种语言环境的一些资源,比如翻译后的文本、特定区…

理解论文笔记:基于贝叶斯网络和最大期望算法的可维护性研究

看了与上一篇研究方向一致的文章,上一篇19年的,这一篇22年的更新。若有侵权,请联系删除。 I. INTRODUCTION 介绍 主要介绍了使用贝叶斯网络和历史数据对无线传感器网络可维护性研究的重要性和必要性,并对下面的各章进行了…

【高性能服务器】单进程服务器

🔥博客主页: 我要成为C领域大神🎥系列专栏:【C核心编程】 【计算机网络】 【Linux编程】 【操作系统】 ❤️感谢大家点赞👍收藏⭐评论✍️ 本博客致力于知识分享,与更多的人进行学习交流 ​ 单进程服务器 …

认识100种电路之稳压电路

在电子电路中,稳压电路扮演着至关重要的角色。那么,为什么电路需要稳压?稳压的原理又是什么?以及稳压需要用到哪些元器件,数量又有多少呢?今天,就让我们一同揭开稳压电路的神秘面纱。 【电路为什…

Apple Final Cut Pro 10.8 - 专业后期制作 (视频编辑)

Apple Final Cut Pro 10.8 - 专业后期制作 (视频编辑) Final Cut Pro 10.8 Compressor 4.8 Motion 5.8 (Universal) 请访问原文链接:https://sysin.org/blog/apple-final-cut-pro/,查看最新版。原创作品,转载请保留出处。 作者主页&…

供应商关系管理(SRM)中的供应商绩效评估

供应商绩效评估是供应商关系管理(SRM)的核心组成部分,它涉及到对供应商在合作过程中的表现进行全面的分析和评价。一个有效的供应商绩效评估系统不仅可以帮助企业识别和解决供应链中的潜在问题,还可以促进供应商的持续改进和优化&…

Java学习 - Redis缓存问题与优化

缓存收益与成本 收益 加速读写降低后端、持久层的负载和压力 成本 可能导致数据不一致代码运维成本redis节点运维成本 缓存更新策略 策略一致性维护成本介绍LRU/LIRS算法剔除最差底剔除最近最少使用的数据超时剔除较差底定时删除、惰性删除主动更新最好高持久层更新&#x…

监控 Promethus的监控告警Alertmanager、Grafana

Promethus的监控告警Alertmanager Alertmanager 介绍 Prometheus的一个组件,用于定义和发送告警通知,内置多种第三方告警通知方式,同时还提供了对Webhook通知的支持基于警报规则对规则产生的警报进行分组、抑制和路由,并把告警发…