数据库原理及应用 《数据库原理及应用》课程组 Jmun_jsjxy@163.com 2007.3 荆楚理工学院.

Slides:



Advertisements
Similar presentations
7.1 内置对象概述及分类 JSP 视频教学课程. JSP2.2 目录 1. 内置对象简介 1. 内置对象简介 2. 内置对象分类 2. 内置对象分类 3. 内置对象按功能区分 3. 内置对象按功能区分 4. 内置对象作用范围 4. 内置对象作用范围.
Advertisements

数据结构的引入. 通讯录管理 社团机构管理 校园导航管理 通讯录管理 社团机构管理 校园导航管理.
第二章 简单的 SQL 语句. 本章要点  创建一个简单的表  SQL 语句介绍  最简单的查询语句 select  带有限制条件的查询  查询结果的排序显示.
第六 章数据库访问页 6.1 数据访问页视图 6.2 创建数据访问页 6.3 编辑数据访问页 6.4 查看数据访问页 退出.
第8章 数据库管理 南昌大学科学技术学院 讲课老师:王钟庄 2010年7月 数据库原理与应用教程.
6 Copyright © Oracle Corporation, All rights reserved. 维护控制文件.
公务员管理子系统建设步骤 1、组建由局长直接领导的体制,制定公务员管理、工资管理、其他业务用户的管理权限,以及各业务间的协作流程。
第十章 数据库恢复技术 10.1 事务 10.2 数据库恢复概述 10.3 恢复的实现技术 10.4 恢复策略.
Oracle数据库 Oracle 子程序.
An Introduction to Database System An Introduction To Database System
数据操控与事务
C++中的声音处理 在传统Turbo C环境中,如果想用C语言控制电脑发声,可以用Sound函数。在VC6.6环境中如果想控制电脑发声则采用Beep函数。原型为: Beep(频率,持续时间) , 单位毫秒 暂停程序执行使用Sleep函数 Sleep(持续时间), 单位毫秒 引用这两个函数时,必须包含头文件
在PHP和MYSQL中实现完美的中文显示
程序的形式验证 - 简介 中国科学院软件研究所 张文辉 1.
作业4讲评.
課程名稱:資料庫系統 授課老師:李春雄 博士
SOA – Experiment 3: Web Services Composition Challenge
大学计算机基础 典型案例之一 构建FPT服务器.
SQL Injection.
走进编程 程序的顺序结构(二).
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
数据库基础 1.
Windows网络操作系统管理 ——Windows Server 2008 R2.
Windows网络操作系统管理 ——Windows Server 2008 R2.
第一讲: 基本流程(1).
段磊 王慧锋 TEL: qq群: 数据库系统原理课程设计 实验环节2 段磊 王慧锋 TEL: qq群:
第十章 IDL访问数据库 10.1 数据库与数据库访问 1、数据库 数据库中数据的组织由低到高分为四级:字段、记录、表、数据库四种。
第17章 网站发布.
2019/1/12 GDP设计协同 超级管理员操作手册 GDP项目组.
Online job scheduling in Distributed Machine Learning Clusters
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
本次课主题:备份和恢复.
SOA – Experiment 2: Query Classification Web Service
第13章 数据库的备份与恢复 13.1 数据库备份设备 13.2 数据库备份 13.3 数据库恢复.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
解决变化问题的自底向上 流程建模方法 严志民 徐玮.
C语言程序设计 主讲教师:陆幼利.
微机系统的组成.
顺序表的删除.
实验讲评
SQL 范引娣.
线 性 代 数 厦门大学线性代数教学组 2019年4月24日6时8分 / 45.
VisComposer 2019/4/17.
商业分析平台-语义元数据 用友集团技术中心 边传猛 2013年 11月 06日.
VB与Access数据库的连接.
第十章 数据库恢复技术 10.1 事务的基本概念 10.2 数据库恢复概述 10.3 故障的种类 10.4 恢复的实现技术
Lightweight Data-flow Analysis for Execution-driven Constraint Solving
Web安全基础教程
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
信号量(Semaphore).
第4章 Excel电子表格制作软件 4.4 函数(一).
iSIGHT 基本培训 使用 Excel的栅栏问题
Visual Basic程序设计 第13章 访问数据库
Touch Github = Touch the World
GIS基本功能 数据存储 与管理 数据采集 数据处理 与编辑 空间查询 空间查询 GIS能做什么? 与分析 叠加分析 缓冲区分析 网络分析
Python 环境搭建 基于Anaconda和VSCode.
Google的云计算 分布式锁服务Chubby.
第六章 Excel的应用 五、EXCEL的数据库功能 1、Excel的数据库及其结构 2、Excel下的数据排序 (1)Excel的字段名行
基于列存储的RDF数据管理 朱敏
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
VB与Access数据库的连接.
第四章 UNIX文件系统.
使用ADO访问数据库 李宝智 BonizLee 课程 10564A
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
RefWorks使用指南 归档、管理个人参考文献.
入侵检测技术 大连理工大学软件学院 毕玲.
学习目标 1、什么是列类型 2、列类型之数值类型.
百万行、千万行数据查询教程 老黄牛.
Presentation transcript:

数据库原理及应用 《数据库原理及应用》课程组 Jmun_jsjxy@163.com 2007.3 荆楚理工学院

第八章 数据库的管理 2007.3 荆楚理工学院

【本章要点】 数据库的保护有完整性保护,安全性保护,并发控制管理,事务管l理,数据库的备份与恢复等. 2007.3 荆楚理工学院

8.1 数据库的完整性实施方法 数据完整性是指数据的正确性、有效性和相容性。 8.1数据库的完整性实施方法 8.1 数据库的完整性实施方法 数据完整性是指数据的正确性、有效性和相容性。 数据库完整性约束条件作用的对象可分为列级、元组级和关系级三种粒度。 对列的约束主要指对其取值类型、范围、精度、排序等的约束条件。 对元组的约束是指对记录各字段间联系的约束。 对关系的约束是指对若干记录间、关系集合上以及关系之间的联系的约束。 2007.3 荆楚理工学院

关系DBMS通常使用声明数据完整性实现完整性约束。 8.1数据库的完整性施方法 关系DBMS通常使用声明数据完整性实现完整性约束。 声明型数据完整性:作为数据库定义或说明的一部分在语法中实现,是SQL语言的修饰,在Create Table和Alter Table定义中使用constraint和default语句限制表中数据的值。 2007.3 荆楚理工学院

在使用create table和alter table语句中,进行完整性限定的子句有: 8.1数据库的完整性实施方法 在使用create table和alter table语句中,进行完整性限定的子句有: ● 缺省约束(default constraints):当向数据库中的表中插入数据时,如果用户没有明确给出某列的值,则系统自动为该字段输入指定的值。 ● 检查约束(check constraints):限制插入列中的值,如性别字段输入时只允许出现男或女,其它值一律不许出现。 2007.3 荆楚理工学院

8.1数据库的完整性实施方法 荆楚理工学院 ● 唯一约束(Unique Constraints):要求表中在指定的列上没有两行具有相同的值。 ● 参照约束(Reference Constraints)/外键约束(Foreign Key Constraints):要求指定列或者外键中正被插入或者更新的新值,必须在主表的相应主键中已经存在。 2007.3 荆楚理工学院

PRIMARY KEY [CLUSTERED | NONCLUSTERED]]) 8.1数据库的完整性实施方法 利用SQL语言实施完整性约束,它使用CREATE TABLE 和ALTER TABLE 语句中的CONSTRAINT引出完整性约束的子句,一般语法为: CREATE TABLE 表名 (列名 数据类型 [[CONSTRANIT 约束名] PRIMARY KEY [CLUSTERED | NONCLUSTERED]]) 2007.3 荆楚理工学院

数据库的安全性是防止未经授权,非法使用数据,防止数据的泄露,篡改或破坏。 8.2数据库的安全性实施方法 8.2 数据库的安全性实施方法 数据库的安全性是防止未经授权,非法使用数据,防止数据的泄露,篡改或破坏。 对于数据库安全性的控制常可采用权限控制、定义视图和设计触发器程序等方法。 2007.3 荆楚理工学院

DBA根据用户的数据需要和访问数据库的权限,定义用户视图。 8.2数据库的安全性实施方法 一、定义视图 DBA根据用户的数据需要和访问数据库的权限,定义用户视图。 例如,基于职工表建立一个通讯录视图,使用者只能查看职工的姓名和电话号码。实现语句如下: CREATE VIEW 通讯录 AS SELECT 姓名,电话号码 FROM 职工; 2007.3 荆楚理工学院

8.2数据库的安全性实施方法 二、访问权限控制 访问控制(Access Control)是对用户访问数据库各种资源(包括基本表,视图,各种目录以及实用程序等)的权限(包括创建,撤消,查询,增加,删除,修改,执行等)的控制。这是数据库安全的基本手段。 2007.3 荆楚理工学院

8.2数据库的安全性实施方法 目前许多大型数据库管理系统将数据库用户的权限分为具有DBA特权的数据库用户和一般数据库用户。其中,具有DBA特权的数据库用户拥有对数据库最大的权限,可以支配整个数据库资源。而一般数据库用户是由DBA特权用户创建的,并由DBA用户授予其访问数据库的权限,可以在允许的权限范围内对数据库进行操作。当数据库系统安装之后,DBA对所有数据库资源就拥有所有权限。 2007.3 荆楚理工学院

DBA可以通过SQL语言的GRANT语句授予其他用户对数据库的操作权限。GRANT语句的语法格式是: 8.2数据库的安全性实施方法 DBA可以通过SQL语言的GRANT语句授予其他用户对数据库的操作权限。GRANT语句的语法格式是: GRANT<系统权限列表> ON TABLE<表名>|ON VIEW <视图名> TO <用户名列表> |PUBLIC[WITH GRANT OPTION] 2007.3 荆楚理工学院

● DELETE可以在指定的表或视图中删除行。 ● INSERT可以在指定的表中插入行。 ● SELECT可以查询指定的表或视图。 8.2数据库的安全性实施方法 可以 授予用户的权限有以下几种: ● ALTER可以修改指定表的结构。 ● DELETE可以在指定的表或视图中删除行。 ● INSERT可以在指定的表中插入行。 ● SELECT可以查询指定的表或视图。 ● UPDATE可以更新指定表或视图中的数据。 2007.3 荆楚理工学院

例 授予用户TEACHER查询成绩表的权限,并允许他把查询的权限授予他人。 8.2数据库的安全性实施方法 例 授予用户TEACHER查询成绩表的权限,并允许他把查询的权限授予他人。 GRANT SELECT ON TABLE 成绩 TO TEACHER WITH GRANT OPTION 除了显示地授予用户的权限之外,资源的创建者对其资源拥有一切的权限。 2007.3 荆楚理工学院

若DBA撤消某用户的权限,则这个用户转授给其他用户的权限也将同时被撤消。 8.2数据库的安全性实施方法 若DBA撤消某用户的权限,则这个用户转授给其他用户的权限也将同时被撤消。 REVOKE语句的语法格式是: REVOKE .<系统权限列表>ON TABLE <表名>|ON VIEW<视图名> FROM <用户名列表>|PUBLIC; 2007.3 荆楚理工学院

例如:DBA授予用户A查询和修改工资表的权限,同时允许用户A具有转授权。 8.2数据库的安全性实施方法 例如:DBA授予用户A查询和修改工资表的权限,同时允许用户A具有转授权。 GRANT SELECT,UPDATE ON TABLE 工资 TO USERA WITH GTRANT OPTION; 用户A将所获得的权限又转授给用户B。 GRANT SELECT,UPDATE ON TABLE 工资 TO USERB; DBA撤消用户A 对工资表查询和修改的权限,用户B所获得的权限也同时被撤消。 REVOKE SELECT,UPDATE ON TABLE 工资 FROM USERA; 2007.3 荆楚理工学院

上面安全性控制一般限制在表、域的级别上,但有一些系统要求在记录一级实施控制。 8.2数据库的安全性实施方法 也可以利用DBMS 所提供的设计查询,报表,输入/输出格式工具软件,在设计用户的应用界面时,设定应用的限制属性,实现对数据库访问的控制。例如,在使用这些应用时,审查所授的权限或口令。 上面安全性控制一般限制在表、域的级别上,但有一些系统要求在记录一级实施控制。 2007.3 荆楚理工学院

8.2数据库的安全性实施方法 为了实现权限审定方案,合理地分配用户与数据库的操作权限,数据库设计者必须维护一个授权矩阵,它包含被授权者、权限施加对象和授予的权限等三要素。授权矩阵是DBA的主要任务之一。 对于大型的数据库来说,数据表越多,管理起来也就越困难,既要确保用户能够访问到他们所需要的数据但又不能获得超出他们权限的数据,因此,在一般的编程工作中,将相同数据上有相同权限的用户放入一个组中进行管理,这样可以大大降低权限设置的工作量。 2007.3 荆楚理工学院

8.3事务处理 8.3 事务处理 一、事务的基本概念 事务反映现实世界中所需要完整单位提交 的一项工作,事务为一个数据库应用中执行一 个逻辑功能的操作集。对于一个事务,它必须 完整地执行,或者都不执行。 2007.3 荆楚理工学院

事务具有原子性,永久性,串行性和隔离性等四种基本特性。 8.3事务处理 事务具有原子性,永久性,串行性和隔离性等四种基本特性。 ● 原子性:事务的所有操作必须完成,否则事务将被撤消。因此,事务是不可分割的最小工作单位,它的所有操作要么全部执行,要么一个也不执行,它是一个整体。 ● 永久性:指数据库必须保持一致性的状态,当一个事务完成后,数据库必须达到一个新的一致性的状态。 2007.3 荆楚理工学院

8.3事务处理 ● 串行性:串行性是指多个事务并发处理的过程。多个并发事务可以同时执行,表面上并发事务处理是并行的,实际上是串行有序地进行处理。 ● 隔离性:指当一个事务执行期间所使用的数据,不能被其它的事务再使用,此事务对当前操作的数据具有独占性,直到此事务结束为止。这种事务的隔离性可保证在多用户的数据库环境中多个用户同时操作一个数据库时能保持数据库的一致性和正确性。 2007.3 荆楚理工学院

事务是由用户或者程序员根据具体的业务规程进行定义的。当计算机系统防碍了一个事务的正常执行时,事务管理能将数据库复原到原来的一致性的状态。 8.3事务处理 二、事务处理过程分析 事务是由用户或者程序员根据具体的业务规程进行定义的。当计算机系统防碍了一个事务的正常执行时,事务管理能将数据库复原到原来的一致性的状态。 2007.3 荆楚理工学院

8.3事务处理 例 假设账号为0027-654321的客户购买10件商品代码K01的商品,设这10件商品的总价为200.00元。根据业务规则,在执行购买事务时,应当完成如下的操作过程: UPDATE 库存表 SET 库存量= 库存量 - 10 WHERE 商品代码= ‘K01’; UPDATE 进账表 SET 金额 = 金额 + 200.00 WHERE 账号 = ‘0027-654321’ ; 2007.3 荆楚理工学院

8.3事务处理 通过实际销售业务规则可知,必须完整地执行上述了两个SQL语句之后,这笔交易才算完成。如果这两个SQL语句仅仅执行了其中的一个语句,则必然导致数据库的不一致性。例如如果程序在执行期间,执行了前一句,更新了商品K01的数量,但此时计算机突然断电或死机,则后一个SQL语句是不能被执行的,此时库存表更新了,但进账表中的金额却没有被修改,这样会产生数据库的不一致性。 如果发生这种情况,DBMS系统应将数据库恢复到没有更新K01数据之前的一致性状态,当故障排除后,数据库的数据状态是一致的,可以通过再次提交事务来完成购买这个事务。 2007.3 荆楚理工学院

SQL语言进行事务管理的手段主要通过两个命令来实现,即事务提交COMMIT和事务撤消ROLLBACK(回滚)。 8.3事务处理 三、 SQL的事务管理 SQL语言进行事务管理的手段主要通过两个命令来实现,即事务提交COMMIT和事务撤消ROLLBACK(回滚)。 事务提交COMMIT是将该事务对数据库的所有更新写回到磁盘的物理数据库中,事务正常结束。 事务撤消ROLLBACK是指系统将该事务对数据库的所有已完成的更新操作全部撤消,恢复到事务开始前的一致的状态。 2007.3 荆楚理工学院

在SQL语言对数据库的操作中,一般都是按照用户或应用程序所规定的事务流程顺序执行,直到遇到下列情况之一为止: 8.3事务处理 在SQL语言对数据库的操作中,一般都是按照用户或应用程序所规定的事务流程顺序执行,直到遇到下列情况之一为止: ①执行COMMIT语句,说明对数据库的所有操作都已存入数据库中。COMMIT语句自动结束SQL的事务,并开始新的事务。 ②执行ROLLBACK语句,说明要撤消对事务开始后的所有对数据库的操作,并且使数据库回滚到事务开始之前的一致性的状态。 2007.3 荆楚理工学院

③程序正常结束,这种情况说明对数据库的所有修改已存入数据库中。 8.3事务处理 ③程序正常结束,这种情况说明对数据库的所有修改已存入数据库中。 ④程序被非常终止,说明对数据库的所有改变被撤消,数据库回滚到原来一致性状态。 当系统非正常结束时(如掉电、软件故障),系统在重新恢复时会自动执行ROLLBACK命令。 2007.3 荆楚理工学院

SQL还提供了自动提交事务的工作方式,其命令为: SET AUTOCOMMIT ON 与之相反的人工工作方式为: 8.3事务处理 SQL还提供了自动提交事务的工作方式,其命令为: SET AUTOCOMMIT ON 与之相反的人工工作方式为: SET AUTOCOMMIT OFF 一旦规定了自动提交事务方式,则系统将每条SQL命令视为一个事务,并在命令成功执行完成时自动地完成事务的提交。 2007.3 荆楚理工学院

8.4 并发控制 一、 并发处理产生的三种不一致性 多用户系统:支持多个不同的程序或多个用户独立执行同一个程序同时存取数据库中相同的数据。 8.4并发控制 8.4 并发控制 一、 并发处理产生的三种不一致性 多用户系统:支持多个不同的程序或多个用户独立执行同一个程序同时存取数据库中相同的数据。 并发处理:在多用户的数据库系统中,多个事务交迭地执行,称为并发处理。并发处理可能会导致数据完整性与一致性方面的问题,如丢失更新、读出的是未提交的数据、非一致检索的问题等。 并发控制:DBMS系统对这种并发操作提供一定的控制以防止它们彼此干扰,从而保证数据库的正确性不被破坏。 2007.3 荆楚理工学院

典型的并发处理产生的错误结果有如下三种。 (1) 丢失数据 8.4并发控制 典型的并发处理产生的错误结果有如下三种。 (1) 丢失数据 若事务T1和T2是交替执行的,在将更新的结果写回数据库时,T1写了之后,马上由T2写入它所计算出的值,此时最后数据库中的结果是由T2写入的,而T1写入的结果 被丢失。 2007.3 荆楚理工学院

8.4并发控制 (2) 读未提交数据 当两个事务T1和T2并发执行时,在T1对数据库更新的结果没有提交之前,T2使用了T1的结果,如果在T2读取数据之后T1又撤消事务,这就可能引起错误。 2007.3 荆楚理工学院

8.4并发控制 (3) 不一致性检索 为了保险起见,一个事务可能对同一个数据连续读两次,然而事务的并发执行可能导致在两次读之间插入了另一个更新事务,这样会使前一个事务的两次读出的同一个数据值不一致,这就是不一致检索问题。 2007.3 荆楚理工学院

封锁的基本思想是,在事务需要对特定数据对象进行操作时,事务通过向系统请求对它所希望的数据对象加锁,以确保它不被非预期地改变。 8.4并发控制 二、封锁 封锁的基本思想是,在事务需要对特定数据对象进行操作时,事务通过向系统请求对它所希望的数据对象加锁,以确保它不被非预期地改变。 2007.3 荆楚理工学院

8.4并发控制 1.封锁的类型 共享锁(Shared Lock-SL)又称为读锁。如果事务T对数据对象X加上了共享锁,则其它事务只能对X再加共享锁,不能加排它锁。从而保证了其它事务可以读X,但在T释放X上的锁之前不能对X作任何修改。 2007.3 荆楚理工学院

8.4并发控制 排它锁(Exclusive Lock-XL)又称为写锁。如果事务T对数据对象X加上了排它锁,则只允许事务T独占数据对象X,其它任何事务都不能对X施加任何类型的锁,直到事务T释放X上的锁为止。通过排它锁可以有效地避免其它事务读取不一致的数据。 2007.3 荆楚理工学院

对于两种锁的请求封锁控制规程可用下表所示的相容矩阵来表示。Y表示可以继续加锁,N表示不能加锁。 8.4并发控制 对于两种锁的请求封锁控制规程可用下表所示的相容矩阵来表示。Y表示可以继续加锁,N表示不能加锁。 2007.3 荆楚理工学院

8.4并发控制 事务执行对数据库的操作请求时,要先请求相应的锁,对读操作请求共享锁SL,对更新操作(插入、删除、修改)请求排它锁XL。事务一直占有此锁直到执行COMMIT或ARORT等时释放该锁。 2007.3 荆楚理工学院

以粒度来描述封锁的数据单元大小,封锁对象大小称为封锁的粒度。 8.4并发控制 2.锁的粒度 封锁的单元可以是逻辑单元,也可以是物理单元。在关系数据库中,封锁的对象可以是数据库、表、记录以及字段等逻辑单元,也可以是页、块等物理组织单元。 以粒度来描述封锁的数据单元大小,封锁对象大小称为封锁的粒度。 2007.3 荆楚理工学院

数据库管理系统可以决定不同粒度的锁,由最低层的数据元素到最高层的整个数据库: 8.4并发控制 数据库管理系统可以决定不同粒度的锁,由最低层的数据元素到最高层的整个数据库: ●粒度越细,并发性就越大,但软件复杂性和系统开销也越大。 ●锁住整个数据库,DBMS的管理与控制最简单,只需设置和测试一个锁,故系统开销也最小。然而对于数据的存取则只能顺序进行,因而系统的总体性能大大下降。 2007.3 荆楚理工学院

8.4并发控制 3. 活锁与死锁 在并发事务处理过程中,由于锁会使一事务处于等待状态而调度其他事务处理,因此该事务可能会因优先级低而永远等待下去,这种现象称为活锁。活锁问题的解决与调度算法有关,一种最简单的办法是“先来先服务” 。 两个以上事务循环等待被同组中另一事务锁住的数据单元的情形称为死锁。在任何一个多道程序设计系统中,死锁总是潜在的,所以在这种环境下DBMS需要提供死锁预防。 2007.3 荆楚理工学院

● 锁请求排序,将每个数据单元标以线性顺序,然后要求每一事务都按此顺序提出锁请求。这种方法也能防止死锁发生,但同样会降低系统的并行性。 8.4并发控制 主要有下述几种预防死锁的方法: ● 一次性锁请求,每一事务在处理时一次提出所有的锁请求,仅当这些请求全部满足时事务处理才进行,否则让其等待,这样则不会出现死锁情况。这种方法 实现简单,但系统性能将下降。 ● 锁请求排序,将每个数据单元标以线性顺序,然后要求每一事务都按此顺序提出锁请求。这种方法也能防止死锁发生,但同样会降低系统的并行性。 2007.3 荆楚理工学院

8.4并发控制 ● 序列化处理,通过应用设计为每一数据单元建立一个“主人”程序,对给定书记单元的所有请求都发送给主人,而“主人”以单道的形式运行。这样系统可以是多道运行,可避免死锁发生,但系统性能,数据的流行性与完整性可能受到影响。 ● 资源剥夺,即每当事务因锁请求不能满足而受阻时,强行令两个冲突的事务中底的一个ABORT,释放所有的锁,以后重新运行。使用这个方法必须注意防止活锁发生。 2007.3 荆楚理工学院

对待死锁的另一种办法是不去防止,而让其发生并随时进行检测,一旦检测到系统已发生了死锁再进行解除处理。 8.4并发控制 对待死锁的另一种办法是不去防止,而让其发生并随时进行检测,一旦检测到系统已发生了死锁再进行解除处理。 ●死锁检测可以用图论的方法实现,并以正在执行的事务为结点。此时,若事务Ti释放已占有的资源(数据当然是一种资源),则自Ti到Tj有一有向边,这样构成的有向图叫等待状态图。于是,检测死锁则成为在有向图中求圈的问题,这不难实现。 2007.3 荆楚理工学院

8.4并发控制 ●确定检测时机有两种基本选择是在锁请求引起等待时和定期进行检测。前一种选择能及时发现死锁,但死锁可能被推迟发现。而且,时间间隔的大小也有很大的关系,间隔越大,检测出死锁的可能性就越大,系统的无效开销就越小,但死锁发现的推迟就越长。 ●死锁的解除是在构成死锁的事务集中选择一个“牺牲者”,令其ABORT,即停止其执行,清除(UNDO)其对数据库所作的更改,释放所有被它占有的资源(不仅仅是数据)。 2007.3 荆楚理工学院

8. 5 数据库的备份与恢复 一、 故障的类型 数据库系统运行时可能发生的各种故障类型,一般分类如下: 1.事务故障 8.5数据库的备份与恢复 8. 5 数据库的备份与恢复 一、 故障的类型 数据库系统运行时可能发生的各种故障类型,一般分类如下: 1.事务故障 所谓事务故障是由程序执行错误而引起的事务非预计的、异常的终止。它发生在单个事务的局部范围内,实际上就是程序故障。 2.系统故障 系统故障指系统停止或错误运行,从而要重新启动系统。 3.介质故障 介质故障是指外存设备故障。 2007.3 荆楚理工学院

当DBMS执行更新数据库的操作事务时,它要同时更新事务日志。事务日志本身也是一个数据库,DBMS完全可以像管理其它数据库一样管理事务日志。 8.5数据库的备份与恢复 二、事务日志 DBMS系统通过事务日志保存所有的更新数据库事务的操作过程。可以利用事务日志保存的信息来恢复由程序非法中止或者由硬件系统故障等所造成的数据丢失。 日志文件可以是磁带或磁盘数据集。事务记录包含了对数据库处理的事务的基本信息,如日期、时间、输入与输出事务的路径、事务的标识符、事务处理的开始与结束时间、相应的程序状态标志等。 当DBMS执行更新数据库的操作事务时,它要同时更新事务日志。事务日志本身也是一个数据库,DBMS完全可以像管理其它数据库一样管理事务日志。 2007.3 荆楚理工学院

事务恢复是指事务未运行至正常终止点前被撤消,此时应对该事务做撤消处理。 8.5数据库的备份与恢复 三、恢复 恢复是使数据库从一种状态恢复到原来一致性状态。数据库系统的恢复包括事务恢复、数据库状态恢复和系统服务恢复。数据库恢复操作的依据是后备副本和事务日志文件。 1.事务恢复 事务恢复是指事务未运行至正常终止点前被撤消,此时应对该事务做撤消处理。 2007.3 荆楚理工学院

(1) 每当一个事务被提交(COMMIT)时,将对数据库所用的改变物理地写入数据库,从而避免因后来故障而丢失。 8.5数据库的备份与恢复 具体做法是: (1) 每当一个事务被提交(COMMIT)时,将对数据库所用的改变物理地写入数据库,从而避免因后来故障而丢失。 2007.3 荆楚理工学院

● 执行一个ABORT并UNDO(清除)它对数据库的任何改变,即进行下面所述的“向后恢复”数据库; 8.5数据库的备份与恢复 (2) 当发生事务故障时: ● 执行一个ABORT并UNDO(清除)它对数据库的任何改变,即进行下面所述的“向后恢复”数据库; ● 清除它对其它事务的影响,即ABORT那些读了它的“废数据”的事务。这又可能进一步引起事务的ABORT,称为串联撤消过程; ● UNDO所有被撤消的事务对数据库所作的任何改变。 2007.3 荆楚理工学院

数据库恢复要使数据库复原到故障之前的状态。主要的方式有重运行恢复,向前恢复和向后恢复三种方式。 8.5数据库的备份与恢复 2.数据库恢复 数据库恢复要使数据库复原到故障之前的状态。主要的方式有重运行恢复,向前恢复和向后恢复三种方式。 2007.3 荆楚理工学院

8.5数据库的备份与恢复 ● 重运行恢复。这种恢复过程要求由最近的后备副本复原数据库,再重新运行自最近一次后备以来所有的程序或事务。这种恢复的方法一个优点是简单,DBMS不需要建立数据库改变的日志,只需要记录事务的日志。但它的缺点主要有两个,一个是花费的时间比较长,对事务处理负担重的大系统中是很难接受的。另一个缺点是重新运行事务的顺序与原来执行的顺序可能会不同,这样可能导致完全不同的结果。为此,还需要提供更复杂的恢复方法。 2007.3 荆楚理工学院

8.5数据库的备份与恢复 ● 向前恢复。向前恢复就是用后备副本复制原数据库,再用数据库改变日志的后备映像恢复自建立后备副本以来所作的改变。向前恢复比重运行恢复省时间,因为它只恢复对数据库已作改变的数据。显然,这种恢复是假定了对数据库已作的变更都是正确的,所以它适用于受系统故障和介质故障影响的自上次后备以来的正常结束事务对数据库的更新。 2007.3 荆楚理工学院

● 向后恢复。向后恢复的思想与向前恢复的思想是一样的,所不同的是在于使用前映像而不是后映像,以便排除对数据库所作的无效改变。 8.5数据库的备份与恢复 ● 向后恢复。向后恢复的思想与向前恢复的思想是一样的,所不同的是在于使用前映像而不是后映像,以便排除对数据库所作的无效改变。 2007.3 荆楚理工学院

转储是指系统管理员将整个数据库复制到另外的介质上的保存过程。这些备份的数据文件称为后备副本。转储是数据库恢复中采用的最基本的技术。 8.5数据库的备份与恢复 四、 数据的转储 转储是指系统管理员将整个数据库复制到另外的介质上的保存过程。这些备份的数据文件称为后备副本。转储是数据库恢复中采用的最基本的技术。 一旦数据库发生故障,就可以将后备副本重新装入,恢复数据库中的数据。重装后备副本只能将数据库恢复到转储时的状态,要想恢复到故障时的状态,还必须重新运行自转储以来的所有更新的事务。 2007.3 荆楚理工学院

转储的方式有海量转储和增量转储。 每次转储整个数据库,称为海量转储。 只转储上次转储之后变化的数据,称为 增量转储。 8.5数据库的备份与恢复 转储的方式有海量转储和增量转储。 每次转储整个数据库,称为海量转储。 只转储上次转储之后变化的数据,称为 增量转储。 2007.3 荆楚理工学院