数据库技术基础--数据库的控制功能

说在前面:

本系列文章专注于软考备考复习内容梳理,文章内容是对教材中知识点和考点的提炼,备考过程中可以有针对的进行复习,减少阅读量,有的放矢。


导航目录:

    • 一、事务管理
    • 二、数据库的备份与恢复
      • 1.故障类型
      • 2. 备份方法
      • 3.恢复
      • 4. 数据库镜像
    • 三、并发控制
      • 1. 并发操作带来的问题
      • 2. 并发控制技术
      • 3. 活锁和死锁
      • 4.并发调度的可串行性
      • 5. 两段封锁协议
      • 6.封锁的粒度

一、事务管理

事务是一个操作序列,是数据库环境中不可分割的逻辑工作单位。事务的4个特性是原子性、一致性、隔离性和持久性。

  • 原子性。事务的所有操作在数据库中要么全做,要么全都不做。
  • 一致性。一个事务独立执行的结果,将保持数据的一致性,即数据不会因为事务的执行而被破坏。
  • 隔离性。一个事务的执行不能被其他事务干扰。
  • 持久性。一个事务一旦提交,它对数据库中数据的改变必须是永久的,即便系统
出现故障时也是如此。

二、数据库的备份与恢复

1.故障类型

人为错误、硬盘损坏、计算机病毒、断电或是天灾人祸等都有可能造成数据的丢失,所以应该强调备份的重要性。备份实际上是数据的保护意识,在危机四伏的网络环境中,数据随时有被毁灭的可能。在数据库中的四类故障有事务内部故障、系统故障、介质故障和计算机病毒。

2. 备份方法

恢复的基本原理是“建立数据冗余”(重复存储)。建立冗余数据的方法是进行数据转储和登记日志文件。数据的转储分为静态转储和动态转储、海量转储和增量转储。


(1)静态转储和动态转储。静态转储是指在转储期间不允许对数据库进行任何存取、修改操作动态转储是指在转储期间允许对数据库进行存取、修改操作。因此,转储和用户事务可并发执行。


(2)海量转储和增量转储。海量转储是指每次转储全部数据;增量转储是指每次只转储上次转储后更新过的数据。


(3)日志文件。在事务处理的过程中,DBMS 把事务开始、事务结束以及对数据库的插入、删除和修改的每一次操作写入日志文件。一旦发生故障,DBMS的恢复子系统利用日志文件撤销事务对数据库的改变,回退到事务的初始状态。因此,DBMS 利用日志文件来进行事务故障恢复和系统故障恢复,并可协助后备副本进行介质故障恢复。

3.恢复

数据恢复有3个步骤。



(1)反向扫描文件日志,查找该事务的更新操作。


(2)对事务的更新操作执行逆操作。



(3)继续反向扫描日志文件,查找该事务的其他更新操作,并做同样的处理,直到事务的开始标志。

4. 数据库镜像

为了避免磁盘介质出现故障影响数据库的可用性,许多DBMS提供数据镜像功能用于数据库恢复。数据库镜像是通过复制数据实现的,但频繁地复制数据会降低系统的运行效果,因此实际应用中往往对关键的数据和日志文件镜像。

三、并发控制

并发操作是指在多用户共享的系统中,许多用户可能同时对同一数据进行操作。并发操作带来问题的原因是事务的并发操作破坏了事务的隔离性。DBMS的并发控制子系统负责协调并发事务的执行,保证数据库的完整性不被破坏,避免用户得到不正确的数据。

1. 并发操作带来的问题

并发操作带来的数据不一致性有3类,即丢失修改、不可重复读和读“脏”数据。

2. 并发控制技术

并发控制的主要技术是封锁。

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 锁,直到事务结束才释放。三级封锁协议可以防止丢失修改、读“脏”数据和不可重复读。

3. 活锁和死锁

活锁是指当事务T1封锁了数据R,事务T2请求封锁数据R,于是T2等待。T3也请求封锁R,当T1释放R上的封锁后,系统首先批准T3的请求,于是T2仍等待。然后T4 又请求封锁R,当T3释放R上的封锁之后系统首先批准T4的请求……T2可能永远等待。
死锁是指两个以上的事务分别请求封锁对方已经封锁的数据,导致长期等待而无法继续运行下去的现象。

4.并发调度的可串行性

【定义9-11】多个事务的并行执行是正确的,当且仅当其结果与某一次序串行地执行它们时的结果相同时,这种调度策略称为可串行化的调度。
可串行性是并行事务正确性的准则,按照这个准则规定,一个给定的并发调度,当且仅当它是可串行化的才认为是正确调度。

5. 两段封锁协议

两段封锁协议是指所有事务必须分两个阶段对数据加锁和解锁∶第一阶段是获得封锁;第二阶段是释放封锁。

6.封锁的粒度

封锁对象的大小称为封锁的粒度。封锁的对象可以是逻辑单元也可以是物理单元。

未完待续。。。

更多知识传送:

  • 计算机操作系统–基础知识
  • 计算机操作系统–进程管理
  • 计算机操作系统–存储管理
  • 计算机操作系统–设备管理
  • 计算机操作系统–文件管理
  • 计算机操作系统–作业管理
  • 计算机操作系统–网络操作系统和嵌入式操作系统
  • 计算机操作系统–UNIX操作系统
  • 软件工程基础知识–认识软件工程
  • 软件工程基础知识–软件过程模型
  • 软件工程基础知识–需求分析
  • 软件工程基础知识–系统设计
  • 软件工程基础知识–运行和维护
  • 软件工程基础知识–软件项目管理
  • 软件工程基础知识-软件质量
  • 结构化开发方法–系统分析及设计概述
  • 结构化开发方法–结构化分析方法
  • 结构化开发方法–用户界面设计
  • 面向对象技术–概念及程序设计
  • 面向对象技术–面向对象开发技术
  • 面向对象技术–面向对象的分析与设计方法
  • 面向对象技术–设计模式
  • 数据库技术基础–基本概念
  • 数据库技术基础–数据模型
  • 数据库技术基础–关系数据库

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

以上内容整理参考《软件设计师教程(第5版)》和《软件设计师考试同步辅导(第四版)》(忘记是哪个老师的了,侵删)。本文章内容旨在帮助更多想要进军软考,给自己镀金的小伙伴。有兴趣的小伙伴可以共勉。

你可能感兴趣的:(软考系列,数据库,sql,职场和发展,学习)