ITPUB论坛-中国专业的IT技术社区

 找回密码
 注册
查看: 651|回复: 22

[SQL] 大师帮忙解释一下undo block header.

[复制链接]
论坛徽章:
13
2010新春纪念徽章
日期:2010-03-01 11:04:59技术图书徽章
日期:2018-03-01 10:21:49秀才
日期:2018-03-01 10:21:252015年新春福章
日期:2015-03-06 11:58:18喜羊羊
日期:2015-03-04 14:52:46优秀写手
日期:2014-04-22 06:00:18马上有对象
日期:2014-02-18 16:44:082014年新春福章
日期:2014-02-18 16:44:082013年新春福章
日期:2013-02-25 14:51:24ITPUB十周年纪念徽章
日期:2011-11-01 16:25:51
发表于 2018-6-13 02:19 | 显示全部楼层 |阅读模式

有一个query 有时候运行很长时间, (有时候hang 在那里5-6个小时)。dba 说是由于前一个process commit 太多 造成的。(10000 records commit 一次)。 下面是他的解释。在网上查了,没找到关于undo block header 解释。那位帮忙解释一下,undo block header 是如何工作的? 蓝色字体是oracle support 给的解释。

The number of transactions matters because they all share the same undo block header.
One transaction, no matter how long it is and how much data it changes, it only uses one slot of undo header.



Excessive rollbacks can occur showing as rapidly increasing valuesfor the statistic   "transaction tables consistent reads - undo records applied" . This can occur in systems where there is a high transaction ratebut not high concurrency. In this scenario the system may not onlinelots of undo segments leading to undo segment headers wrappingoften. This fix allow SMON to dynamically alter the number of onlineundo segments and keep a minimum of "_rollback_segment_count"segments online at all times. The parameter can be set by the userto ensure there are always a known minimum of undo segmentsonline thus spreading the transactions across more undo headers.


论坛徽章:
496
目光如炬
日期:2015-11-22 22:00:00秀才
日期:2016-01-06 14:10:21秀才
日期:2016-01-06 14:10:21秀才
日期:2016-01-06 14:10:21秀才
日期:2016-01-06 14:10:21秀才
日期:2016-01-06 14:10:21秀才
日期:2016-01-06 14:10:21秀才
日期:2016-01-06 14:10:21探花
日期:2016-01-06 14:11:18进士
日期:2016-01-06 14:11:18
发表于 2018-6-13 04:18 | 显示全部楼层
query挂住的时候等待事件是什么?所谓的“前一个process”,指的是和这个query同一个会话,在查询之前做了多次提交?还是其他会话在你查询期间发生了多次提交?你查询的数据是不是会被其他会话多次修改?如果是的话,一致读就会不停回滚以获取你查询开始时间点的数据映像。但是这也和提交没关系。

使用道具 举报

回复
论坛徽章:
13
2010新春纪念徽章
日期:2010-03-01 11:04:59技术图书徽章
日期:2018-03-01 10:21:49秀才
日期:2018-03-01 10:21:252015年新春福章
日期:2015-03-06 11:58:18喜羊羊
日期:2015-03-04 14:52:46优秀写手
日期:2014-04-22 06:00:18马上有对象
日期:2014-02-18 16:44:082014年新春福章
日期:2014-02-18 16:44:082013年新春福章
日期:2013-02-25 14:51:24ITPUB十周年纪念徽章
日期:2011-11-01 16:25:51
 楼主| 发表于 2018-6-13 11:46 | 显示全部楼层
newkid 发表于 2018-6-12 15:18
query挂住的时候等待事件是什么?所谓的“前一个process”,指的是和这个query同一个会话,在查询之前做了 ...

对不起, 没有说清楚。前一个process是指load 这个表, 每10000个records commit 一次。 在查询这个表之前做了多次提交。这个process完成之后,查询的数据在查询过程中没有被其他会话修改 。 也没有其他的会话查询期这个表。 现在:DBA 要求把commit interval 变成 1,000,000 理由就是上面提到的那个。因为, 他认为,这些transactions 共享同一个 undo block header。 这样会造成“delayed block cleanout" or "undo reading"
另外, transaction tables consistent reads 是什么意思?

使用道具 举报

回复
论坛徽章:
121
现任管理团队成员
日期:2011-05-07 01:45:08
发表于 2018-6-13 16:51 | 显示全部楼层
KEN6503 发表于 2018-6-13 11:46
对不起, 没有说清楚。前一个process是指load 这个表, 每10000个records commit 一次。 在查询这个表之 ...

你发错版块啦,应该发在管理版

使用道具 举报

回复
论坛徽章:
121
现任管理团队成员
日期:2011-05-07 01:45:08
发表于 2018-6-13 17:49 | 显示全部楼层
虽然你发错了版块,但是看到了我也大概说说,我觉得你是不是搞反了????
先说说你提到的几个概念

transaction tables 是 undo 段头的一个空间,他用来用固定格式存储事物使用undo的入口,包括slot uba等,每一个事物都会在在这个table中写入一个条目
如果并发事物高的时候,smon会online多个undo 段,这样就有多个transaction table,不同事物会在多个table中写入条目,什么情况下online多个undo段就由_rollback_segment_count控制

使用道具 举报

回复
论坛徽章:
121
现任管理团队成员
日期:2011-05-07 01:45:08
发表于 2018-6-13 19:12 | 显示全部楼层
下一个概念,延时块清除,一个数据块被修改,就会在块头记录事物的itl ,宕事物提交或者回滚后,要做块清除,清理itl,但是,如果一个事物修改的块很多,超过dbbuffer的10%,后者提交时这个块已经不在buffer中,就不会立即清除itl,而是在下一次访问这个块时再做清除。这就是延时块清除
来自苹果客户端来自客户端

使用道具 举报

回复
论坛徽章:
121
现任管理团队成员
日期:2011-05-07 01:45:08
发表于 2018-6-13 19:14 | 显示全部楼层
无论是立即清除还是延时块清除,都要得到这个事物提交时的scn,而这个scn就记录在undo header 中的transaction table 中。
来自苹果客户端来自客户端

使用道具 举报

回复
论坛徽章:
121
现任管理团队成员
日期:2011-05-07 01:45:08
发表于 2018-6-13 19:17 | 显示全部楼层
知道了这些概念后,你就应该明白,你现在这个现象的解释了,同样插入10w行,你每10行一个事物(提交一次),还是10000行提交一次,所需要记录的事物条目(相差1000倍)
来自苹果客户端来自客户端

使用道具 举报

回复
论坛徽章:
121
现任管理团队成员
日期:2011-05-07 01:45:08
发表于 2018-6-13 19:20 | 显示全部楼层
如果你的插入发生延时块清除,在下一次访问,也就是你查询时,就要访问un do herder来得到事物提交时间,做块清除
来自苹果客户端来自客户端

使用道具 举报

回复
论坛徽章:
121
现任管理团队成员
日期:2011-05-07 01:45:08
发表于 2018-6-13 19:23 | 显示全部楼层
如果你看懂了,我前面说的内容,下面就是重点了!你的描述 查询 hang 住,这个现象,和你的dba给出的方案时不符的,如果你的现象描述没错,你的dba 给出的解决方案就是错误的!

来自苹果客户端来自客户端

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

TOP技术积分榜 社区积分榜 徽章 电子杂志 团队 统计 虎吧 老博客 知识索引树 读书频道 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档 | IT博客
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛 | SAP ERP系统
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 网站律师 隐私政策 知识产权声明
京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表