Oracle中关于事务槽课件.ppt

  1. 1、本文档共26页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Oracle中关于事务槽课件

Oracle的每个数据块中都有一个或者多个事务槽,每一个对数据块的并发访问事务都会占用一个事务槽。 表和索引的事务槽ini_trans是1、max_trans是255,在oracle10g中,不能修改max_trans这个参数,因为oracle10g忽略了这个参数。;我们来看一下oracle的事务槽的使用情况:;六行数据全部插入到了一个数据块中。 ;另起两个会话,一共三个事务正在访问这个表。;其中两个会话访问一个数据块,一个会话访问一个数据块。;在一个会话将会使用一个新的数据块。;Oracle为了防止itl的争用,采取了一些技术: 1、如果是insert,默认每个表的ini_trans itl是2,尽量保持这个数据块的事务数不超过2,采用在多个数据块中插入的情况。这样将insert分布到多个数据块中,防止了itl的争用。;2、对于update来说,;薄遗闻较湖湾眷邹淆寂坡皇泻颖镶蹄殆函迅守镜翟掏体棒纸沤锗蜕切冒陶Oracle中关于事务槽课件Oracle中关于事务槽课件;我们来分析一下数据块dump的结果:;这个事务在这个块上影响的行数。;锁定标记还没有消除。;Oracle的两种提交方式: 1、快速提交 2、延迟提交 块清除即清除数据块上与“锁定”有关的信息。Oracle的锁机制是一种轻量级的锁定机制,不是通过构建锁列表来进行数据的锁定管理,而是直接将锁作为数据的属性,存储在数据块首部。因此,每次访问数据时都要去看数据块头部的锁,如果数据已经提交,则可能需要清理这个块,换句话说,要将这些事务信息删除。因此这个动作就会生成redo。 事务槽(事务、是否提交、锁定)—事务表(事务、是否提交) ;Cleanout有2种,一种是fast commit cleanout(提交清除),另一种是delayed block cleanout(延迟清除). 提交清除是如何工作的? Oracle会记录已修改的块列表,这些列表可以有20个块,Oracle根据需要分配多个这样的列表,但是如果这些修改的块加起来超过buffer_cache的10%,oracle就停止分配这样的列表,因此当提交时就只会清理最多10%buffer_cache的数据块,其余的部分就延迟清除,这样也是为了提高commit的效率。 还有一种情况,就是当事务还未commit时,修改的数据块已经写入硬盘,当发生commit时oracle并不会把block重新读入做cleanout,而是把cleanout留到下一次对此块的访问是完成。;跟踪块清除:;UBAFIL:回滚段文件号; UBABLK:数据块号; UBASQN:回滚序列号; UBAREC:回滚记录号。 这些数据就对应了数据块中的Uba。 ;declare v_file number; v_block number; begin v_file := dbms_utility.data_block_address_file(to_number(0080213c,xxxxxxxx)); v_block := dbms_utility.data_block_address_block(to_number(0080213c,xxxxxxxx)); dbms_output.put_line(file id: ||v_file); dbms_output.put_line(block id: ||v_block); end; /;;;select id,dbms_rowid.rowid_relative_fno(rowid) file#, dbms_rowid.rowid_block_number(rowid) block# from t12 / ;只有一个current块。 什么时候会产生cr块呢?;另起一个会话,开始一个事务;启动第三个会话,查询;启动第四个会话,再次查询。;连续开启多个会话,但是最终oracle只能开启4个cr块。;Oracle10g中一个新的机制IMU(内存撤销) 传统的撤销机制: 读取回滚段到内存、修改回滚段、使用回滚段记录回滚信息 回滚段的任何修改都会导致日志的产生 回滚段需要被记录到回滚表空间的数据文件中 Oracle有一个单独的pool来支持IMU 因为undo的性能很大程度上影响数据库的性能,因此oracle的这个特性使得数据库的性能得到了很大的提高。

文档评论(0)

dmdt5055 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档