dtcc2016-数据库事务处理原理与实例剖析_第1页
dtcc2016-数据库事务处理原理与实例剖析_第2页
dtcc2016-数据库事务处理原理与实例剖析_第3页
dtcc2016-数据库事务处理原理与实例剖析_第4页
dtcc2016-数据库事务处理原理与实例剖析_第5页
免费预览已结束,剩余31页可下载查看

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据库事务处理数据库事务处理原理与实例剖叶涛RDBMS查询(SQL事务查询查询优化+ 查询RDBMS查询(SQL事务查询查询优化+ 查询执 事务(ACID)+ 目标用20-30分钟时间,勾勒出事务处理主线,主要原理le,事务概故障恢MVCC和事务概故障恢MVCC和日志和恢(一)(一) 事务处理原事务ionis agroupofDefinition:a事务ionis agroupofDefinition:ads resultswillbemadevisibletotherestofthesystemasawhentheioncommits orall,ifionaborts. ionsareex

2、pectedtobeconsistent,isolated,and例子: 从A账户转账50元到BJim1998A:=A B:= B + ACID? 为什么要ACID? (fromAtomicity: Aionschangestotheeareatomic:eitherallACID? 为什么要ACID? (fromAtomicity: Aionschangestotheeareatomic:eitherallhappenorhappen.Thesechangesincludedatabasechanges,messages,andactionsonConsistency:Aionisacorr

3、ecttransformationofthee.TheactionstakenagroupdonotviolateanyofegritystedwiththeIsolation:Eventhoughionsexecuteconcurrently,itappearstoeachtothersexecutedeitherbeforeTorafterT,butnotDurability:Onceasurviveionsfully(commits),itschangestothee为什么提出ACID这种事务模型给应用开抽象出一个好用的计算机模型:串行执行;执行中间不出了事务并发执行的串扰,各种各样的故

4、障,等带来的繁杂的处理逻辑事务模型是整个商业世界稳定的基石. 的工作怎样每做一件事都:(A)要么不做,要么做到底;(C心无旁骛;(D)必有总结和输出。 绩效很好怎样实现2PL, OCC证并发操作的正确并发控制日志:Undo/Redo,怎样实现2PL, OCC证并发操作的正确并发控制日志:Undo/Redo, WAL协议; 保证故障场景下可恢Atomic: Consistent: egrityIsolated: Durable:LastDirtyA:= B := 20; A:= LastDirtyA:= B := 20; A:= A:= 理论上事务正确的并理论上事务正确的并发执行Serialex

5、ecution: 不并发!有事务按照某个序列一个个串行执行Serializable: 对于N个事务的一个并发执行,说它是可串行化的 行是可串行化的。这种算法的正确性都是由严格的数学定理保障的技术上,怎样实现正确的并发执行数据库技术上,怎样实现正确的并发执行数据库的并发控制技术主要有三种:2PLMVCCOCC能实现正确的(可串行化的)并发执行, 各适合不同的场景Stricttwo-phaseLocking2PL): 事务在读(写)每个数据对象前需申请。事务申请不Multi-Concurrency Control (MVCC): 事务不持有锁,但是证在执行过程中只看到整个数据库过去某个时刻的一致性

6、状态。即使执行过程中,别的并发事务更改了数据Optimistic Concurrency Control (OCC): 多个事务并发执行的时候相不阻塞。 执行过程中每个事务读写的历史。在事务提交前的事务回滚。2PL方法是最经典的并发控制方法。MVCC对于TP(短事务)和AP(长查询)合负载通常有更好的并发度。OCC方法适合于读较少的场景;否则大量的事务回滚会能下降应用上,怎样权衡并发性能和正确性应用上,怎样权衡并发性能和正确性SQL标准的四级别怎么实现SQL标准的四级别怎么实现(定义故障对事务的ACID?事务处理系统中可能会发生什么样故障对事务的ACID?事务处理系统中可能会发生什么样的 性约

7、束),导致不能提交。此时,需要Abortmalue:事务处理系统出现故障(),内存中的数Abot的事MediaFailure:事务处理系统出现介质故障,硬盘中的数据丢失。若选STEAL则要保证最后Abort若选STEAL则要保证最后Abort的事务修改的磁盘数据可被清除。, (STEAL,NO-FORCE), 常见的数据库一般使用遵守WriteAhead Logging(WAL)协议的日志技术,(1)(2)常见的数据库一般使用遵守WriteAhead Logging(WAL)协议的日志技术,(1)(2)(3)规则(2)和规则(3)日志和恢复技术中,有许多细节和优化,具体可参见。(二tgreSQ

8、L事务处理实(二tgreSQL事务处理实使用MVCC机制实现DML使用MVCC机制实现DMLtgreSQL的故障恢tgreSQLMVCC机tgreSQL使用MVCC机制实现对数据读写tgreSQLMVCC机tgreSQL使用MVCC机制实现对数据读写的并Tuple结构:每个元组头中,修改:执行删除操作时,仅标注元组的删除事务ID,不真正删除数 (查询:执行查询时,同一行数据的多个版本,使用快照(活跃事务列表)Clog的信息,来做可见性判断,决定对当前查询可见的唯一的一个版:历史上被删除的元组如果对任何事务都不可见(不会再被用到Insert,Update,Insert,Update,Delete

9、,#o customer Insert,Update,Insert,Update,Delete,#o customer INSERT 16472 # select current,xmin,xmax,next,oid from customer_page0; current | xmin | xmax | next | oid| 1390 0 | (0,1) | (1 # update customer set where UPDATE # select current,xmin,xmax,next,oid from current | xmin | xmax | next | | 1390

10、| 1391 | (0,2) | | 1391 0| (0,2) | (2 #delete fromcustomer where DELETE # select current,xmin,xmax,next,oid from customer_page0; current | xmin | xmax | next | oid |1390 | 1391 | (0,2) | |1391 | 1392 | (0,2) | (2 MVCC:Snapshot与可见性判MVCC:Snapshot与可见性判tgreSQL使用活跃事务列表(快照)和Clog来实现多个版本的可见快照获取时机 元组是可见的, 如果

11、xminxmax 无效(活跃,回滚,未开始详细版# select * from txid_current_snapshot(); (1 最小xid最大xid: 活跃xid和索引。锁模式对应操与的模182SELECTFOR和索引。锁模式对应操与的模182SELECTFOR34VACUUM(非5678DROP TABLE, ALTER 全tgreSQL表#begin; # # # drop (1#deletefromcustomerwhere DELETE 1# select * |+|tgreSQL表#begin; # # # drop (1#deletefromcustomerwhere DE

12、LETE 1# select * |+|+|+|+|+|+|ttf|(3 tgreSQL元组#begin; #begin; # # from customer # UPDATE #select * |+|+|+tgreSQL元组#begin; #begin; # # from customer # UPDATE #select * |+|+|+|+|+|+|t|(6 tgreSQL四级别的实级别:ReadCommitted, SnapshottgreSQL四级别的实级别:ReadCommitted, SnapshotSerializableSnapshotIsolationtgreSQL中Re

13、peatableRead级别实际为SnapshotIsolation ReadCommitted级别和SnapshotIsolation级别,实现的区别在于取快照的时机: 每个SQLv.s. 事务启动时。SerializableSnapshotIsolation在SnapshotIsolationReadSnapshottgreSQLRedotgreSQL,RedologfilesareusedIncrementaltgreSQLRedotgreSQL,RedologfilesareusedIncrementalBackupandimeEverychangemadetothedatabasei

14、swrittentothelogscontainahistoryofallchangesmadetothetgreSQL,RedologsobeytheWriteAheadLogEachdatapage(eitherheaporindex)ismarkedwiththeLSN (logsequencenumberinpractice,aWALfilelocation)ofthe latest XLOG record affecting the page.Beforethebufmgrcanwriteoutadirtypage,itmusttxloghasbeenflushedtoeastupt

15、othepagesTheredologbufferisflushedtotheredologfilewhenCOMMITisHeader Info : crc, RM_HEAP_ID, Xid,len, Data:Header Info : crc, RM_HEAP_ID, Xid,len, Data:Header Info : crc, RM_HEAP_ID, Xid,len, Data:,c0:AUS c1: 104c2:Header Info : crc, RM_HEAP_ID,Xid,len, Data:tupleid,infobits, c0: AUSc1:c2:DELETE FRO

16、M score WHEREteam=AUS;runs=wickets=WHEREteam=O score (team,runs,wickets) AlgorithmForWALPinandtakeExclusive-lockonbuffercontainingtheAlgorithmForWALPinandtakeExclusive-lockonbuffercontainingthedatapagetobe StartthecriticalsectionwhichtanyerroroccurtillEndcriticalsectionshouldbeaPANICasbuffersmightco

17、ntainApplychangestoMarkthebufferasdirtywhichensuresbgwriter)willflushpageandmarkingbufferdirtybeforewritinglogrecordensurescontentionforcontentlatchofBuildarecordtobeionlogUpdatethePagewithLSNwhichwillbeusedbybgwriteroroperationofpagetoEndCriticaltcorrespondinglogisflushedfromUnlockandheAlgorithmfor

18、ReadcontrolfiletoAlgorithmforReadcontrolfiletofindthelocationoftheGetthelastvalidrecordtofindthestartingReadWALrecordsfromlogApplyeveryrecordafterexceptthepagelsnisnthelsnoftherecorduntilallWALrecordsinCalculatethelastestxid,oidandlsn Start the system总结性能,SQL92总结性能,SQL92, tgreSQL的并发控制技术:MVCC + 2PLtg

19、reSQL的故障恢复技术:REDO+ WALACIDA?C?I? ACIDA?C?I? RDMA,Fabric, 展望2:相关的技术样的变化展望2:相关的技术样的变化一致性模型的变化 ACID, 并发控制技术的变化级别SnapshotIsolation,并发控制技术:2PLMVCC日志技术的变化 多核,NVRAM几个新的TP系统Hekaton, Spanner, BnC,Haderle D,LindsayB,etal. ARIES:aionrecoverysupportingnC,Haderle D,LindsayB,etal. ARIES:aionrecoverysupportingfine

20、-granularitylockingandpartialrollbacksusingwrite-logging.ACMionsonDatabaseSystems(TODS),1992,17(1):94-BernsteinPA,GoodmanN.Concurrencycontrolindistributedsystems.ACMComputingSurveys(CSUR),1981,13(2):185-BerensonH,BernsteinP,GrayJ,etal.AcritiqueofANSISQLisolation levels/ACM SIGMOD Record. ACM, 1995, 24(2): 1-10.PortsDRK,GrittnerK.SerializablesnapshotisolationProceedingsoftheVLDBEndowment,2012,5(12): 1850-MomjianB.MVCCunmasked.MomjianB.UnlockingtgresLockManager.TomeLane.ionsingtgreSQL.es. tgreSQLConcurrencyAmitKapila.t

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论