MVCC-(Oracle--Innodb--Postgres)PPT课件_第1页
MVCC-(Oracle--Innodb--Postgres)PPT课件_第2页
MVCC-(Oracle--Innodb--Postgres)PPT课件_第3页
MVCC-(Oracle--Innodb--Postgres)PPT课件_第4页
MVCC-(Oracle--Innodb--Postgres)PPT课件_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

MVCC(Oracle/Innodb/PG),网易杭研院何登成,1,.,Outline,MVCC介绍MVCC实现OracleInnoDBPostgreSQL总结,2,.,MVCC简介,何谓MVCC多版本并发控制(MultiVersionConcurrencyControl)MVCC的优势高并发读写不相互阻塞(读可见版本)不同数据库的可见版本定义?低加锁开销读不加锁OLTP应用,8(read)/2(write)支持MVCC数据库现阶段几乎所有主流数据库Oracle,DB2(since9.7),SQLServer(since2005),MysqlInnodb,Postgres,3,.,MVCC实现,实现方式基于时间戳Oracle基于事务IDInnodb,Postgres实现粒度页面级多版本Oracle行级多版本Innodb,Postgres,4,.,ORACLEMVCC,关键词基于时间戳(SCN)页面级多版本回滚段SCN(SystemChangeNumber)数据库逻辑时间戳,只增加,不减小事务commit,产生新的SCNSCN格式:0 xFFFF.FFFFFFFSCN与系统时间可以相互转换Selectscn_to_timestamp(1999999)fromdual;Selecttimestamp_to_scn(sysdate)fromdual;,5,.,OracleMVCC,页面级多版本回滚段(rollbacksegment)修改记录,记录的前镜像(undo)写入回滚段记录的旧版本,通过读取回滚段,获得undo,回滚获得页面级SCN页头结构中,当前页面最新提交事务的SCN(非确切说法)延时块清除(DeferredBlockCleanout)RowLevelSCN?页面级Undo将页面回滚到可见版本(非记录),6,.,OracleMVCC,可见性判断给定查询SCN,回滚页面获得可见CRBlock(ConsistentRead:一致读)CRBlock的SCN小于查询SCNCRBlock上无活跃事务,7,.,OracleMVCC,页面结构,8,.,OracleMVCC,DataBlock(cachelayer)Datablock的第一部分,20bytes构成rdba(relativedatablockaddress)4bytes;前10bits:fileid;后22bits:blockid已知fileId,blockiddumpblockscn标识block最新提交事务scn延时块清除?seq1byte;同一scn下做的多次页面修改,9,.,OracleMVCC,DataBlock(transactionlayer)Fixed部分ITL数量(页面并发事务数)INITRANS;MAXTRANS空闲页锁Freelist指针CSC:cleanoutscnVariable部分ITLs(InterestedTransactionList)啊,10,.,OracleMVCC,DataBlock(Datalayer)Tabledirectory聚簇表(cluster)?作用?Rowdirectory行目录Rowdata行数据,11,.,OracleMVCC,RowFormattl:totallengthfb:flagbyte行类型KCHDFLPNlb:lockbyteITLnumbercc:columncountNULL?,12,.,OracleMVCC,加锁/锁等待,13,.,OracleMVCC,回滚段缺点页面级别多版本,访问冲突著名的ora-01555!大表的全表扫描处理:并行查询select/*+parallel(t18)*/*fromhuge_tablet1;,17,.,InnodbMVCC,关键词基于事务ID行级多版本回滚段事务ID唯一标识一个事务递增产生新事务,对应更大的事务ID64位,8bytes,18,.,InnodbMVCC,MVCC扩展结构聚簇索引(主键索引)记录扩展(系统列)DB_TRX_IDROLLBACK_PTRDelete_Bit二级索引(辅助索引)记录扩展Delete_Bit页面扩展DB_MAX_ID作用?Indexonlyscan,19,.,InnodbMVCC,更新处理Delete聚簇索引设置Delete_Bit位,前项写入回滚段前项包括:系统列,二级索引属性列二级索引设置Delete_Bit位Update聚簇索引原地更新,前项写入回滚段二级索引clone&update,原项设置Delete_Bit(不物理删除),20,.,InnodbMVCC,可见性判断原理给定事务Tx,所有在事务Tx开始时已经提交的事务做的更新是可见的(snapshotread)ReadView每个事务,都有read_view结构,通过此判断可见性low_limit_id:事务id=的所做的修改,均不可见up_limit_id:事务id索引记录-记录指针回收方法页面级:页面访问时回收表级/系统级:autovacuum;vacuumcmd,31,.,PostgresMVCC,分析优势实现简单(Postgres原来不支持多版本)过期版本页内存储,无需rollback获取不足空间消耗:

温馨提示

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

评论

0/150

提交评论