北京工业大学-数据库系统课件-chapter7-系统实现技术.ppt

上传人(卖家):三亚风情 文档编号:2774808 上传时间:2022-05-25 格式:PPT 页数:84 大小:789KB
下载 相关 举报
北京工业大学-数据库系统课件-chapter7-系统实现技术.ppt_第1页
第1页 / 共84页
北京工业大学-数据库系统课件-chapter7-系统实现技术.ppt_第2页
第2页 / 共84页
北京工业大学-数据库系统课件-chapter7-系统实现技术.ppt_第3页
第3页 / 共84页
北京工业大学-数据库系统课件-chapter7-系统实现技术.ppt_第4页
第4页 / 共84页
北京工业大学-数据库系统课件-chapter7-系统实现技术.ppt_第5页
第5页 / 共84页
点击查看更多>>
资源描述

1、第七章第七章 系统实现技术系统实现技术 主要内容和学习要求主要内容和学习要求n7.1 7.1 系统目录系统目录 (了解)(了解)n7.2 7.2 事务事务 (综合应用)(综合应用)n7.3 7.3 数据库的恢复数据库的恢复 (理解)(理解)n7.4 7.4 数据库的并发控制数据库的并发控制 (了解)(了解)n7.57.5* * 并发事务的可串行化和可恢复性(了解)并发事务的可串行化和可恢复性(了解)n7.6 7.6 数据库的完整性数据库的完整性(理解)(理解)n7.7 7.7 数据库的安全性数据库的安全性(理解)(理解)n小结小结 系统目录系统目录n什么是系统目录什么是系统目录?n系统目录的重

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

3、R_NAMEATTR_TYPEMEMBER_OF_PKMEMBER_OF_FKFK_RELATION关系关系名名属性属性名名属性属性类型类型主主键键外键外键外键关系外键关系RELATION_KEYSRELATION_KEYSREL_NAMEREL_NAMEKEY_NUMBERKEY_NUMBERMEMBER_ATTRMEMBER_ATTR(a)(a)存储键信息的目录关系存储键信息的目录关系RELATION_INDEXESRELATION_INDEXESREL_NAMEREL_NAMEINDEX_NAMINDEX_NAME EMEMBER_ATTMEMBER_ATTR RINDEX_TYPIND

4、EX_TYPE EATTR_NOATTR_NOASC_DESCASC_DESC(b)(b)存储索引信息的目录关系存储索引信息的目录关系VIEW_QUERIERVIEW_QUERIER VIEW_ATTRIBUTESVIEW_ATTRIBUTESVIEW_NAMEVIEW_NAMEQUERYQUERYVIEW_NAMEVIEW_NAMEATTR_NAMEATTR_NAMEATTR_NUMATTR_NUM(c)(c)存储视图信息的目录关系存储视图信息的目录关系系统目录的扩充系统目录的扩充ER图图属性属性键键视图属性视图属性视图关系视图关系关系关系基本关系基本关系索引索引属性名属性名键类型键类型d数

5、据类型数据类型键编号键编号关系名关系名查询查询索引类型索引类型属性序号属性序号索引名索引名属性名属性名K_AR_IR_FI_AK_IR_AR_KV_A外键外键系统目录和系统目录和DBMS各子系统各子系统的联系的联系DDL编译程序编译程序DML优化程序优化程序DML命令的外命令的外部级到概念级部级到概念级映象映象DML编译程序编译程序DML分析校分析校验程序验程序DBMS处理和检查三级处理和检查三级模式两级映象模式两级映象检查查询涉及的检查查询涉及的关系名属性名等关系名属性名等将查询涉及的概念将查询涉及的概念模式转换成内模式,模式转换成内模式,产生访问计划产生访问计划根据物理结构优根据物理结构优

6、化查询执行方案化查询执行方案将查询中的视图由外将查询中的视图由外部级导到概念级映象部级导到概念级映象处理和检查权限处理和检查权限授权和安全程序授权和安全程序主要内容主要内容n7.1 7.1 系统目录系统目录 n7.27.2 事务事务 n7.3 7.3 数据库的恢复数据库的恢复n7.4 7.4 数据库的并发控制数据库的并发控制n7.5 7.5 并发事务的可串行化和可恢复性并发事务的可串行化和可恢复性n7.6 7.6 数据库的完整性数据库的完整性n7.7 7.7 数据库的安全性数据库的安全性n小结小结 什么是事务什么是事务?n事务事务(transaction)是构成单一逻辑工作单元的是构成单一逻辑

7、工作单元的操作集合操作集合.n原子性原子性(Atomicity):事务事务是一个不可分割的工作单元。是一个不可分割的工作单元。n一致性一致性(Consistency):即数据不会因事务的执行而遭受破即数据不会因事务的执行而遭受破坏坏。必须使数据库状态从一个一致状态变为另一个一致。必须使数据库状态从一个一致状态变为另一个一致状态。状态。n隔离性隔离性(Isolation):在多个事务并发执行时,系统应保证与在多个事务并发执行时,系统应保证与这些事务先后单独执行时的结果一样这些事务先后单独执行时的结果一样。n持久性持久性(Durability):一个事务一旦完成全部操作后,它对一个事务一旦完成全部

8、操作后,它对数据库的所有更新应永久数据库的所有更新应永久地反映在数据库中。地反映在数据库中。 例子例子 例:例:设银行数据库中有一设银行数据库中有一转账事务转账事务T,从账号,从账号A转转一笔款子一笔款子($50)到账号到账号B。相应的事务:相应的事务:T:read(A););A:=A50;write(A););read(B););B:=B+50;write(B).n以下违反了事务的什么性质?以下违反了事务的什么性质?n若由于故障和错误,造成事若由于故障和错误,造成事务务T执行的结果修改了执行的结果修改了A值而值而未修改未修改B值;值;n若事务执行结束后,若事务执行结束后,A值减少值减少50而

9、而B值未变;值未变;n若系统暂时处于不一致状态若系统暂时处于不一致状态时,第二个事务插件来计算时,第二个事务插件来计算A与与B之和或修改之和或修改A、B的值;的值;n因某种原因,虽然事务成功因某种原因,虽然事务成功执行完成,但写入磁盘的数执行完成,但写入磁盘的数据丢失。据丢失。事务提交和事务撤销(事务提交和事务撤销(1)nBEGIN TRANSACTION标志事务开始执行;标志事务开始执行;n事务的所有操作都完成了,则事务事务的所有操作都完成了,则事务提交提交(COMMIT),否则,否则事务事务撤销撤销(ROLLBACK);nCOMMIT:表示事务执行成功地结束,该事务对数据:表示事务执行成功

10、地结束,该事务对数据库的所有更新操作都已写入磁盘;库的所有更新操作都已写入磁盘;nROLLBACK:表示事务执行不成功地结束,该事务对:表示事务执行不成功地结束,该事务对数据库的所有更新必须被撤销,数据库应恢复该事务到数据库的所有更新必须被撤销,数据库应恢复该事务到初始状态。初始状态。nBEGIN TRANSACTION和和COMMIT(或(或ROLLBACK)一起保证了事务的四个性质。一起保证了事务的四个性质。事务提交和事务撤销(事务提交和事务撤销(2)n对数据库访问的两个基本操对数据库访问的两个基本操作:读和写作:读和写nread(X):把数据把数据X从磁盘从磁盘的数据库中读到内存的缓的数

11、据库中读到内存的缓冲区冲区nwrite(X):把数据把数据X从内从内存缓冲区中写回磁盘的数存缓冲区中写回磁盘的数据库中据库中n注:完成写操作后,数据可注:完成写操作后,数据可能暂时放在内存中,而非直能暂时放在内存中,而非直接写进数据库。接写进数据库。T:BEGINTRANSACTION;read(A););A:=A50;write(A););if(A0)ROLLBACK;elseread(B););B:=B+50;write(B);COMMIT;事务状态变迁图事务状态变迁图活动状态活动状态局部提交局部提交状态状态失败状态失败状态提交状态提交状态异常终止状态异常终止状态read/write为了精

12、确地描述事务的工作,这里用事务状态图来描述为了精确地描述事务的工作,这里用事务状态图来描述事务的状态变迁。事务的状态变迁。主要内容主要内容n7.1 7.1 系统目录系统目录 n7.2 7.2 事务事务 n7.3 7.3 数据库的恢复数据库的恢复n7.4 7.4 数据库的并发控制数据库的并发控制n7.57.5* * 并发事务的可串行化和可恢复性并发事务的可串行化和可恢复性n7.6 7.6 数据库的完整性数据库的完整性n7.7 7.7 数据库的安全性数据库的安全性n小结小结 存储器类型(存储器类型(1 1) n易失性存储器易失性存储器(volatile storage):(volatile sto

13、rage):n内存、内存、cachecache存储器存储器; ;n故障时,其中的信息会丢失;故障时,其中的信息会丢失;n但访问速度快。但访问速度快。 n非易失性存储器非易失性存储器(nonvolatile storage):(nonvolatile storage):n磁盘和磁带;磁盘和磁带;n系统故障时,信息不丢失,但本身故障时,信息会丢系统故障时,信息不丢失,但本身故障时,信息会丢失;失;n访问速度较慢。访问速度较慢。存储器类型(存储器类型(2 2)n稳定存储器(稳定存储器(stable storagestable storage)这是一个理论上的概念。这是一个理论上的概念。信息不会丢失。

14、信息不会丢失。可通过对非易失性存储器进行技术处理来实现。可通过对非易失性存储器进行技术处理来实现。n稳定存储器稳定存储器的实现的实现n数据备份数据备份 :n数据银行数据银行:块的概念块的概念n块块:内外存数据交换的基本单位。:内外存数据交换的基本单位。n物理块:物理块:磁盘中的块,称为磁盘中的块,称为“物理块物理块”。n缓冲块:缓冲块:内存中临时存放物理块内容的块称为内存中临时存放物理块内容的块称为“缓冲块缓冲块”。n所有的缓冲块组成了所有的缓冲块组成了“磁盘缓冲区磁盘缓冲区”。块的操作块的操作n块的操作块的操作ninputinput(A A):把物理):把物理块块A A的内容传送到内的内容传

15、送到内存的缓冲块中。存的缓冲块中。nOutputOutput(B B):把缓):把缓冲块冲块B B的内容传送到的内容传送到磁盘中恰当的物理块磁盘中恰当的物理块中中 B内存内存AB磁盘磁盘input(A)output(B)图图7.5 7.5 块操作块操作数据访问数据访问write(X)xi包含包含x的块的块Bx存存在,在,read(X)事务事务系统系统开开始始请求请求read(X)事务工作区事务工作区分配分配X磁盘缓冲区磁盘缓冲区扫描内存扫描内存磁盘磁盘包含包含x的块的块Bx不不存在,存在,Input(B)恢复和原子性的联系恢复和原子性的联系银行转账系统银行转账系统A=2000 B=1000事务

16、事务A=A-100B=B+100Output(A)Output(B)断电或其断电或其他故障他故障假设没有事务的假设没有事务的原子性,那么重原子性,那么重新启动事务时要新启动事务时要么么A因为再执行因为再执行一遍而为一遍而为1800,要么要么B因从未执因从未执行而保持原值行而保持原值故障时,数故障时,数据库中据库中A,B值值分别为多少?分别为多少?恢复的基本原则和实现方法恢复的基本原则和实现方法 n基本原则基本原则 :“冗余冗余”,即数据库重复存储,即数据库重复存储n具体实现方法具体实现方法 n平时做好两件事:平时做好两件事:转储转储和和建立日志建立日志 n周期地(比如一天一次)对整个数据库进行

17、拷贝,转储到周期地(比如一天一次)对整个数据库进行拷贝,转储到另一个磁盘或磁带一类存储介质中。另一个磁盘或磁带一类存储介质中。n建立日志数据库。记录事务的开始、结束及数据每一次插建立日志数据库。记录事务的开始、结束及数据每一次插入、删除和修改前后的值,并写到入、删除和修改前后的值,并写到“日志日志”库中。库中。n 一旦发生数据库故障,分两种情况进行处理一旦发生数据库故障,分两种情况进行处理 n如果数据库已被破坏:装入最近的数据库备份,重做更新如果数据库已被破坏:装入最近的数据库备份,重做更新操作。操作。n如果数据库未被破坏:但某些数据不可靠,则撤消所有不如果数据库未被破坏:但某些数据不可靠,则

18、撤消所有不可靠的修改。可靠的修改。 故障类型和恢复方法故障类型和恢复方法n事务故障事务故障n可以预期的事务故障:可以预期的事务故障:n非预期事务故障:非预期事务故障:n系统故障系统故障硬件故障、软件错误或掉电等等;硬件故障、软件错误或掉电等等;内存内容丢失,但不破坏数据库;内存内容丢失,但不破坏数据库;恢复子系统在系统重新启动时,分恢复子系统在系统重新启动时,分2种情况处理:对未种情况处理:对未完事务,进行完事务,进行UNDO,对已提交事务但更新还在缓冲,对已提交事务但更新还在缓冲的事务,进行的事务,进行REDOn介质故障介质故障(硬故障硬故障) 磁盘物理故障或遭受病毒破坏磁盘物理故障或遭受病

19、毒破坏检查点(检查点(checkpoint)技术)技术什么是检查点方法?什么是检查点方法?nDBMS定时设置检查点,在检查时刻才真正做到把定时设置检查点,在检查时刻才真正做到把DB的的修改写到磁盘,并在日志文件中写入一条检查点记录修改写到磁盘,并在日志文件中写入一条检查点记录(以便恢复时使用)。当(以便恢复时使用)。当DB需要恢复时,只有那些在检需要恢复时,只有那些在检查点后面的事务需要恢复。查点后面的事务需要恢复。n优点:大大减少了优点:大大减少了DB的恢复时间。的恢复时间。检查点方法检查点方法n检查点方法的恢复算法检查点方法的恢复算法:n根据日志文件建立事根据日志文件建立事务重做队列和事务

20、撤务重做队列和事务撤销队列销队列n对对重做队列中的事务重做队列中的事务进行进行REDOREDO处理,对撤处理,对撤消队列中的事务进行消队列中的事务进行UNDOUNDO处理处理 -事务事务检查点检查点故障点故障点时间时间检查点检查点T1T3T2T5T4事务事务T1T1不必恢复不必恢复; ;事务事务T2T2和事务和事务T4T4必须重做(必须重做(REDOREDO); ;事务事务T3T3和事务和事务T5T5必须撤消(必须撤消(UNDOUNDO) tctf如何处理这五类事务?如何处理这五类事务?思考:思考:n如果写数据库和写日志这两个操作之间,发生故如果写数据库和写日志这两个操作之间,发生故障,一个保

21、留,一个丢失,则会发生什么情况?障,一个保留,一个丢失,则会发生什么情况?n运行记录优先原则运行记录优先原则SQL对事务的支持对事务的支持n无无begintransactionnCommitnRollbackn游标游标主要内容主要内容n7.1 7.1 系统目录系统目录 n7.2 7.2 事务事务 n7.3 7.3 数据库的恢复数据库的恢复n7.4 7.4 数据库的并发控制数据库的并发控制n7.57.5* * 并发事务的可串行化和可恢复性并发事务的可串行化和可恢复性n7.6 7.6 数据库的完整性数据库的完整性n7.7 7.7 数据库的安全性数据库的安全性n小结小结 并发操作并发操作nDBMS的

22、并发控制子系统,负责协调并发事务的执行,保的并发控制子系统,负责协调并发事务的执行,保证数据的完整性,同时避免用户得到不正确的数据。证数据的完整性,同时避免用户得到不正确的数据。n若没有并发控制子系统对事务进行控制,则其并发操作通若没有并发控制子系统对事务进行控制,则其并发操作通常会带来四个问题:常会带来四个问题:n丢失更新问题;丢失更新问题;n读脏数据问题;读脏数据问题;n错误求和问题;错误求和问题;n不可重复读问题不可重复读问题并发操作带来的问题并发操作带来的问题1-1-丢失更新丢失更新时间时间更新事务更新事务T1数据库中数据库中A的值的值更新事务更新事务T2T0100t1FINDAt2F

23、INDAt3A:=A-30t4A:=A*2t5UPDAt670UPDAt7200图图7.10在时间在时间t7丢失了事务丢失了事务T1的更新的更新(FIND表示从表示从DB中读值,中读值,UPD表示把值写回到表示把值写回到DB) 并发操作带来的问题并发操作带来的问题2-2-读脏数据读脏数据时间时间更新事务更新事务T1T1数据库中数据库中A A的值的值读事务读事务T2T2t0t0100100t1t1FIND AFIND At2t2A:=A-30A:=A-30t3t3UPD AUPD At4t47070FIND AFIND At5t5* *ROLLBACKROLLBACK* *t6t6100100图

24、图7.11 7.11 事务事务T2T2在时间在时间t4t4读了未提交的读了未提交的A A值(值(7070) 并发操作带来的问题并发操作带来的问题2-2-读脏数据读脏数据时间时间更新事务更新事务T1T1数据库中数据库中A A的值的值更新事务更新事务T2T2t0t0100100t1t1FIND AFIND At2t2A:=A-30A:=A-30t3t3UPD AUPD At4t47070FIND AFIND At5t5A:=AA:=A* *2 2t6t6UPD AUPD At7t7140140t8t8* *ROLLBACKROLLBACK* *t9t9100100图图7.12 7.12 事务事务T

25、2T2在时间在时间t4t4读了未提交的读了未提交的A A值,并在时间值,并在时间t8t8丢失了自己的更新丢失了自己的更新 并发操作带来的问题并发操作带来的问题3-3-错误求和错误求和时间时间读事务读事务T1数据库中数据库中A、B、C的值的值更新事务更新事务T2t040,50,30t1FINDAt2SUM:=At3FINDBt4SUM:=SUM+Bt5FINDCt6C:=C-10t7UPDCt840,50,20FINDAt9A:=A+10t10UPDAt1150,50,20COMMITt12FINDCt13SUM:=SUM+C 事务事务T1T1进行了不一致的分析进行了不一致的分析 并发操作带来的

26、问题并发操作带来的问题4 4不可重复不可重复读读时间时间读事务读事务T1数据库中数据库中A的的值值更新事务更新事务T2t0100t1FINDAt2t3t4UPDAt5t6图图7.14事务事务T1两次读取两次读取A值,却得到了不同的结果值,却得到了不同的结果COMMIT200FIND AFIND AA:=A*2并发操作带来的几个问题如何解决?并发操作带来的几个问题如何解决?n解决办法:解决办法:n封锁技术(封锁技术(Locking):主要技术):主要技术n排他型锁排他型锁n共享型锁共享型锁n时标(时标(Timestamping)排他型封锁(排他型封锁(ExclusiveLock)(X锁)锁)nX

27、锁定义锁定义 如果事务如果事务T对某个数据对某个数据R实现了实现了X锁,那么锁,那么T对数据对数据R解除解除封锁之前,不允许其他事务封锁之前,不允许其他事务T再对该数据加任何类型的锁。再对该数据加任何类型的锁。n操作操作nXFIND R: 对数据对数据R加加X锁,并读数据锁,并读数据R,然后可对,然后可对R写写nXRELEASE R: 解除对数据解除对数据R的的X锁锁使用使用X锁的规则锁的规则nPX协议协议:n任何企图任何企图更新更新记录记录R的事务必须先执行的事务必须先执行“XFIND R”操作,以获得对操作,以获得对R的的X锁,才能读或写记录锁,才能读或写记录R;如果未;如果未获准获准X锁

28、,那么这个事务进入等待队列,一直到获准锁,那么这个事务进入等待队列,一直到获准X锁,事务才能继续做下去。锁,事务才能继续做下去。 n PXC协议协议nX锁的解除操作应该合并到事务的结束(锁的解除操作应该合并到事务的结束(COMMIT或或ROLLBACK)操作中。)操作中。例:使用例:使用X X锁解决数据丢失锁解决数据丢失时间时间更新事务更新事务T1T1数据库中数据库中A A的值的值更新事务更新事务T2T2t0t0100100t1t1XFIND AXFIND At2t2XFIND AXFIND A(失败)(失败)waitwait(等待)(等待)t3t3A:=A-30A:=A-30waitwait

29、t4t4waitwaitt5t5UPD AUPD Awaitwaitt6t67070waitwaitt7t7COMMITCOMMIT(包括解锁)(包括解锁)waitwaitt8t8XFIND AXFIND A(重做)(重做)t9t9A:=AA:=A* *2 2t10t10UPD AUPD At11t11140140COMMITCOMMIT(包括解锁)(包括解锁)共享型封锁(共享型封锁(SharedLock)(S锁)锁)nS锁定义锁定义 如果事务如果事务T对某数据加上对某数据加上S锁后,仍允许其他事务再对该锁后,仍允许其他事务再对该数据加数据加 S锁,但在对该数据的所有锁,但在对该数据的所有S锁

30、都解除之前不允许锁都解除之前不允许任何事务对该数据加任何事务对该数据加X锁。锁。n操作操作nSFIND R:加:加S锁,并读数据锁,并读数据R;不能写;不能写RnUPDX R: 把把S锁升级为锁升级为X锁;锁;nSRELEASE R:使用使用S S锁的规则锁的规则nPS协议协议n任何要更新记录任何要更新记录R的事务必须先执行的事务必须先执行“SFIND R”操操作,以获得对作,以获得对R的的S锁。当事务获准对锁。当事务获准对R的的S锁后,若锁后,若要更新记录要更新记录R必须用必须用“UPDX R”操作,这个操作首操作,这个操作首先把先把S锁升级为锁升级为X锁,若成功则更新记录,否则这个锁,若成

31、功则更新记录,否则这个事务进入等待队列。事务进入等待队列。n PSC协议协议nS锁的解除操作应该合并到事务的结束。锁的解除操作应该合并到事务的结束。例例: :使用使用S S锁解决丢失更新锁解决丢失更新时间时间更新事务更新事务T1T1数据库中数据库中A A的值的值更新事务更新事务T2T2t0t0100100t1t1SFIND ASFIND At2t2SFIND ASFIND At3t3A:=A-30A:=A-30t4t4A:=AA:=A* *2 2t5t5UPDX AUPDX A(失败)(失败)t6t6waitwaitUPDX AUPDX A(失败)(失败)t7t7waitwaitWaitWai

32、tt8t8waitwaitWaitWait封锁的相容矩阵封锁的相容矩阵注:注:N=NO,不相容的请求,不相容的请求Y=YES,相容的请求,相容的请求X、S、:分别表示、:分别表示X锁,锁,S锁,无锁锁,无锁如果两个封锁是不相容如果两个封锁是不相容的,则后提出封锁的事务要的,则后提出封锁的事务要等待。等待。X S X S X XS S N N Y N N Y N Y Y N Y Y Y Y Y Y Y Y T2T1 封锁的粒度封锁的粒度n封锁对象的大小称为封锁对象的大小称为封锁的粒度封锁的粒度。(granularity) n封锁的对象封锁的对象 n逻辑单元逻辑单元: :属性值、属性值集合、元组、

33、关系、索引属性值、属性值集合、元组、关系、索引项、整个索引、整个数据库项、整个索引、整个数据库 n物理单元物理单元 :页(数据页或索引页)、块页(数据页或索引页)、块 n封锁粒度与系统并发度和并发控制开销的关系封锁粒度与系统并发度和并发控制开销的关系n封锁的粒度越大,系统中能被封锁的对象就越少,并封锁的粒度越大,系统中能被封锁的对象就越少,并发度就越小,但同时系统的开销也就越小;发度就越小,但同时系统的开销也就越小;n相反,粒度越小,并发度越高,系统开销越大相反,粒度越小,并发度越高,系统开销越大。封锁带来的问题封锁带来的问题1-1-“活锁活锁”(1)n系统可能使某个事务永远处于等待状态,得不

34、到封锁系统可能使某个事务永远处于等待状态,得不到封锁的机会,这种现象称为的机会,这种现象称为“活锁活锁”(Live Lock)。)。n解决方法:采用解决方法:采用“先来先服务先来先服务”的策略。的策略。n如果系统运行时,事务有优先级:如果系统运行时,事务有优先级:n产生的问题:低优先级的事务,可能即使排队也难产生的问题:低优先级的事务,可能即使排队也难得到封锁的机会。得到封锁的机会。n解决办法:采用解决办法:采用“升级升级”方法,即当一个事务等待方法,即当一个事务等待一定时间还轮不上封锁时,可以提高其优先级别。一定时间还轮不上封锁时,可以提高其优先级别。封锁带来的问题封锁带来的问题1-1-活锁

35、活锁(2)(2)T1XFIND AT2XFIND AT3XFIND AAA已被封锁,已被封锁,不成功,等待不成功,等待A刚被释刚被释放,成功放,成功时间点时间点A刚被刚被T2释释放,成功放,成功T1永远等待永远等待活锁!活锁!解决方法:先来先服务解决方法:先来先服务封锁带来的问题封锁带来的问题2-2-饿死饿死(1)(1)n有可能存在一个事务序列,其中每个事务都申请对某数有可能存在一个事务序列,其中每个事务都申请对某数据项加据项加S锁锁,且每个事务在授权加锁后一小段时间内释放,且每个事务在授权加锁后一小段时间内释放封锁,此时若有另一个事务封锁,此时若有另一个事务T2欲在该数据项上加欲在该数据项上

36、加X锁锁,则永远轮不上封锁的机会。这种现象称为则永远轮不上封锁的机会。这种现象称为“饿死饿死”(Starvation)。)。n解决方法,改变授权方式:当事务解决方法,改变授权方式:当事务T2中申请对数据项中申请对数据项Q加加S锁时,授权加锁的条件是:锁时,授权加锁的条件是:n 不存在在数据项不存在在数据项Q上持有上持有X锁的其他事务;锁的其他事务; n 不存在等待对数据项不存在等待对数据项Q加锁加锁, 且先于且先于T2申请加锁的申请加锁的事务。事务。封锁带来的问题封锁带来的问题2-2-饿死饿死(2)(2)事务序列事务序列A1A2A3A4A5资源资源AT2T2永远不永远不能封锁能封锁解决方法解决

37、方法: 改变授权方式:改变授权方式:当事务当事务T2中申请对数据项中申请对数据项A加加S锁时,授权加锁的条件是:锁时,授权加锁的条件是: 不存在在数据项不存在在数据项A上持有上持有X锁的其他事务;锁的其他事务; 不存在等待对数据项不存在等待对数据项A加锁且先于加锁且先于T2申请加锁的事务申请加锁的事务 每一个事务均请求每一个事务均请求A的的S锁,成功后一锁,成功后一段时间释放段时间释放请求请求A的的X锁锁封锁带来的问题封锁带来的问题3-死锁死锁(1)n系统中有两个或两个以上的事务都处于等待状态,并且系统中有两个或两个以上的事务都处于等待状态,并且每个事务都在等待其中另一个事务解除封锁,它才能继

38、每个事务都在等待其中另一个事务解除封锁,它才能继续执行下去,结果造成任何一个事务都无法继续执行,续执行下去,结果造成任何一个事务都无法继续执行,这种现象称系统进入了这种现象称系统进入了“死锁死锁”(Dead Lock)状态。)状态。n如何测试系统是否存在死锁?如何测试系统是否存在死锁? 事务依赖图的形式。事务依赖图的形式。T1T2数据数据B数据数据A封锁带来的问题封锁带来的问题3-死锁死锁(2)时间时间事务事务T1事务事务T2t0XFINDAt1XFINDBt2XFINDBt3waitXFINDAt4waitwait死锁死锁若事务依赖图若事务依赖图有环则可能死有环则可能死锁锁T1T2T3T4图

39、图7.20 7.20 事务的无环事务的无环依赖图依赖图T1T2T3T4图图7.21 7.21 事务的有环事务的有环依赖图依赖图解决方法解决方法:(1)采取措施预防死锁采取措施预防死锁;(2)对系统进行诊断,若有死锁,对系统进行诊断,若有死锁,则解除则解除.如何解决死锁问题?如何解决死锁问题?n死锁的预防死锁的预防n一次封锁法:事务一次将所有要使用的数据全部加锁,一次封锁法:事务一次将所有要使用的数据全部加锁,否则不能继续执行。但会扩大封锁范围,降低系统的并否则不能继续执行。但会扩大封锁范围,降低系统的并发度。发度。n顺序封锁法:预先对数据对象规定一个封锁顺序,所有顺序封锁法:预先对数据对象规定

40、一个封锁顺序,所有事务都按这个顺序实行封锁。但这个顺序难以维护和确事务都按这个顺序实行封锁。但这个顺序难以维护和确定。定。n死锁的诊断与解除死锁的诊断与解除n超时法超时法: 若等待时间超过规定时限若等待时间超过规定时限,则认为发生了死锁。则认为发生了死锁。n等待图法:是一个有向图,反映了事务的等待情况;并等待图法:是一个有向图,反映了事务的等待情况;并发系统检测该图,若图中存在回路,则表示出现了死锁。发系统检测该图,若图中存在回路,则表示出现了死锁。并发操作的调度并发操作的调度事务的调度事务的调度n事务的调度事务的调度: 事务的执行次序称为事务的执行次序称为“调度调度” n串行调度串行调度:

41、如果多个事务依次执行,则称为事务的串行调度如果多个事务依次执行,则称为事务的串行调度(Serial Schedule) n并发调度并发调度: 如果利用分时的方法,同时处理多个事务,则称如果利用分时的方法,同时处理多个事务,则称为事务的并发调度(为事务的并发调度(Concurrent Schedule)。)。n如果有如果有n个事务串行调度,可有个事务串行调度,可有n!种不同的有效调度。种不同的有效调度。n如果有如果有n个事务并发调度,可能的并发调度数目远远大于个事务并发调度,可能的并发调度数目远远大于n!。但其中有的正确有的不正确。但其中有的正确有的不正确。n那么如何判断一个并发调度是否正确呢?

42、那么如何判断一个并发调度是否正确呢?并发调度的可串行化并发调度的可串行化n可串行化可串行化: 如果一个并发调度的执行结果与某一串行调如果一个并发调度的执行结果与某一串行调度的执行结果等价,那么这个并发调度称为度的执行结果等价,那么这个并发调度称为“可串行化可串行化的调度的调度”,否则是不可串行化的调度,否则是不可串行化的调度 n举例举例n串行调度:例串行调度:例7.3中,先执行中,先执行T1再执行再执行T2,值为,值为140;反之,值为;反之,值为170.n不可串行化的调度:图不可串行化的调度:图7.10执行结果为执行结果为200,与任,与任何一个串行调度的结果都不一样。因此,该调度是何一个串

43、行调度的结果都不一样。因此,该调度是不可串行化的调度。不可串行化的调度。两段封锁协议两段封锁协议n两段封锁协议两段封锁协议n在对任何一个数据进行读写操作之前,事务必须获在对任何一个数据进行读写操作之前,事务必须获得对该数据的封锁;得对该数据的封锁; n在释放一个封锁之后,事务不再获得任何其他封锁在释放一个封锁之后,事务不再获得任何其他封锁 。n遵守该协议的事务分为两个阶段:获得封锁阶段,也遵守该协议的事务分为两个阶段:获得封锁阶段,也称为称为“扩展扩展”阶段;释放封锁阶段,也称为阶段;释放封锁阶段,也称为“收缩收缩”阶段阶段 ;n两段封锁协议与可串行化调度的关系是什么?两段封锁协议与可串行化调

44、度的关系是什么? 如果所有的事务都遵守如果所有的事务都遵守“两段封锁协议两段封锁协议”,则所有可,则所有可能的并发调度都是可串行化的。能的并发调度都是可串行化的。SQL中事务的存取模式中事务的存取模式nREADONLY(只读型):(只读型):事务对数据库的操作只事务对数据库的操作只能是读操作。定义这个模式后,表示随后的事务均是只能是读操作。定义这个模式后,表示随后的事务均是只读型。读型。nREADWRITE(读写型):(读写型):事务对数据库的操作事务对数据库的操作可以是读操作,也可以是写操作。定义这个模式后,表可以是读操作,也可以是写操作。定义这个模式后,表示随后的事务均是读写型。在程序开始

45、时默认这种模式示随后的事务均是读写型。在程序开始时默认这种模式n这两种模式可用下列这两种模式可用下列SQL语句定义:语句定义:SETTRANSACTIONREADONLYSETTRANSACTIONREADWRITESQL中事务的隔离级别中事务的隔离级别nSERIALIZABLE(可串行化):(可串行化):允许事务并发执行,但须保证允许事务并发执行,但须保证并发调度可串行化,是默认级别。并发调度可串行化,是默认级别。nREPEATABLEREAD(可重复读):(可重复读):只许事务读已提交的数只许事务读已提交的数据,且两次读之间不许其他事务修改此数据。据,且两次读之间不许其他事务修改此数据。n

46、READCOMMITTED(读提交数据):(读提交数据):允许事务读已提交的允许事务读已提交的数据,但不要求数据,但不要求“可重复读可重复读”。nREADUNCOMMITTED(可以读未提交数据):(可以读未提交数据):允许事允许事务读已提交或未提交的数据。务读已提交或未提交的数据。n上述四种级别可以用下列上述四种级别可以用下列SQL语句定义:语句定义:SETTRANSACTIONISOLATIONLEVELSERIALIZABLESETTRANSACTIONISOLATIONLEVELREPEATABLEREADSETTRANSACTIONISOLATIONLEVELREADCOMMITTE

47、DSETTRANSACTIONISOLATIONLEVELREADUNCOMMITTED主要内容主要内容n7.1 7.1 系统目录系统目录 n7.2 7.2 事务事务 n7.3 7.3 数据库的恢复数据库的恢复n7.4 7.4 数据库的并发控制数据库的并发控制n7.57.5* * 并发事务的可串行化和可恢复性并发事务的可串行化和可恢复性n7.6 7.6 数据库的完整性数据库的完整性n7.7 7.7 数据库的安全性数据库的安全性n小结小结 什么是数据库的完整性?什么是数据库的完整性? n数据库的完整性:指数据的数据库的完整性:指数据的正确性正确性、有效性有效性和和相容性相容性。n例如:学生的学号

48、必须唯一,性别只能是男或女,本科生年例如:学生的学号必须唯一,性别只能是男或女,本科生年龄的取值范围为龄的取值范围为14-30的整数。的整数。nDBMS中执行完整性检查的子系统称为中执行完整性检查的子系统称为“完整性子系统完整性子系统”。n完整性子系统的主要功能完整性子系统的主要功能 :n监督事务的执行,并测试是否违反完整性规则;监督事务的执行,并测试是否违反完整性规则; n若有违反现象,则采取恰当的操作,譬如拒绝操作、报若有违反现象,则采取恰当的操作,譬如拒绝操作、报告违反情况、改正错误等方法来处理。告违反情况、改正错误等方法来处理。 SQL中的完整性约束中的完整性约束n分成三大类:分成三大

49、类:n域约束:涉及某个域域约束:涉及某个域n基本表约束:涉及一个基本表基本表约束:涉及一个基本表n断言:涉及多个关系断言:涉及多个关系SQL中的完整性约束中的完整性约束1-域约束域约束n域约束域约束用用“CREATEDOMAIN”语句定义新的域,并且还可出现语句定义新的域,并且还可出现CHECK子句子句n定义一个新的域定义一个新的域COLOR,可用,可用下列语句实现:下列语句实现:CREATEDOMAINCOLORCHAR(6)DEFAULT?CONSTRAINTVALID_COLORSCHECK(VALUEIN(Red,Yellow,Blue,Green,?);举例举例nCREATETABL

50、EPART(,COLORCOLOR,););以下情况会产生什么结果?以下情况会产生什么结果?l若用户插入一个零件记录时,未提交颜色若用户插入一个零件记录时,未提交颜色COLOR值;值;l若用户输入了非法的颜色值。若用户输入了非法的颜色值。SQL中的完整性约束中的完整性约束2-基本表基本表的约束的约束n候选键的定义候选键的定义UNIQUE()或或PRIMARYKEY()n外键的定义外键的定义FOREIGNKEY()REFERENCES()ONDELETEONUPDATEn“检查约束检查约束”的定义的定义CHECK(条件表达式)(条件表达式)关于外键约束完整性的补充关于外键约束完整性的补充n删除删

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(北京工业大学-数据库系统课件-chapter7-系统实现技术.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

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


163文库-Www.163Wenku.Com |网站地图|