• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Oracle事务表实验详解

mysql 搞代码 4年前 (2022-01-09) 19次浏览 已收录 0个评论

回滚段头中,有一项非常重要的信息,就是事务表。对事务表频繁的访问,可能会造成回滚段头的争用。了解什么样的操作会访问事务表,对于了解回滚段头争用的原因非常重要。下面我们来做一些实验来验证一下,什么样的操作才会访问事务表。 首 先简单介绍一个视

回滚段头中,有一项非常重要的信息,就是事务表。对事务表频繁的访问,可能会造成回滚段头的争用。了解什么样的操作会访问事务表,对于了解回滚段头争用的原因非常重要。下面我们来做一些实验来验证一下,什么样的操作才会访问事务表。

首 先简单介绍一个视图,备份x$bh.对这个视图我想大家都有一定的了解,bh即buffer header 的简写。在buffer header中有 一个TCH 列,表示块被访问的次数。我们通过他来验证事务表什么时候被访问。需要注意的是。TCH列每3秒,才会重新计算一次,3秒之内无论访问某一个 块多少次。TCH列只会增加1.

在会话A开启一个事务后:

步骤一:通过v$transaction视图找到XID

SQL> select xidusn,ubablk,ubafil from v$transaction;

XIDUSN UBABLK UBAFIL

———- ———- ———-

本文来源gaodai^.ma#com搞#代!码网


13 97 5

步骤二:通过回滚段编号,可得知事务所占回滚段名,并用此查找事务头块号,文件号

SQL> select header_block,header_file from dba_segments where segment_name=’_SYSSMU13$’;

HEADER_BLOCK HEADER_FILE

———— ———–

41 5

步骤三:查看x$bh视图中,TCH值的增加。

SQL> select addr,tch from x$bh where dbarfil=5 and dbablk=41;

ADDR TCH

——– ———-

080B5208 41

步骤四:查找完TCH后,马上执行要测试的命令(会话B),

SQL> select * from jj_3;

ID NA

———- —

1 aa

2 aa

3 aa

4 aa

5 CN

步骤五:再次查看x$bh视图

SQL> select addr,tch from x$bh where dbarfil=5 and dbablk=41;

ADDR TCH

——– ———-

080B5208 42

注意:步骤三四五应尽快完成。避免oracle的其他内部操作影响测试结果。(因为oracle内部的操作也会造成回滚段头的tch值增加,特别在10G中,这种情况更为明显,不过我没有跟踪是什么oracle的内部操作造成的)

小结:从结果集来看,在另一会话中访问未提交数据的select语句会访问事务表,那么其他的DML操作呢?(希望大家也都试试,我的结果是都会增加TCH值)。上面我的步骤四是全表扫描。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Oracle事务表实验详解
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址