ch数据库保护实用.pptx
《ch数据库保护实用.pptx》由会员分享,可在线阅读,更多相关《ch数据库保护实用.pptx(96页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、7.1.1事务的概念事务定义事务定义事务是由一系列操作序列构成的程序执行单元事务是由一系列操作序列构成的程序执行单元。这些操作要么都做,要么都不做,是一个不可分割的工作单位。例如银行转帐。SQLSQL中事务的定义中事务的定义事务以Begin transaction开始,以Commit work或 Rollback work结束。Commit work表示提交,事务正常结束。Rollback work表示事务非正常结束,撤消事务已做的操作,回滚到事务开始时状态。第1页/共96页7.1.2 事务的性质事务的性质事务的性质ACIDACID原子性(Atomicity)一致性(Consistency)隔
2、离性(Isolation)持久性(Durability)第2页/共96页事务的性质原子性事务中的操作,要么全做成,要么都不做事务是不可拆分的事务必须以 Commit/Rollback 结束由DBMS的事务管理子系统完成。第3页/共96页事务的性质一致性独立运行的事务,必须保证保持数据库的一致状态即数据不会因为事务的执行而遭到破坏。数据库的一致性状态由编写事务程序的程序员来负责,也可以由系统测试完整性约束自动完成。由DBMS的完整性子系统完成。第4页/共96页事务的性质隔离性系统必须保证事务不受其它并发执行事务的影响。多个并发事务之间不能相互干扰并发不影响事务的执行隔离性通过并发控制子系统实现。
3、第5页/共96页事务的性质持久性一旦事务成功完成(Commit),它对数据库的更新应该是持久的即使在写入磁盘之前,系统发生故障在下次启动之后,也应保障数据更新的有效持久性通过恢复管理子系统实现。第6页/共96页7.1.2 事务的性质对数据库的访问是建立在读和写两个操作的基础上。read(X):从数据库传送数据项X到事务的工作区中。write(X):从事务的工作区中将数据项X写回数据库。第7页/共96页7.1.2 事务的性质举例:银行转帐:事务Ti从帐户A过户100¥到帐户B。T:read(A);A:=A 100;write(A);read(B);B:=B+100;write(B);read(X
4、):从数据库传送数据项X到事务的工作区中。write(X):从事务的工作区中将数据项X写回数据库。第8页/共96页练习:、DMBS的并发控制子系统,保证了事务()的实现。、事务的独立执行不会破坏DB的完整性,称为()、DBMS中实现事务持久性的子系统是:()、隔离性、事务的一致性。、恢复管理子系统。第9页/共96页7.1.3 故障类型和恢复方法在运行数据库系统时,可能会出现各种各样的故障。发生故障时,可能丢失数据库中的数据。DBMS的恢复管理子系统采取一系列措施,保证在任何情况下保持事务的原子性和持久性,确保数据不被损坏。1、数据库系统中可能发生的故障第10页/共96页7.1.3 故障类型和恢
5、复方法(1)事务故障非预期的事务故障事务由于某些内部条件无法继续正常执行如:非法输入、找不到数据、溢出等可预期的事务故障应用程序可以发现的事务故障该事务可在以后的某个时间重新执行此时数据库中的数据处于非一致状态第11页/共96页7.1.3 故障类型和恢复方法(2)系统故障由于特殊的原因导致事务无法正常执行,而系统必须重新启动如停电、CPU故障等一般只影响正在执行的事务,而不会破坏数据库本身以及DBMS环境系统重新启动时,数据库处于一种非一致性状态第12页/共96页7.1.3 故障类型和恢复方法()介质故障外存发生故障,导致存储其中的数据、或数据库本身、或DBMS软件处于不正常状态这类故障的破坏
6、性较大计算机病毒破坏DBMS软件环境破坏OS环境导致数据库系统无法正常工作第13页/共96页7.1.4 恢复的基本原则和实现方法(1)定期对整个数据库进行复制和转储冗余技术是数据库恢复的保障建立数据的冗余与数据库分别存储利用冗余数据,重建数据,使其达到一致的状态建立整个数据库的冗余将整个数据库进行备份(冗余的数据库)需要时将备份数据库恢复(重载)至系统中解决数据库本身被破坏的场合只能恢复到数据库被备份时的状态第14页/共96页(1)定期对整个数据库进行复制和转储转储可以分为:静态转储:在存储期间不允许对数据库进行存取、修改。动态转储:在存储期间允许对数据库进行存取、修改。转储还可以分为:海量存
7、储:每次存储全部数据库增量存储:每次只存储上次转储后更新过的数据。第15页/共96页7.1.4 恢复的基本原则和实现方法(2)、建立日志文件以日志文件的形式,记录事务对数据库的更新操作日志文件记录了数据库更新的所有日志记录的序列常见的是以记录为单位的日志文件利用日志记录,可对数据库做相应的恢复日志内容各个事务的开始标志各个事务的数据更新操作各个事务的结束(Commit/Rollback)第16页/共96页7.1.4 恢复的基本原则和实现方法()恢复数据库本身(或DBMS)被破坏重新安装DBMSReload数据库副本(先前被转储的数据库)用日志文件执行REDO操作,不丢失对数据库的更新。需DBA
8、人工处理第17页/共96页数据库恢复技术恢复数据库本身未被破坏,但有些数据不可靠系统重启,扫描日志文件(耗时)根据日志,作Undo:对更新的操作执行反向操作系统自动完成第18页/共96页7.1.5 运行记录优先原则、至少要等相应运行记录已经写入“日志”文件后,才能允许事务往数据库中写记录。、直至事务的所有运行记录都已写入运行“日志”文件后,才能允许事务完成“END TRANSACTION”处理。第19页/共96页练习:、为了能在出故障时,做好恢复,应在平时做好两件事情:()和()、后备副本的主要作用是()3、日志文件用于保存()、备份和日志、故障恢复、对数据库的更新操作第20页/共96页7.1
9、.6 SQL中的恢复操作ORACLE中的实现方法:COMMIT WORK RELEASEROLLBACK WORK RELEASESET AUTOCOMMIT IMMEDIATE|ON|OFF第21页/共96页7.2.1 数据库的并发操作带来的问题数据库是一个共享资源,可以由多个用户使用。这些用户程序可以一个一个的串行执行,每一时刻只有一个用户程序运行,执行对数据库的存取。其他程序必须等到这个用户程序结束后才能对数据库存取。在多用户共享系统中,如果多个用户同时对同一数据进行操作称为并发操作。可能会互相干扰,破坏了事务的隔离性。第22页/共96页1、丢失更新问题时间更新事务T1数据库中A的值更新
10、事务T21502 read(A)read(A)34A:=A-15A:=A*26write(A)740write(A)8100A值100,错误,第8步丢失了T1对数据库的更新操作。第23页/共96页2、不一致分析问题时间更新事务T1数据库中A的值读事务T31502 read(A)3read(A)4A:=A-105write(A)640在第6步时,由于T1已更新了A的值,此时T3使用的A值仍为50,因此造成了不一致。即读了过时的数据。第24页/共96页3、“脏数据”的读出时间更新事务T1数据库中A的值读事务T41502 read(A)3A:=A-104write(A)540read(A)6ROLL
11、BACK750数据库中A的值被恢复为50,事务T4读出的A的值为40,未提交随后又被撤销的数据称为“脏数据”。第25页/共96页并发控制需要靠数据库的并发控制子系统来解决。如时间更新事务T1数据库中A的值更新事务T21502 read(A)3read(A)4A:=A-15A:=A*26write(A)740write(A)81001、在第3步避免T2执行read,因为T1已经读了A的值,将要进行更新。2、应避免T1执行write,因为T2已经在使用A值。3、应避免T2执行write,因为T1已写了新的A值,事务T2的写操作将把T1的写操作冲掉。第26页/共96页7.2.2 排它型锁(X封锁)封
12、锁就是一个事务对某个数据对象加锁,取得对它一定的控制,限制其它事务对该数据对象使用。并发控制的基本方法就是封锁。数据的互斥访问当某事务访问某数据项时,其他任何事务均不得修改该数据项对访问的数据项加锁不同的加锁方式,产生不同的隔离层次,导致不同的一致性结果,获得不同的并发度第27页/共96页7.2.2 排它型锁(X封锁)封锁的类型排它锁(X锁,eXclusive lock):事务T对数据对象R加上X锁,则其它事务对R的任何封锁请求都不能成功,直至T释放R上的X锁。共享锁(S锁,Share lock):事务T对数据对象R加上S锁,则其它事务对R的X锁请求不能成功,而对R的S锁请求可以成功。第28页
13、/共96页、X封锁和PX协议X封锁:事务T对数据对象R加上X锁,则其它事务对R的任何封锁请求都不能成功,直至T释放R上的X锁。PX协议:任何企图更新记录R的事务必须先执行LOCK X(R),以获得对它的寻址能力,并对它取得X封锁。第29页/共96页举例:时间更新事务T1数据库中A的值更新事务T21502LOCK X(A)3read(A)4LOCK X(A)5A:=A-10wait6write(A)wait740wait8UNLOCK(A)wait9(重做)LOCK X(A)10read(A)11A:=A*212write(A)1380UNLOCK(A)利用PX协议,执行T1和T2。事务T1先对
14、A封锁,写回新的A值后,T1执行解除封锁操作,并对A进行修改。这个过程能得到正确结果。第30页/共96页7.2.2 排它型锁(X封锁)对于删除操作,PX协议同样适用。要删除一个记录,首先也要执行LOCK(X)操作和read操作后才能删除。对于插入操作,就不需要读记录,因此,可以假定“INSERT T”本包含了对新插入记录R的X封锁。第31页/共96页2、并发事务的可串行化多个事务可能同时(交叉地)在系统中运行提高处理器、磁盘的利用率减少等待时间多个事务并发运行,由事务管理器进行调度可串行化调度并发运行的结果,与事务按某一顺序串行运行的结果等同举例:图7.中第32页/共96页3、由事务的ROLL
15、BACK引起的丢失更新问题时间更新事务T1数据库中A的值更新事务T21502LOCK X(A)3read(A)4A:=A-105write(A)6UNLOCK(A)407LOCK X(A)8read(A)9A:=A*210write(A)1180UNLOCK(A)12COMMIT13ROLLBACK1450第33页/共96页上图中的情况不可原谅,因为此时数据库中A的值是错的。为了避免数据库恢复恢复时丢失更新时丢失更新,就不应该允许事务去使用一个未提交的修改。PXC协议由PX协议和下面一条规则组成:“X封锁必须保留到事务终点(COMMIT ROLLBACK)”第34页/共96页7.2.3 活锁与
16、死锁当多个事务请求封锁同一数据对象时,有可能出现锁的异常活锁多个事务申请对数据R加锁,而系统随机地加锁,导致某些事务长等活锁策略设定系统按事务申请锁的时间顺序进行排队第35页/共96页7.2.3 活锁与死锁第36页/共96页7.2.3 活锁与死锁死锁两个(或多个)事务互相申请对方加锁对象的排它锁,造成循环等待TTR2R1第37页/共96页7.2.3 活锁与死锁预防一次加锁法事务一次性对需要的数据进行加锁?降低了系统的并发性,数据的不可预见性顺序加锁法估算需要的锁,对系统中的锁设定一个加锁顺序,所有事务均按照该顺序进行加锁?很难估算死锁几乎无法避免,允许死锁的发生,对其进行诊断和解除第38页/共
17、96页7.2.3 活锁与死锁诊断超时法设定时限,超过即为死锁等待图法回路即为死锁解除杀死时间戳代价最小第39页/共96页7.2.4 共享型封锁(S封锁)共享锁(S锁,Share lock):事务T对数据对象R加上S锁,则其它事务对R的X锁请求不能成功,而对R的S锁请求可以成功。相容矩阵:T2T1XSXNNYSNYYYYY第40页/共96页时间事务T7数据库中ABC的值事务T8140,50,302read(A)3Sum:=(A)4read(B)5Sum:=Sum+B6UNLOCK(A)407LOCK X(A)8read(A)9C:=C-101040,50,20write(C)11LOCK X(A
18、)12A:=A+1013write(A)1450,50,20COMMIT15read(C)16Sum:=Sum+C50第41页/共96页时间事务T7数据库中ABC的值事务T8140,50,302LOCK S(A)3read(A)4Sum:=A5LOCK S(B)6Read(B)407Sum:=Sum+BLOCK X(C)8read(C)9C:=C-1010wait(C)1140,50,20LOCK X(A)12wait13wait14wait15LOCK S(C)wait16wait50wait第42页/共96页PS协议的主要内容如下:任何要更新记录R的操作必须先执行LOCK(R)操作,以获得
19、对该记录寻址的能力并对它取得S封锁。如果未获准S封锁,那么这个事务进入等待状态,一直到获准S封锁,事务才继续做下去。当事务获准对记录R的S封锁后,在记录R的修改前必须把S的封锁升级为X封锁。像PXC协议一样,也有一个PSC协议。PSC协议是在PS协议基础上再增加一条规则:S封锁要保持到事务终点。第43页/共96页举例:时间更新事务T1更新事务T21LOCK S(A)2LOCK S(A)3 read(A)4read(A)5A:=A-106A:=A*27UPGRADE(A)8waitUPGRADE(A)9waitwait在第9步发生死锁,此时系统挑一个事务牺牲,撤销并恢复到初始状态。第44页/共9
20、6页7.2.4 共享型封锁(S封锁)X锁S锁只允许一个事务独锁数据允许多个事务并发锁某一数据获准X锁的事务可以修改数据获准S锁的事务只能读数据,但不能修改数据事务的并发度低事务的并发度高,但增加了死锁的可能性X锁必须保留到事务终点根据需要,可随时解除S锁解决“丢失更新”问题解决“读不一致”问题第45页/共96页7.2.5两段封锁法(Two-phase Locking)内容:在对任何数据进行读写之前,事务首先要获得对该数据的封锁。在释放一个封锁之后,事务不再获得任何其它封锁。即事务分为两个阶段:生长阶段:获得封锁。收缩阶段:释放封锁。定理:若所有事务均遵从两段锁协议,则这些事务的所有并行调度都是
21、可串行化的。第46页/共96页示例lock-S(A)lock-S(B)lock-X(C)unlock(A)unlock(C)unlock(B)遵从两段锁协议。lock-S(A)unlock-S(A)lock-S(B)lock-X(C)unlock(C)unlock(B)不遵从两段锁协议。遵从两段锁协议仍可能发生死锁lock-S(A);lock-X(B);wait.lock-S(B)lock-X(A)wait T1 T2 T1:lock-S(A)lock-S(B)unlock(A)unlock(B)T2:lock-S(A)lock-S(B)unlock(A)unlock(B)第47页/共96页2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ch 数据库 保护 实用
限制150内