书签 分享 收藏 举报 版权申诉 / 87
上传文档赚钱

类型第7章-系统实现技术课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:4096712
  • 上传时间:2022-11-10
  • 格式:PPT
  • 页数:87
  • 大小:716KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《第7章-系统实现技术课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    系统 实现 技术 课件
    资源描述:

    1、1第第7 7章章 系统实现技术系统实现技术2本章重要概念本章重要概念(1)(1)系统目录及其和)系统目录及其和DBMS各子系统的联系。各子系统的联系。(2)事务的定义,)事务的定义,COMMIT和和ROLLBACK的的语义,事务的语义,事务的ACID性质,事务的状态性质,事务的状态变迁图。变迁图。(3)存储器类型,稳定存储器的实现,)存储器类型,稳定存储器的实现,数据传数据传送过程。送过程。(4)恢复的定义、基本原则和实现方法,)恢复的定义、基本原则和实现方法,故障的类型,检查点技术,故障的类型,检查点技术,REDO和和UNDO操作,运行记录优先原则。操作,运行记录优先原则。3本章重要概念本章

    2、重要概念(2)(5)并发操作带来的三个问题,)并发操作带来的三个问题,X锁、锁、PX协议、协议、PXC协议,协议,S锁、锁、PS协议、协议、PSC协议,活锁、饿协议,活锁、饿死和死锁,并发调度,串行调度,并发调度的可死和死锁,并发调度,串行调度,并发调度的可串行化,两段封锁法,串行化,两段封锁法,SQL中事务的存取模式和中事务的存取模式和隔离级别。隔离级别。(6)完整性的定义,完整性子系统的功能,完)完整性的定义,完整性子系统的功能,完整性规则的组成。整性规则的组成。SQL中的三大类完整性约束,中的三大类完整性约束,SQL3中的触发器技术。中的触发器技术。(7)安全性的定义、级别,权限,)安全

    3、性的定义、级别,权限,SQL中的中的安全性机制,几种常用的安全性措施,自然环境安全性机制,几种常用的安全性措施,自然环境的安全性。的安全性。4主要内容和学习要求主要内容和学习要求n7.1 7.1 系统目录系统目录n7.2 7.2 事务事务n7.3 7.3 数据库的恢复数据库的恢复n7.4 7.4 数据库的并发控制数据库的并发控制n7.5 7.5 并发事务的可串行化和可恢复性并发事务的可串行化和可恢复性n7.6 7.6 数据库的完整性数据库的完整性n7.7 7.7 数据库的安全性数据库的安全性n小结小结57.1 7.1 系统目录系统目录n什么是系统目录什么是系统目录n系统目录的重要性系统目录的重

    4、要性n系统目录的内容系统目录的内容n元数据元数据67.1.1 7.1.1 系统目录的存储内容系统目录的存储内容n关系名,属性名,属性域(数据类型)关系名,属性名,属性域(数据类型)n各种约束,主键,辅助键,外键,空值各种约束,主键,辅助键,外键,空值/非空值非空值 n视图的外部级描述,存储结构和索引的视图的外部级描述,存储结构和索引的内部级描述内部级描述 n安全性和授权规则安全性和授权规则 n数据完整性规则数据完整性规则 注意:这些数据都以表格的形式存在注意:这些数据都以表格的形式存在7系统目录内容系统目录内容REL_AND_ATTR_CATALOGREL_NAMEATTR_NAMEATTR_

    5、TYPEMEMBER_OF_PKMEMBER_OF_FKFK_RELATION属性属性名名属性属性类型类型主主键键外外键键外键外键关系关系关系关系名名RELATION_KEYSREL_NAMEINDEX_NAMEMEMBER_ATTRINDEX_TYPEATTR_NOASC_DESC(a)存储键信息的目录关系存储键信息的目录关系REL_NAMEKEY_NUMBERMEMBER_ATTRRELATION_INDEXES(b)存储索引信息的目录关系存储索引信息的目录关系VIEW_QUERIER VIEW_ATTRIBUTESVIEW_NAMEQUERY VIEW_NAMEATTR_NAMEATTR

    6、_NUM(c)存储视图信息的目录关系存储视图信息的目录关系8系统目录的扩充系统目录的扩充ERER图图属性属性键键视图属性视图属性视图关系视图关系关系关系基本关系基本关系索引索引属性名属性名键类型键类型d数据类型数据类型键编号键编号关系名关系名查询查询索引类型索引类型属性序号属性序号索引名索引名属性名属性名K_AR_IR_FI_AK_IR_AR_KV_A外键外键97.1.3 7.1.3 系统目录和系统目录和DBMSDBMS各子系统的联各子系统的联系系DDL编译程序编译程序DML优化程序优化程序DML命令的外命令的外部级到概念级部级到概念级映象映象DML编译程序编译程序DML分析校分析校验程序验程

    7、序DBMS处理和检查三级处理和检查三级模式两级映象模式两级映象检查查询涉及的检查查询涉及的关系名属性名等关系名属性名等将查询涉及的概念将查询涉及的概念模式转换成内模式,模式转换成内模式,产生访问计划产生访问计划根据物理结构优根据物理结构优化查询执行方案化查询执行方案将查询中的视图由外将查询中的视图由外部级导到概念级映象部级导到概念级映象处理和检查权限处理和检查权限授权和安全程序授权和安全程序10主要内容主要内容n7.1 7.1 系统目录系统目录 n7.27.2 事务事务 n7.3 7.3 数据库的恢复数据库的恢复n7.4 7.4 数据库的并发控制数据库的并发控制n7.5 7.5 并发事务的可串

    8、行化和可恢复性并发事务的可串行化和可恢复性n7.6 7.6 数据库的完整性数据库的完整性n7.7 7.7 数据库的安全性数据库的安全性n小结小结 11事务的定义事务的定义 n定义定义7.1 7.1 事务(事务(transactiontransaction)是构成单一逻辑工)是构成单一逻辑工作单元的操作集合。作单元的操作集合。n在程序中,事务以在程序中,事务以BEGIN TRANSACTIONBEGIN TRANSACTION语句开始,语句开始,以以COMMITCOMMIT语句或语句或ROLLBACKROLLBACK语句结束。语句结束。nCOMMITCOMMIT语句表示事务执行成功地结束(提交)

    9、,此语句表示事务执行成功地结束(提交),此时告诉系统,数据库要进入一个新的正确状态,该事时告诉系统,数据库要进入一个新的正确状态,该事务对数据库的所有更新都已交付实施(写入磁盘)。务对数据库的所有更新都已交付实施(写入磁盘)。nROLLBACKROLLBACK语句表示事务执行不成功地结束(应该语句表示事务执行不成功地结束(应该“回退回退”),此时告诉系统,已发生错误,数据库可),此时告诉系统,已发生错误,数据库可能处在不正确的状态,该事务对数据库的所有更新必能处在不正确的状态,该事务对数据库的所有更新必须被撤消,数据库应恢复该事务到初始状态。须被撤消,数据库应恢复该事务到初始状态。12事务的事

    10、务的ACIDACID性质性质n性质性质n原子性原子性(Atomicity):(Atomicity):事务事务是一个不可分割是一个不可分割的工作单元的工作单元。n一致性一致性(Consistency)(Consistency):即数据不会应事务即数据不会应事务的执行而遭受破坏。的执行而遭受破坏。n隔离性隔离性(Isolation)(Isolation):在多个事务并发执行在多个事务并发执行时,系统应保证与这些事务先后单独执行时,系统应保证与这些事务先后单独执行时的结果一样。时的结果一样。n持久性持久性(Durability)(Durability):一个事务一旦完成全一个事务一旦完成全部操作后,

    11、它对数据库的所有更新应永久部操作后,它对数据库的所有更新应永久地反映在数据库中。地反映在数据库中。13例例:事务及其性质事务及其性质问题:问题:设银行数据库中设银行数据库中有一转账事务有一转账事务T T,从,从账号账号A A转一笔款子转一笔款子($50$50)到账号)到账号B B。相应的操作如下:相应的操作如下:T:BEGIN TRANSACTIONT:BEGIN TRANSACTION;readread(A A);A:=A-50A:=A-50 ;writewrite(A A););if(A0)ROLLBACKif(A0)ROLLBACK;else readelse read(B B););B

    12、:=B+50 B:=B+50;writewrite(B B););COMMITCOMMIT;T:read T:read(A A);A:=A50 A:=A50 ;writewrite(A A););readread(B B);B:=B+50 B:=B+50;writewrite(B B).组合成一个事务:组合成一个事务:14事务提交和事务撤销事务提交和事务撤销n事务的所有操作都完成了,则事务提交事务的所有操作都完成了,则事务提交(COMMIT),否则事务撤销,否则事务撤销(ROLLBACK)。nBEGIN TRANSACTION标志事务开始执行。标志事务开始执行。nBEGIN TRANSACTI

    13、ON和和COMMIT或或ROLLBACK一起保证了事务的四个性质。一起保证了事务的四个性质。n对数据库访问的两个基本操作:读和写,但对数据库访问的两个基本操作:读和写,但完成写操作后,数据可能暂时放在内存中,完成写操作后,数据可能暂时放在内存中,而非直接写进数据库。而非直接写进数据库。15事务的状态变迁图事务的状态变迁图活动状态活动状态局部提交局部提交状态状态提交状态提交状态失败状态失败状态异常中止状态异常中止状态READ/WRITEREAD/WRITE图图7.4 7.4 事务的状态变迁图事务的状态变迁图16主要内容主要内容n7.1 7.1 系统目录系统目录 n7.2 7.2 事务事务 n7.

    14、3 7.3 数据库的恢复数据库的恢复n7.4 7.4 数据库的并发控制数据库的并发控制n7.5 7.5 并发事务的可串行化和可恢复性并发事务的可串行化和可恢复性n7.6 7.6 数据库的完整性数据库的完整性n7.7 7.7 数据库的安全性数据库的安全性n小结小结 17存储器类型存储器类型 n易失性存储器(易失性存储器(volatile storagevolatile storage)内存、内存、cachecache存储器存储器 n非易失性存储器(非易失性存储器(nonvolatile storagenonvolatile storage)磁盘和磁带磁盘和磁带 n稳定存储器(稳定存储器(stab

    15、le storagestable storage)这是一个理论上的概念。存储在稳定存储这是一个理论上的概念。存储在稳定存储器中的信息是决不会丢失的。器中的信息是决不会丢失的。n稳定存储器稳定存储器的实现的实现n数据备份数据备份 n数据银行数据银行 18块和块的操作块和块的操作n块、物理块和缓冲块块、物理块和缓冲块n块的操作块的操作ninputinput(A A):把物理):把物理块块A A的内容传送到内的内容传送到内存的缓冲块中。存的缓冲块中。nOutputOutput(B B):把缓):把缓冲块冲块B B的内容传送到的内容传送到磁盘中恰当的物理块磁盘中恰当的物理块中中 B内存内存AB磁盘磁盘

    16、input(A)output(B)块操作块操作19数据访问数据访问xiwrite(X)包含包含x的块的块Bx存在,存在,read(X)事务事务系统系统开开始始请求请求read(X)事务工作区事务工作区分配分配X磁盘缓冲区磁盘缓冲区扫描内存扫描内存磁盘磁盘包含包含x的块的块Bx存在,存在,input(B)20恢复和原子性的联系恢复和原子性的联系银行转账系统银行转账系统A=2000 B=1000事务事务A=A-100B=B+100output(A)output(A)output(B)output(B)断电或其断电或其他故障他故障假设没有事假设没有事务的原子性,务的原子性,那么重新启那么重新启动事务

    17、时,动事务时,要么要么A因为因为再执行一遍再执行一遍而为而为1800,要么要么B因从因从未执行而保未执行而保持原值。持原值。21恢复的基本原则和实现方法恢复的基本原则和实现方法 n基本原则基本原则 :“冗余冗余”,即数据库重复存储。,即数据库重复存储。n具体实现方法具体实现方法 n平时做好两件事:转储和建立日志平时做好两件事:转储和建立日志n周期地(比如一天一次)对整个数据库进行拷贝,转储到周期地(比如一天一次)对整个数据库进行拷贝,转储到另一个磁盘或磁带一类存储介质中。另一个磁盘或磁带一类存储介质中。n 建立日志数据库。记录事务的开始、结束及数据每一次插建立日志数据库。记录事务的开始、结束及

    18、数据每一次插入、删除和修改前后的值,并写到入、删除和修改前后的值,并写到“日志日志”库中。库中。n一旦发生数据库故障,分两种情况进行处理一旦发生数据库故障,分两种情况进行处理 n如果数据库已被破坏,则装入如果数据库已被破坏,则装入lastlast数据库备份,再利用日数据库备份,再利用日志库将这两个数据库状态之间的所有更新重新做一遍。志库将这两个数据库状态之间的所有更新重新做一遍。n如果数据库未被破坏,但某些数据不可靠,则撤消所有不如果数据库未被破坏,但某些数据不可靠,则撤消所有不可靠的修改,把数据库恢复到正确的状态。可靠的修改,把数据库恢复到正确的状态。22故障类型和恢复方法故障类型和恢复方法

    19、n事务故障事务故障n可以预期的事务故障,如存款余额透支等可以预期的事务故障,如存款余额透支等n非预期事务故障,如运算溢出、数据错误、非预期事务故障,如运算溢出、数据错误、死锁等死锁等n系统故障系统故障硬件故障、软件错误或掉电等等硬件故障、软件错误或掉电等等n介质故障介质故障(硬故障硬故障)磁盘物理故障或遭受病毒破坏磁盘物理故障或遭受病毒破坏23检查点技术检查点技术(1)(1)n什么是检查点方法什么是检查点方法n检查点方法的恢复检查点方法的恢复算法算法n根据日志文件建根据日志文件建立事务重做队列立事务重做队列和事务撤销队列和事务撤销队列n对对重做队列中的重做队列中的事务进行事务进行REDORED

    20、O处处理,对撤消队列理,对撤消队列中的事务进行中的事务进行UNDOUNDO处理处理 事务事务T1T1不必恢复;不必恢复;事务事务T2T2和事务和事务T4T4必须重做必须重做(REDO)(REDO);事务事务T3T3和事务和事务T5T5必须撤消必须撤消(UNDO)(UNDO)。事务事务检查点检查点故障点故障点t检查点检查点T1T1T3T3T2T2T5T5T4T424检查点技术检查点技术(2)(2)n运行记录优先原则运行记录优先原则写一个修改到数据库中写一个修改到数据库中写一个表示这个修改的运行记录到日志中写一个表示这个修改的运行记录到日志中n是两个不同的操作。哪一个操作重要?是两个不同的操作。哪

    21、一个操作重要?n为了安全,运行记录应该先写下来,这就是为了安全,运行记录应该先写下来,这就是“运行记录优先原则运行记录优先原则”,具体有两点:,具体有两点:n至少要等相应运行记录已经写入运行日志后,才至少要等相应运行记录已经写入运行日志后,才能允许事务往数据库中写记录;能允许事务往数据库中写记录;n直至事务的所有运行记录都已经写入到运行日志直至事务的所有运行记录都已经写入到运行日志后,才能允许事务完成后,才能允许事务完成COMMITCOMMIT处理。处理。25SQLSQL对事务的对事务的支持支持n无无begin transactionnCommitnRollbackn游标游标26主要内容主要内

    22、容n7.1 7.1 系统目录系统目录 n7.2 7.2 事务事务 n7.3 7.3 数据库的恢复数据库的恢复n7.4 7.4 数据库的并发控制数据库的并发控制n7.5 7.5 并发事务的可串行化和可恢复性并发事务的可串行化和可恢复性n7.6 7.6 数据库的完整性数据库的完整性n7.7 7.7 数据库的安全性数据库的安全性n小结小结 27问题问题1-1-丢失更新丢失更新时间时间更新事务更新事务T1T1数据库中数据库中A A值值更新事务更新事务T2T2t0t0 100100 t1t1FIND AFIND A t2t2 FIND AFIND At3t3A:=A-30A:=A-30 t4t4 A:=

    23、AA:=A*2 2t5t5UPD AUPD A t6t6 7070UPD AUPD At7t7 200200 图图7.10 7.10 在时间在时间t7t7丢失了事务丢失了事务T1T1的更新的更新(FINDFIND表示从表示从DBDB中读值,中读值,UPDUPD表示把值写回到表示把值写回到DBDB)28问题问题2-2-读脏数据读脏数据(1)(1)时间时间更新事务更新事务T1T1数据库中数据库中A A值值读事务读事务T2T2t0t0 100100 t1t1FIND AFIND A t2t2A:=A-30A:=A-30 t3t3UPD AUPD A t4t4 7070FIND AFIND At5t5

    24、ROLLBACKROLLBACK t6t6 100100 图图7.11 7.11 事务事务T2T2在时间在时间t4t4读了读了 未提交的未提交的A A值(值(7070)29问题问题2-2-读脏数据读脏数据(2)(2)时间时间更新事务更新事务T1T1数据库中数据库中A A值值更新事务更新事务T2T2t0t0 100100 t1t1FIND AFIND A t2t2A:=A-30A:=A-30 t3t3UPD AUPD A t4t4 7070FINDFIND A At5t5 A:=AA:=A*2 2t6t6 UPDUPD A At7t7 140140 t8t8ROLLBACROLLBACK K t

    25、9t9 100100 图图7.12 7.12 事务事务T2T2在时间在时间t4t4读了未提交的读了未提交的A A值,值,并在时间并在时间t8t8丢失了自己的更新丢失了自己的更新 30问题问题3-3-错误求和错误求和时间时间读事务读事务T1DB中中A、B、C的值的值更新事务更新事务T2t0 40,50,30 t1FIND A t2SUM:=A t3FIND B t4SUM:=SUM+BSUM:=SUM+B t5 FIND Ct6 C:=C-10t7 UPD Ct8 40,50,20FIND At9 A:=A+10t10 UPD At11 50,50,20COMMITt12FIND C t13SU

    26、M:=SUM+CSUM:=SUM+C 事务事务T1进行了不一致的分析进行了不一致的分析 31问题问题4-4-不可重复读不可重复读时间时间读事务读事务T1T1数据库中数据库中A A值值更新事务更新事务T2T2t0t0 100100 t1t1FIND AFIND A t2t2 FIND AFIND At3t3 A:=AA:=A*2 2t4t4 UPDUPD A At5t5 200200COMMITt6t6 FIND AFIND A 事务事务T T1 1两次读取两次读取A A的值,的值,却得到了不同的结果却得到了不同的结果 32解决方法解决方法时间时间更新事务更新事务T1T1数据库中数据库中A A值

    27、值更新事务更新事务T2T2t0t0 100100 t1t1FIND AFIND A t2t2 FIND AFIND At3t3A:=A-30A:=A-30 t4t4 A:=AA:=A*2 2t5t5UPD AUPD A t6t6 7070UPD AUPD At7t7 200200 在时间在时间t7t7丢失了事务丢失了事务T1T1的更新的更新33封锁技术封锁技术n封锁是控制并发执行的主要技术。封锁是控制并发执行的主要技术。n锁(锁(locklock)是一个与数据项相关的变量,对)是一个与数据项相关的变量,对可能应用于该数据项上的操作而言,锁描述了可能应用于该数据项上的操作而言,锁描述了该数据项的

    28、状态。该数据项的状态。n通常在数据库中每个数据项都有一个锁。锁通常在数据库中每个数据项都有一个锁。锁的作用是使并发事务对数据库中数据项的访问的作用是使并发事务对数据库中数据项的访问能够同步。能够同步。n封锁技术中主要有两种封锁:封锁技术中主要有两种封锁:排他型封锁排他型封锁 共享型封锁。共享型封锁。34排他型封锁(排他型封锁(X X锁)锁)X锁定义:锁定义:如果事务如果事务T T对某个数据对某个数据R R(可以是数据项、(可以是数据项、记录、数据集乃至整个数据库)实现了记录、数据集乃至整个数据库)实现了X X锁,那么在锁,那么在T T对数据对数据R R解除封锁之前,不允许其他事务解除封锁之前,

    29、不允许其他事务T T再对该数据再对该数据加任何类型的锁。这种锁称为加任何类型的锁。这种锁称为“X X锁锁”。X X锁的操作有两个:封锁操作锁的操作有两个:封锁操作“XFIND R”XFIND R”解锁操作解锁操作“XRELEASE R”XRELEASE R”PXPX协议:任何企图更新记录协议:任何企图更新记录R R的事务必须先执行的事务必须先执行“XFIND R”XFIND R”操作,以获得对操作,以获得对R R的的X X锁,才能读或写记锁,才能读或写记录录R R;如果未获准;如果未获准X X锁,那么这个事务进入等待队列,锁,那么这个事务进入等待队列,一直到获准一直到获准X X锁,事务才能继续

    30、做下去。锁,事务才能继续做下去。PXCPXC协议协议:X X锁的解除操作应该合并到事务的结束锁的解除操作应该合并到事务的结束(COMMITCOMMIT或或ROLLBACKROLLBACK)操作中)操作中。35共享型封锁(共享型封锁(S S锁)锁)S锁定义锁定义如果事务如果事务T T对某数据加上对某数据加上S S锁后,仍允许其锁后,仍允许其他事务再对该数据加他事务再对该数据加S S锁,但在对该数据的所有锁,但在对该数据的所有S S锁都锁都解除之前决不允许任何事务对该数据加解除之前决不允许任何事务对该数据加X X锁。锁。S S锁的操作有三个锁的操作有三个:封锁操作封锁操作“SFIND R”SFIN

    31、D R”升级和写操作升级和写操作“UPDX R”UPDX R”解锁操作解锁操作“SRELEASE R”SRELEASE R”PSPS协议:任何要读取记录协议:任何要读取记录R R的事务必须先执行的事务必须先执行“SFIND R”SFIND R”操作,以获得对操作,以获得对R R的的S S锁。当事务获准对锁。当事务获准对R R的的S S锁后,若要更新记录锁后,若要更新记录R R必须用必须用“UPDX R”UPDX R”操作,这操作,这个操作首先把个操作首先把S S锁升级为锁升级为X X锁,若成功则更新记录,否锁,若成功则更新记录,否则这个事务进入等待队列。则这个事务进入等待队列。PSCPSC协议

    32、:协议:S S锁的解除操作应该合并到事务的结束。锁的解除操作应该合并到事务的结束。36使用使用X锁解决数据丢失锁解决数据丢失时间时间更新事务更新事务T1T1DBDB中中A A的值的值更新事务更新事务T2T2t0t0 100100 t1t1XFIND AXFIND A t2t2 XFIND A(XFIND A(失败失败)wait(wait(等待等待)t3t3A:=A-30A:=A-30 wait waitt4t4 wait wait t5t5UPD AUPD A wait waitt6t6 7070 wait waitt7t7COMMIT(COMMIT(含解锁含解锁)wait waitt8t8

    33、XFIND A(XFIND A(重做重做)t9t9 A:=AA:=A*2 2t10t10 UPD AUPD At11t11 140140COMMIT(COMMIT(含解锁含解锁)等事务等事务T1T1更新完成后再执行事务更新完成后再执行事务T2T2 37使用使用S锁解决数据丢失锁解决数据丢失时间时间更新事务更新事务T1T1DBDB中中A A的值的值更新事务更新事务T2T2t0t0 100100 t1t1SFIND ASFIND A t2t2 SFIND ASFIND At3t3A:=A-30A:=A-30 t4t4 A:=AA:=A*2 2t5t5 UPDX A(UPDX A(失败失败)t6t6

    34、waitwait UPDX A(UPDX A(失败失败)t7t7waitwait waitwaitt8t8waitwait waitwait更新未丢失,但在时间更新未丢失,但在时间t6t6发生了死锁发生了死锁 38封锁的相容矩阵封锁的相容矩阵注:注:N=NO,不相容的请求,不相容的请求 Y=YES,相容的请求,相容的请求X、S、:分别表示、:分别表示X锁,锁,S锁,无锁锁,无锁 如果两个封锁是不相容如果两个封锁是不相容的,则后提出封锁的事的,则后提出封锁的事务要等待。务要等待。XSXNNYSNYYYYYT1T239封锁的粒度封锁的粒度n 封锁对象的大小称为封锁的粒度封锁对象的大小称为封锁的粒度

    35、(granularitygranularity)n封锁的对象封锁的对象 n逻辑单元逻辑单元:属性值、属性值集合、元组、关属性值、属性值集合、元组、关系、索引项、整个索引、整个数据库系、索引项、整个索引、整个数据库 n物理单元物理单元:页(数据页或索引页)、块页(数据页或索引页)、块 n封锁粒度与系统并发度和并发控制开销密切相封锁粒度与系统并发度和并发控制开销密切相关。粒度越大,系统中能被封锁的对象就越少,关。粒度越大,系统中能被封锁的对象就越少,并发度就越小,但同时系统的开销也就越小;并发度就越小,但同时系统的开销也就越小;相反,粒度越小,并发度越高,系统开销越大相反,粒度越小,并发度越高,系

    36、统开销越大 40封锁带来的问题封锁带来的问题1(1(活锁活锁)T1:XFIND AT1:XFIND AT2:XFIND AT2:XFIND AT3:XFIND AT3:XFIND AA AA已被封锁,已被封锁,不成功,等待不成功,等待A刚被释刚被释放,成功放,成功A刚被刚被T2释释放,成功放,成功T1永远等待永远等待活锁!活锁!解决方法:先来先服务解决方法:先来先服务时间时间t41封锁带来的问题封锁带来的问题2(2(饿死饿死)事务序列事务序列A1A2A3A4A5资源资源AT2T2永远不永远不能封锁能封锁解决方法,改变授权方式:解决方法,改变授权方式:当事务当事务T2中请对数据项中请对数据项Q加

    37、加S锁时,授权加锁的条件是:锁时,授权加锁的条件是:不存在在数据项不存在在数据项Q上持有上持有X锁的其他事务;锁的其他事务;不存在等待对数据项不存在等待对数据项Q加锁且先于加锁且先于T2申请加锁的事务。申请加锁的事务。每一个事务均请求每一个事务均请求A的的S锁,成功后一段锁,成功后一段时间释放时间释放请求请求A的的X锁锁42封锁带来的问题封锁带来的问题3(3(死锁死锁)时间时间 事务事务T1 事务事务T2t0XFIND A t1 XFIND Bt2XFIND B t3waitXFIND At4waitwait死锁死锁若事务依赖图若事务依赖图有环则可能死锁有环则可能死锁T1T2T3T4事务的无环

    38、依事务的无环依赖图赖图事务的有环依事务的有环依赖图赖图T1T2T3T443并发操作的调度并发操作的调度n事务的调度:事务的执行次序称为事务的调度:事务的执行次序称为“调度调度”。n串行调度:如果多个事务依次执行,则称为串行调度:如果多个事务依次执行,则称为事务的串行调度事务的串行调度(Serial Schedule)。)。n并发调度并发调度:如果利用分时的方法,同时处理多如果利用分时的方法,同时处理多个事务,则称为事务的并发调度个事务,则称为事务的并发调度(Concurrent Schedule)。)。n可串行化可串行化:如果一个并发调度的执行结果与:如果一个并发调度的执行结果与某一串行调度的

    39、执行结果等价,那么这个并某一串行调度的执行结果等价,那么这个并发调度称为发调度称为“可串行化的调度可串行化的调度”,否则是,否则是“不可串行化的调度不可串行化的调度”。44两段封锁协议两段封锁协议n在对任何一个数据进行读写操作之前,在对任何一个数据进行读写操作之前,事务必须获得对该数据的封锁;事务必须获得对该数据的封锁;n在释放一个封锁之后,事务不再获得任在释放一个封锁之后,事务不再获得任何其他封锁。何其他封锁。n遵守该协议的事务分为两个阶段:获得遵守该协议的事务分为两个阶段:获得封锁阶段,也称为封锁阶段,也称为“扩展扩展”阶段;释放阶段;释放封锁阶段,也称为封锁阶段,也称为“收缩收缩”阶段。

    40、阶段。n如果所有的事务都遵守如果所有的事务都遵守“两段封锁协两段封锁协议议”,则所有可能的并发调度都是可串,则所有可能的并发调度都是可串行化的。行化的。45SQLSQL中事务的存取模式中事务的存取模式nREAD ONLY(只读型):事务对数据库的(只读型):事务对数据库的操作只能是读操作。定义这个模式后,表示操作只能是读操作。定义这个模式后,表示随后的事务均是只读型。随后的事务均是只读型。nREAD WRITE(读写型):事务对数据库(读写型):事务对数据库的操作可以是读操作,也可以是写操作。定的操作可以是读操作,也可以是写操作。定义这个模式后,表示随后的事务均是读写型。义这个模式后,表示随后

    41、的事务均是读写型。在程序开始时默认这种模式在程序开始时默认这种模式 n这两种模式可用下列这两种模式可用下列SQL语句定义:语句定义:SET TRANSACTION READ ONLY SET TRANSACTION READ WRITE 46SQLSQL中事务的隔离级别中事务的隔离级别nSERIALIZABLESERIALIZABLE(可串行化):允许事务并发执行,但须保(可串行化):允许事务并发执行,但须保证并发调度可串行化,是默认级别。证并发调度可串行化,是默认级别。nREPEATABLE READREPEATABLE READ(可重复读):只许事务读已提交的数据,(可重复读):只许事务读

    42、已提交的数据,且两次读之间不许其他事务修改此数据。事务可以不可串且两次读之间不许其他事务修改此数据。事务可以不可串行化。行化。nREAD COMMITTEDREAD COMMITTED(读提交数据):允许事务读已提交的数(读提交数据):允许事务读已提交的数据,但不要求据,但不要求“可重复读可重复读”。nREAD UNCOMMITTEDREAD UNCOMMITTED(可以读未提交数据):允许事务读已(可以读未提交数据):允许事务读已提交或未提交的数据。提交或未提交的数据。n上述四种级别可以用下列上述四种级别可以用下列SQLSQL语句定义:语句定义:SET TRANSACTION ISOLATI

    43、ON LEVEL SET TRANSACTION ISOLATION LEVEL SERIALIZABLESERIALIZABLESET TRANSACTION ISOLATION LEVEL SET TRANSACTION ISOLATION LEVEL REPEATABLE READREPEATABLE READSET TRANSACTION ISOLATION LEVEL SET TRANSACTION ISOLATION LEVEL READ COMMITTEDREAD COMMITTEDSET TRANSACTION ISOLATION LEVEL SET TRANSACTION I

    44、SOLATION LEVEL READ UNCOMMITTEDREAD UNCOMMITTED47基于时标的并发控制基于时标的并发控制n这种技术不是采用封锁的方法,因而是不会产生死这种技术不是采用封锁的方法,因而是不会产生死锁的调度锁的调度n在事务在事务T Ti i运行时,有唯一的时间标志,称为时标或运行时,有唯一的时间标志,称为时标或时戳,用时戳,用TS(TTS(Ti i)表示表示n时标可用下列两种方法之一实现时标可用下列两种方法之一实现n事务开始运行时的系统时间(称为启动时间)作为事事务开始运行时的系统时间(称为启动时间)作为事务的时标务的时标n每个事务与一个逻辑编号相联系。譬如逻辑编号可

    45、以每个事务与一个逻辑编号相联系。譬如逻辑编号可以是运行事务的顺序号是运行事务的顺序号n如果两个事务如果两个事务T Ti i和和T Tj j的时标分别为的时标分别为TS(TTS(Ti i)和和TS(TTS(Tj j),并且有并且有TS(TTS(Ti i)TS(T)TS(Tj j),那么称,那么称T Ti i是年长的事务,是年长的事务,T Tj j是年轻的事务。是年轻的事务。48时标顺序协议时标顺序协议n在事务在事务T Ti i执行执行read(Q)read(Q)时时n 如果如果TS(TTS(Ti i)W_timestamp(Q)W_timestamp(Q),那么,那么T Ti i 应该读已经被改

    46、写的应该读已经被改写的Q Q值。值。这样,应拒绝这样,应拒绝T Ti i 的的read(Q)read(Q)操作,并重新启动操作,并重新启动T Ti in 如果如果TS(TTS(Ti i)W_timestamp(Q)W_timestamp(Q),那么执行,那么执行read(Q)read(Q),并且置,并且置R_timestamp(Q)R_timestamp(Q)的值为的值为R_timestamp(Q)R_timestamp(Q)和和TS(TTS(Ti i)中的大者中的大者n在事务在事务T Ti i执行执行write(Q)write(Q)时时n 如果如果TS(TTS(Ti i)R_timestam

    47、p(Q)R_timestamp(Q),那么,那么T Ti i 产生的产生的Q Q值应在以前的时值应在以前的时间内写入,这已不可能。因而,应拒绝间内写入,这已不可能。因而,应拒绝T Ti i的的write(Q)write(Q)操作,并重操作,并重新启动新启动T Ti i。n 如果如果TS(TTS(Ti i)W_timestamp(Q)W_timestamp(Q),那么,那么T Ti i企图写过时的企图写过时的Q Q值。这时,值。这时,也应拒绝也应拒绝T Ti i的的write(Q)write(Q)操作,并重新启动操作,并重新启动T Ti i。n 否则,执行否则,执行write(Q)write(Q

    48、),并置,并置W_timestamp(Q)W_timestamp(Q)的值为的值为TS(TTS(Ti i)。49例例时间时间事务事务T T1 1事务事务T T2 2R_timestamp(A)R_timestamp(A)W_timestamp(A)W_timestamp(A)TS(TTS(T2 2)*startstart*0 00 0TS(TTS(T1 1)*startstart*t1t1read(A)read(A)TS(TTS(T1 1)t2t2read(A)read(A)TS(T2)TS(T2)t3t3A:=A-30A:=A-30t4t4A:=AA:=A*2 2t5t5Write(A)Wr

    49、ite(A)TS(TTS(T1 1)t6t6Write(A)Write(A)t7t7*restartrestart*在在t6t6时刻,事务时刻,事务T T2 2写操作失败,将重新启动写操作失败,将重新启动50例例时间时间事务事务T T1 1事务事务T T2 2R_timestamp(A)R_timestamp(A)W_timestamp(A)W_timestamp(A)TS(TTS(T1 1)*startstart*0 00 0TS(TTS(T2 2)*startstart*t1t1read(A)read(A)TS(TTS(T1 1)t2t2read(A)read(A)TS(TTS(T2 2)

    50、t3t3A:=A-30A:=A-30t4t4A:=AA:=A*2 2t5t5Write(A)Write(A)t6t6*restartrestart*Write(A)Write(A)TS(TTS(T2 2)图图7.23 7.23 在在t5t5时刻,事务时刻,事务T T1 1写操作失败,将重新启动写操作失败,将重新启动51时标顺序协议的特点时标顺序协议的特点 n由于冲突操作是按时标顺序处理的,因此时标顺序协议能保证调度是可串行化的。n由于没有事务处于等待状态,因此并发调度时不会发生死锁。n时标顺序协议能做到使调度无级联回退调度 52主要内容主要内容n7.1 7.1 系统目录系统目录 n7.2 7.

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:第7章-系统实现技术课件.ppt
    链接地址:https://www.163wenku.com/p-4096712.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库