说在前面:
本系列文章专注于软考备考复习内容梳理,文章内容是对教材中知识点和考点的提炼,备考过程中可以有针对的进行复习,减少阅读量,有的放矢。
导航目录:
事务是一个操作序列,是数据库环境中不可分割的逻辑工作单位。事务的4个特性是原子性、一致性、隔离性和持久性。
人为错误、硬盘损坏、计算机病毒、断电或是天灾人祸等都有可能造成数据的丢失,所以应该强调备份的重要性。备份实际上是数据的保护意识,在危机四伏的网络环境中,数据随时有被毁灭的可能。在数据库中的四类故障有事务内部故障、系统故障、介质故障和计算机病毒。
恢复的基本原理是“建立数据冗余”(重复存储)。建立冗余数据的方法是进行数据转储和登记日志文件。数据的转储分为静态转储和动态转储、海量转储和增量转储。
(1)静态转储和动态转储。静态转储是指在转储期间不允许对数据库进行任何存取、修改操作动态转储是指在转储期间允许对数据库进行存取、修改操作。因此,转储和用户事务可并发执行。
(2)海量转储和增量转储。海量转储是指每次转储全部数据;增量转储是指每次只转储上次转储后更新过的数据。
(3)日志文件。在事务处理的过程中,DBMS 把事务开始、事务结束以及对数据库的插入、删除和修改的每一次操作写入日志文件。一旦发生故障,DBMS的恢复子系统利用日志文件撤销事务对数据库的改变,回退到事务的初始状态。因此,DBMS 利用日志文件来进行事务故障恢复和系统故障恢复,并可协助后备副本进行介质故障恢复。
数据恢复有3个步骤。
(1)反向扫描文件日志,查找该事务的更新操作。
(2)对事务的更新操作执行逆操作。
(3)继续反向扫描日志文件,查找该事务的其他更新操作,并做同样的处理,直到事务的开始标志。
为了避免磁盘介质出现故障影响数据库的可用性,许多DBMS提供数据镜像功能用于数据库恢复。数据库镜像是通过复制数据实现的,但频繁地复制数据会降低系统的运行效果,因此实际应用中往往对关键的数据和日志文件镜像。
并发操作是指在多用户共享的系统中,许多用户可能同时对同一数据进行操作。并发操作带来问题的原因是事务的并发操作破坏了事务的隔离性。DBMS的并发控制子系统负责协调并发事务的执行,保证数据库的完整性不被破坏,避免用户得到不正确的数据。
并发操作带来的数据不一致性有3类,即丢失修改、不可重复读和读“脏”数据。
并发控制的主要技术是封锁。
1) 封锁
(1)排他锁(X锁)。若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他事务都不能再对A加任何类型的锁,直到T释放A上的锁。
(2)共享锁(S锁)。若事务T对数据对象A加上S锁,则只允许T读取A,但不能修改A,其他事务只能再对A加S锁,直到T释放A上的S锁。
2) 三级封锁协议
(1)一级封锁协议。事务在修改数据R之前必须先对其加X锁,直到事务结束才释放。一级封锁协议可以解决丢失更新问题。
(2)二级封锁协议。在一级封锁协议的基础上,加上事务T在读取数据R前必须先对其加S锁,读完后即可释放S锁。二级封锁协议可以解决读“脏”数据的问题,但是由于二级封锁协议读完数据后即可释放S锁,所以它不能保证可重复读。
(3)三级封锁协议。在一级封锁协议的基础上,加上事务T在读取数据R之前必须先对其加 S 锁,直到事务结束才释放。三级封锁协议可以防止丢失修改、读“脏”数据和不可重复读。
活锁是指当事务T1封锁了数据R,事务T2请求封锁数据R,于是T2等待。T3也请求封锁R,当T1释放R上的封锁后,系统首先批准T3的请求,于是T2仍等待。然后T4 又请求封锁R,当T3释放R上的封锁之后系统首先批准T4的请求……T2可能永远等待。 死锁是指两个以上的事务分别请求封锁对方已经封锁的数据,导致长期等待而无法继续运行下去的现象。
【定义9-11】多个事务的并行执行是正确的,当且仅当其结果与某一次序串行地执行它们时的结果相同时,这种调度策略称为可串行化的调度。 可串行性是并行事务正确性的准则,按照这个准则规定,一个给定的并发调度,当且仅当它是可串行化的才认为是正确调度。
两段封锁协议是指所有事务必须分两个阶段对数据加锁和解锁∶第一阶段是获得封锁;第二阶段是释放封锁。
封锁对象的大小称为封锁的粒度。封锁的对象可以是逻辑单元也可以是物理单元。
未完待续。。。
更多知识传送:
- 计算机操作系统–基础知识
- 计算机操作系统–进程管理
- 计算机操作系统–存储管理
- 计算机操作系统–设备管理
- 计算机操作系统–文件管理
- 计算机操作系统–作业管理
- 计算机操作系统–网络操作系统和嵌入式操作系统
- 计算机操作系统–UNIX操作系统
- 软件工程基础知识–认识软件工程
- 软件工程基础知识–软件过程模型
- 软件工程基础知识–需求分析
- 软件工程基础知识–系统设计
- 软件工程基础知识–运行和维护
- 软件工程基础知识–软件项目管理
- 软件工程基础知识-软件质量
- 结构化开发方法–系统分析及设计概述
- 结构化开发方法–结构化分析方法
- 结构化开发方法–用户界面设计
- 面向对象技术–概念及程序设计
- 面向对象技术–面向对象开发技术
- 面向对象技术–面向对象的分析与设计方法
- 面向对象技术–设计模式
- 数据库技术基础–基本概念
- 数据库技术基础–数据模型
- 数据库技术基础–关系数据库
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
以上内容整理参考《软件设计师教程(第5版)》和《软件设计师考试同步辅导(第四版)》(忘记是哪个老师的了,侵删)。本文章内容旨在帮助更多想要进军软考,给自己镀金的小伙伴。有兴趣的小伙伴可以共勉。