tj第七章数据库管理
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
转储
– 静态转储
• 转储期间不允许对数据库进行任何存取、修改 活动
– 动态转储
• 转储期间允许对数据库进行存取或修改
– 海量转储
• 每次转储全部数据库
– 增量转储
• 每次只转储上次转储后更新过的数据
43
海量转储与增量转储
• 海量转储(完全备份): 每次转储全部数据库
• 增量转储(差异备份): 只转储上次转储后更 新过的数据 • 海量转储与增量转储比较 – 从恢复角度看,使用海量转储得到的后备 副本进行恢复往往更方便 – 但如果数据库很大,事务处理又十分频繁, 则增量转储方式更实用更有效
• 隔离性 • 持久性
8
事务的ACID特性
• 原子性 • 一致性 • 隔离性
– 多个并发事务之间不能相互干扰 – 并发不影响事务的执行
• 持久性
9
事务的ACID特性
• • • •
原子性 一致性 隔离性 持久性
– 一旦事务成功完成(Commit),它对数据库 的更新应该是持久的
• 即使在写入磁盘之前,系统发生故障 • 在下次启动之后,也应保障数据更新的有效
• 系统重新启动时,数据库处于一种非一致性 状态
36
数据库故障
3.介质故障
– 影响事务的正常运行 – 外存发生故障,导致存储其中的数据被破坏、或 数据库本身、或DBMS软件处于不正常状态 – 这类故障的破坏性较大
37
数据库故障
4.计算机病毒
– 破坏DBMS软件环境 – 破坏OS环境 – 破坏数据库数据。
• 故障的影响
– 运行事务非正常中断 – 破坏数据库
33
数据库故障
• 后果
– 破坏数据库中的数据,使其不一致 – 破坏数据库本身,使其无法存取 – 破坏数据库引擎,使DBMS环境遭到破坏,无法 运行
34
7.4.1 数据库故障的种类
1.事务故障
– 逻辑错误
• 事务由于某些内部条件无法继续正常执行 • 如:非法输入、找不到数据、溢出等
与上次读出 统计合帐 的不同
甲
乙
修改: 1000-300
读出 写入 再读出
700元 1000元
18
7.2.3可串行化调度与并发控制
• 调度
– 安排数据库中事务操作执行顺序的过程
• 串行调度
– 各事务的操作顺序不交叉
• 可串行化调度
– 事务并发运行的结果,与事务按某一顺序 串行运行的结果等同
19
7.3 加锁协议
12
7.2.1 数据库系统中的并发操作
• 多个事务可能同时(交叉地)在系统中运行
– 提高处理器、磁盘的利用率 – 减少等待时间
• 多个事务并发运行,由事务管理器进行调度
T2 T3 T2 T1 T1 T3
DBMS
T3 T2 T3
DBMS
并发操作 T2 T1
T1
时间 串行操作
时间
13
事务的并发——EXAMPLE
Baidu Nhomakorabea• 锁的等待
– 如果无法获得申请的锁,则进入等待状 态,直到获得该锁为止
24
基于锁的并发控制
• 1。排他式封锁(简称X锁)---写锁 禁止并发操作。
甲
对数据操作 (更新)并进行 排他式封锁
乙:只能等
待,直到甲解 除封锁
1000元
25
基于锁的并发控制
2。保护式封锁(简称S锁)----读锁 允许其它用户对统一数据的检索操作,禁止 对统一数据的更新操作。
20
并发控制的方法---加锁
• 加锁: 是事务T在对某个数据对象(例如表、记 录等)操作之前,先向系统发出请求,对其加锁. 加锁后事务T就对数据对象有了一定的控制, 在事务T释放它的锁之前,其它的事务不能更 新此数据.
21
7.3.1(S,X)锁
• 锁是并发数据访问的控制机制 • 锁的基本类型 – 共享锁(Shared,S)
差异备份
LOG LOG LOG
data
log
data
log
data
log
0:00 AM
9:00 AM
12:00 1:00 AM PM
6:00 PM
49
SQL Server转储策略
• 完全数据库备份
– 创建备份完成时数据库内存在的数据的副 本,通常按常规时间间隔调度. – 备份整个数据库和部分日志 – 还原数据库备份将重新创建数据库和备份 完成时数据库中存在的所有相关文件。但 是,自创建备份后所做的任何数据库修改 都将丢失
甲 修改: 1000-500 写入 读出 修改: 乙 1000-300
700元 500元 1000元
16
事务的并发——EXAMPLE 2.读“脏”数据
“脏”数据
甲
再修改并 修改: 1000-500 恢复原值: 1000
乙 读出:500
1000元 1000元 500元
17
事务的并发——EXAMPLE 3.不一致分析(不可重复读)
• T1事务从A帐户转50到 B帐户 • T2事务试图将A帐户的 10%划归B帐户
• 可以按某一顺序串行运 行,互不干扰
14
事务的并发——EXAMPLE
• 事务A和事务B可以交 叉读写,这种并发调度 不会异常 • 等同于T1、T2的串行运 行
15
事务的并发——EXAMPLE
• 并发操作可能造成数据的不一致, 破坏数据的完整性。其表现为: 1。丢失修改
FILE = 'MyDB_data_2',
FILEGROUP = ' file_group2' TO MyDB_1
FILE = 'MyDB_data_2',
SQL的数据操作语句: UPDATE 帐户 SET 余额=余额-50 WHERE 帐户='A' UPDATE 帐户 SET 余额=余额+50 WHERE 帐户='B'
5
2.事务的ACID特性
• • • •
原子性(Atomicity) 一致性(Consistency) 隔离性(Isolation) 持久性(Durability)
52
SQL Server转储策略
• 文件备份
– 可以备份和还原数据库中的个别文件。这样可 以只还原已损坏的文件,而不用还原数据库的 其余部分,从而加快恢复速度
BACKUP DATABASE MyDB FILE = 'MyDB_data_1', FILEGROUP = 'file_group1', RESTORE DATABASE MyDB FILE = 'MyDB_data_1', FILEGROUP = 'file_group1',
40
转储
故障发生点
转储
正常运行
运行事务
↓
─┼───────┼───────────── Ta Tb
Tf
重装后备副本 恢复
重新运行事务
─┼───────┴------------→
41
二、转储方法
1.海量转储与增量转储(数据量)
2.静态转储与动态转储(系统运行状态)
3.日志备份(记录更新操作)
42
• 如果事务获得了数据项的共享锁,则该事务对该数 据项可读但不可写
– 排它锁(Exclusive,X)
• 如果事务获得了数据项的排它锁,则该事务对该数 据项可读且可写
22
基于锁的并发控制
• 锁的兼容性
T2
T1
23
基于锁的并发控制
• 锁的获得
– 事务向事务管理器申请对数据项加锁 – 该数据项中无不相容锁时,允许加锁
• 两阶段锁协议的并发调度是可串行的 • 两阶段锁协议,有死锁的可能
27
7.3.3死锁及其处理
T1
t
LOCK R1 LOCK R2
T2
出现死锁
LOCK R2
等待
LOCK R1
等待
28
死锁和解决方法
• 死锁:两个或多个事务同时处在等待状态,其 中的每一个在它能够进行之前都等待另一个 释放封锁。
死锁出现的条件:
– 系统错误
• 系统进入一种不良状态(如死锁),使事务无法继续 正常执行 • 该事务可在以后的某个时间重新执行
• 此时数据库中的数据处于非一致状态
35
数据库故障
2.系统故障
– 由于特殊的原因导致事务无法正常执行,而系统 必须重新启动 – 如停电、CPU故障等 – 一般只影响正在执行的事务,而不会破坏数据库 本身以及DBMS环境
44
动态转储
• 利用动态转储得到的副本进行故障恢复
– 需要把动态转储期间各事务对数据库的修 改活动登记下来,建立日志文件 – 后备副本加上日志文件才能把数据库恢复 到某一时刻的正确状态
45
转储策略
• 应定期进行数据转储,制作后备副本。
• 但转储又是十分耗费时间和资源的,不能频繁进行。
• DBA应该根据数据库使用情况确定适当的转储周 期和转储方法。 例: – 每天晚上进行动态增量转储 – 每周进行一次动态海量转储 – 每月进行一次静态海量转储
(1)对数据采用的是排他式封锁。 (2)已经对某些数据加锁,不解锁继 续为新数据加锁。
29
解决死锁的常用方法:
(1)要求每个事务一次就将所有要使用的数据全 部加锁,否则就不能执行. (2)预先规定一个封锁顺序,所有的事务都必须按 这个顺序对数据执行封锁. (3)不采用任何措施来预防死锁的发生,而是采用 某中方法诊断系统中是否有死锁,如果发现死 锁就设法解决.
30
7.3.4 封锁的粒度
• 封锁的粒度---指封锁的单位的大小。 数据库,表,记录,字段 封锁的粒度小,并发度高,封锁机制复杂, 系统开销大。 封锁的粒度大,并发度小,封锁机制简单, 系统开销小。
31
7.4 数据库的恢复
32
数据库恢复概述
• 故障是不可避免的
– – – – 计算机硬件故障 系统软件和应用软件的错误 操作员的失误 恶意的破坏
甲
对数据操作 (检索)并进行 保护式封锁
乙:检索
丙:更新数
据只能等待, 直到甲解除封 锁
1000元
26
并发调度的可串行性
• 两段锁协议
– 所有事务必须分两阶段对数据项加锁和解锁 – 扩展阶段
• 事务可对需要的数据项进行加锁或提升锁
– 收缩阶段
• 一旦事务释放了一个锁,则进入收缩阶段 • 事务只能释放锁,而不能申请获得任何锁
6
事务的ACID特性
• 原子性
– 事务中的操作,要么全做成,要么都不做 – 事务是不可拆分的 – 事务必须以 Commit/Rollback 结束
• 一致性 • 隔离性 • 持久性
7
事务的ACID特性
• 原子性 • 一致性
– 单独运行的事务,必须保证保持数据库的一 致状态 – 从一个一致状态迁移到另一个一致状态 – 与原子性相关
10
事务的定义
显式定义方式 BEGIN TRANSACTION SQL 语句1 SQL 语句2 。。。。。 COMMIT 隐式方式
当用户没有显式地定义事务时, DBMS按缺省规定自动划分事务
BEGIN TRANSACTION SQL 语句1 SQL 语句2 。。。。。 ROLLBACK
11
7.2 并发操作与控制
例如:银行转帐
4
例:银行转帐: 事务T从A帐户过户50¥到B帐户 T: read(A); A := A – 50;
write(A);
read(B); B := B + 50; write(B); read(X):从数据库传送数据项X到事务的工作区中 write(X):从事务的工作区中将数据项X写回数据库
第七章数据库管理
1
内容提要
7.1 7.2 7.3 7.4 7.5 7.6 7.6 事务、事务的性质 并发操作与控制 加锁协议 数据库的恢复 完整性约束 数据库的安全性 数据库的安全性
2
7.1 事务、事务的性质
3
7.1.1 事务及其性质
1.事务的定义
事务是由一系列操作序列构成的程序 执行单元,这些操作要么都做,要么都 不做,是一个不可分割的工作单位
46
SQL Server转储策略 • • • • 完全数据库备份 差异数据库备份 事务日志备份 文件备份
47
SQL SERVER的转储
完全备份
差异备份
差异备份
data
log
data
log
data
log
0:00 AM
9:00 AM
12:00 AM
6:00 PM
48
完全备份
差异备份
LOG LOG LOG
50
SQL Server转储策略
• 差异数据库备份
– 差异数据库备份只记录自上次数据库 完全备份后发生更改的数据,比数据 库完全备份小而且备份速度快 – 使用差异数据库备份将数据库还原到 差异数据库备份完成时的那一点
51
SQL Server转储策略
• 事务日志备份
– 事务日志是自上次备份事务日志后对 数据库执行的所有事务的一系列记录, 它可以将数据库恢复到特定的即时点 或恢复到故障点
38
小结
• 各类故障对数据库的影响:
– 数据库本身被破坏
• 介质故障,计算机病毒
– 事务操作非正常中止,数据库中存在未完成事 务对数据库的修改,数据处在不一致状态.
• 事务故障,系统故障,计算机病毒
数据恢复的措施:冗余==数据备份 日志文件
39
7.4.2 数据备份(转储)
一、什么是转储
• 转储是指DBA将整个数据库复制到磁带或另 一个磁盘上保存起来的过程。 • 这些备用的数据文本称为后备副本或后援副 本。