北京工业大学-数据库系统幻灯片-chapter7-系统实现技术

上传人:F****n 文档编号:88145324 上传时间:2019-04-19 格式:PPT 页数:84 大小:714.50KB
返回 下载 相关 举报
北京工业大学-数据库系统幻灯片-chapter7-系统实现技术_第1页
第1页 / 共84页
北京工业大学-数据库系统幻灯片-chapter7-系统实现技术_第2页
第2页 / 共84页
北京工业大学-数据库系统幻灯片-chapter7-系统实现技术_第3页
第3页 / 共84页
北京工业大学-数据库系统幻灯片-chapter7-系统实现技术_第4页
第4页 / 共84页
北京工业大学-数据库系统幻灯片-chapter7-系统实现技术_第5页
第5页 / 共84页
点击查看更多>>
资源描述

《北京工业大学-数据库系统幻灯片-chapter7-系统实现技术》由会员分享,可在线阅读,更多相关《北京工业大学-数据库系统幻灯片-chapter7-系统实现技术(84页珍藏版)》请在金锄头文库上搜索。

1、第七章 系统实现技术,主要内容和学习要求,7.1 系统目录 (了解) 7.2 事务 (综合应用) 7.3 数据库的恢复 (理解) 7.4 数据库的并发控制 (了解) 7.5* 并发事务的可串行化和可恢复性(了解) 7.6 数据库的完整性(理解) 7.7 数据库的安全性(理解) 小结,系统目录,什么是系统目录? 系统目录的重要性 系统目录的内容 元数据,RDBMS系统目录的存储内容,关系名,属性名,属性域(数据类型) 各种约束,主键,辅助键,外键,空值/非空值 视图的外部级描述,存储结构和索引的内部级描述 安全性和授权规则 数据完整性规则 注意:这些数据都以表格的形式存在,某些RDBMS的系统目

2、录内容,REL_AND_ATTR_CATALOG,关系名,属性名,属性类型,主键,外键,外键关系,RELATION_KEYS,(a)存储键信息的目录关系 RELATION_INDEXES,(b)存储索引信息的目录关系 VIEW_QUERIER VIEW_ATTRIBUTES,(c)存储视图信息的目录关系,系统目录的扩充ER图,视图关系,关系,基本关系,索引,属性名,键类型,d,数据类型,键编号,关系名,查询,索引类型,属性序号,索引名,属性名,K_A,R_I,R_F,I_A,K_I,外键,系统目录和DBMS各子系统的联系,DDL编译程序,DML优化程序,DML命令的外 部级到概念级 映象,DM

3、L编译程序,DML分析校 验程序,DBMS,处理和检查三级模式两级映象,检查查询涉及的关系名属性名等,将查询涉及的概念模式转换成内模式,产生访问计划,根据物理结构优化查询执行方案,将查询中的视图由外部级导到概念级映象,处理和检查权限,授权和安全程序,主要内容,7.1 系统目录 7.2 事务 7.3 数据库的恢复 7.4 数据库的并发控制 7.5 并发事务的可串行化和可恢复性 7.6 数据库的完整性 7.7 数据库的安全性 小结,什么是事务?,事务(transaction)是构成单一逻辑工作单元的操作集合 . 原子性(Atomicity):事务是一个不可分割的工作单元。 一致性(Consiste

4、ncy) :即数据不会因事务的执行而遭受破坏 。必须使数据库状态从一个一致状态变为另一个一致状态。 隔离性(Isolation) :在多个事务并发执行时,系统应保证与这些事务先后单独执行时的结果一样 。 持久性(Durability) :一个事务一旦完成全部操作后,它对数据库的所有更新应永久地反映在数据库中。,例子,例:设银行数据库中有一转账事务T,从账号A转一笔款子($50)到账号B。 相应的事务: T:read(A); A:=A50; write(A); read(B); B:=B + 50; write(B).,以下违反了事务的什么性质? 若由于故障和错误,造成事务T执行的结果修改了A值

5、而未修改B值; 若事务执行结束后,A值减少50而B值未变; 若系统暂时处于不一致状态时,第二个事务插件来计算A与B之和或修改A、B的值; 因某种原因,虽然事务成功执行完成,但写入磁盘的数据丢失。,事务提交和事务撤销(1),BEGIN TRANSACTION标志事务开始执行; 事务的所有操作都完成了,则事务提交(COMMIT),否则事务撤销(ROLLBACK); COMMIT:表示事务执行成功地结束,该事务对数据库的所有更新操作都已写入磁盘; ROLLBACK:表示事务执行不成功地结束,该事务对数据库的所有更新必须被撤销,数据库应恢复该事务到初始状态。 BEGIN TRANSACTION和COM

6、MIT(或ROLLBACK)一起保证了事务的四个性质。,事务提交和事务撤销(2),对数据库访问的两个基本操作:读和写 read(X):把数据X从磁盘的数据库中读到内存的缓冲区 write(X):把数据X从内存缓冲区中写回磁盘的数据库中 注:完成写操作后,数据可能暂时放在内存中,而非直接写进数据库。,T:BEGIN TRANSACTION; read(A); A:=A50; write(A); if (A0) ROLLBACK; else read(B); B:=B + 50; write(B); COMMIT; ,事务状态变迁图,活动状态,局部提交 状态,失败状态,提交状态,异常终止状态,re

7、ad/write,为了精确地描述事务的工作,这里用事务状态图来描述事务的状态变迁。,主要内容,7.1 系统目录 7.2 事务 7.3 数据库的恢复 7.4 数据库的并发控制 7.5* 并发事务的可串行化和可恢复性 7.6 数据库的完整性 7.7 数据库的安全性 小结,存储器类型(1),易失性存储器(volatile storage): 内存、cache存储器; 故障时,其中的信息会丢失; 但访问速度快。 非易失性存储器(nonvolatile storage): 磁盘和磁带; 系统故障时,信息不丢失,但本身故障时,信息会丢失; 访问速度较慢。,存储器类型(2),稳定存储器(stable sto

8、rage) 这是一个理论上的概念。 信息不会丢失。 可通过对非易失性存储器进行技术处理来实现。 稳定存储器的实现 数据备份 : 数据银行:,块的概念,块:内外存数据交换的基本单位。 物理块:磁盘中的块,称为“物理块”。 缓冲块:内存中临时存放物理块内容的块称为“缓冲块”。 所有的缓冲块组成了“磁盘缓冲区”。,块的操作,块的操作 input(A):把物理块A的内容传送到内存的缓冲块中。 Output(B):把缓冲块B的内容传送到磁盘中恰当的物理块中,数据访问,事务,系统,磁盘,恢复和原子性的联系,假设没有事务的原子性,那么重新启动事务时要么A因为再执行一遍而为1800,要么B因从未执行而保持原值

9、,故障时,数据库中A,B值分别为多少?,恢复的基本原则和实现方法,基本原则 :“冗余”,即数据库重复存储 具体实现方法 平时做好两件事:转储和建立日志 周期地(比如一天一次)对整个数据库进行拷贝,转储到另一个磁盘或磁带一类存储介质中。 建立日志数据库。记录事务的开始、结束及数据每一次插入、删除和修改前后的值,并写到“日志”库中。 一旦发生数据库故障,分两种情况进行处理 如果数据库已被破坏:装入最近的数据库备份,重做更新操作。 如果数据库未被破坏:但某些数据不可靠,则撤消所有不可靠的修改。,故障类型和恢复方法,事务故障 可以预期的事务故障: 非预期事务故障: 系统故障 硬件故障、软件错误或掉电等

10、等; 内存内容丢失,但不破坏数据库; 恢复子系统在系统重新启动时,分2种情况处理:对未完事务,进行UNDO,对已提交事务但更新还在缓冲的事务,进行REDO 介质故障(硬故障) 磁盘物理故障或遭受病毒破坏,检查点(checkpoint)技术,什么是检查点方法? DBMS定时设置检查点,在检查时刻才真正做到把DB的修改写到磁盘,并在日志文件中写入一条检查点记录(以便恢复时使用)。当DB需要恢复时,只有那些在检查点后面的事务需要恢复。 优点:大大减少了DB的恢复时间。,检查点方法,检查点方法的恢复算法: 根据日志文件建立事务重做队列和事务撤销队列 对重做队列中的事务进行REDO处理,对撤消队列中的事

11、务进行UNDO处理,事务,检查点,故障点,时间,检查点,T1,T3,T2,T5,T4,事务T1不必恢复; 事务T2和事务T4必须重做(REDO);事务T3和事务T5必须撤消(UNDO),tc,tf,如何处理这五类事务?,思考:,如果写数据库和写日志这两个操作之间,发生故障,一个保留,一个丢失,则会发生什么情况? 运行记录优先原则,SQL对事务的支持,无begin transaction Commit Rollback 游标,主要内容,7.1 系统目录 7.2 事务 7.3 数据库的恢复 7.4 数据库的并发控制 7.5* 并发事务的可串行化和可恢复性 7.6 数据库的完整性 7.7 数据库的安

12、全性 小结,并发操作,DBMS的并发控制子系统,负责协调并发事务的执行,保证数据的完整性,同时避免用户得到不正确的数据。 若没有并发控制子系统对事务进行控制,则其并发操作通常会带来四个问题: 丢失更新问题; 读脏数据问题; 错误求和问题; 不可重复读问题,并发操作带来的问题1-丢失更新,图7.10 在时间t7丢失了事务T1的更新,(FIND表示从DB中读值,UPD表示把值写回到DB),并发操作带来的问题2-读脏数据,并发操作带来的问题2-读脏数据,并发操作带来的问题3-错误求和,事务T1进行了不一致的分析,并发操作带来的问题4不可重复读,COMMIT,200,FIND A,FIND A,A:=

13、A*2,并发操作带来的几个问题如何解决?,解决办法: 封锁技术(Locking):主要技术 排他型锁 共享型锁 时标(Timestamping),排他型封锁(Exclusive Lock) (X锁),X锁定义 如果事务T对某个数据R实现了X锁,那么T对数据R解除封锁之前,不允许其他事务T再对该数据加任何类型的锁。 操作 XFIND R: 对数据R加X锁,并读数据R,然后可对R写 XRELEASE R: 解除对数据R的X锁,使用X锁的规则,PX协议: 任何企图更新记录R的事务必须先执行“XFIND R”操作,以获得对R的X锁,才能读或写记录R;如果未获准X锁,那么这个事务进入等待队列,一直到获准

14、X锁,事务才能继续做下去。 PXC协议 X锁的解除操作应该合并到事务的结束(COMMIT或ROLLBACK)操作中。,例:使用X锁解决数据丢失,共享型封锁(Shared Lock) (S锁),S锁定义 如果事务T对某数据加上S锁后,仍允许其他事务再对该数据加 S锁,但在对该数据的所有S锁都解除之前不允许任何事务对该数据加X锁。 操作 SFIND R:加S锁,并读数据R;不能写R UPDX R: 把S锁升级为X锁; SRELEASE R:,使用S锁的规则,PS协议 任何要更新记录R的事务必须先执行“SFIND R”操作,以获得对R的S锁。当事务获准对R的S锁后,若要更新记录R必须用“UPDX R

15、”操作,这个操作首先把S锁升级为X锁,若成功则更新记录,否则这个事务进入等待队列。 PSC协议 S锁的解除操作应该合并到事务的结束。,例:使用S锁解决丢失更新,封锁的相容矩阵,注: N=NO,不相容的请求 Y=YES,相容的请求 X、S、:分别表示X锁,S锁,无锁 如果两个封锁是不相容的,则后提出封锁的事务要等待。,T2 T1,封锁的粒度,封锁对象的大小称为封锁的粒度。(granularity) 封锁的对象 逻辑单元:属性值、属性值集合、元组、关系、索引项、整个索引、整个数据库 物理单元 :页(数据页或索引页)、块 封锁粒度与系统并发度和并发控制开销的关系 封锁的粒度越大,系统中能被封锁的对象

16、就越少,并发度就越小,但同时系统的开销也就越小; 相反,粒度越小,并发度越高,系统开销越大。,封锁带来的问题1-“活锁”(1),系统可能使某个事务永远处于等待状态,得不到封锁的机会,这种现象称为“活锁”(Live Lock)。 解决方法:采用“先来先服务”的策略。 如果系统运行时,事务有优先级: 产生的问题:低优先级的事务,可能即使排队也难得到封锁的机会。 解决办法:采用“升级”方法,即当一个事务等待一定时间还轮不上封锁时,可以提高其优先级别。,封锁带来的问题1-活锁(2),T1 XFIND A,T2 XFIND A,T3 XFIND A,A,A已被封锁,不成功,等待,A刚被释放,成功,时间点,A刚被T2释放,成功,T1永远等待 活锁!,解决方法:先来先服务,封锁带来的问题2-饿死(1),有可能存在一个事务序列,其中每个事务都申请对某数据项加S锁,且每个事务在授权加锁后一小段时间内释放封锁,此时

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号