最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

Oracleblockcleanout说明

来源:动视网 责编:小采 时间:2020-11-09 11:58:46
文档

Oracleblockcleanout说明

Oracleblockcleanout说明:oracle有一个modified block list结构,用来记录每个transaction更改过的block,每个transaction大约可以记录10%buffer cache这多 一. Block Cleanout 说明 之前的相关测试参考: Orace ITL(Interested Transaction Li
推荐度:
导读Oracleblockcleanout说明:oracle有一个modified block list结构,用来记录每个transaction更改过的block,每个transaction大约可以记录10%buffer cache这多 一. Block Cleanout 说明 之前的相关测试参考: Orace ITL(Interested Transaction Li


oracle有一个modified block list结构,用来记录每个transaction更改过的block,每个transaction大约可以记录10%buffer cache这多

一. Block Cleanout 说明

之前的相关测试参考:

Orace ITL(Interested Transaction List) 说明

OracleBlock scn/commit scn/cleanout scn 说明

block clean out 是指把一个块中的数据从 dirty 变为 clean,等于告诉后面的人,这个块里面的数据是干净的,可以放心的使用,本质上是更改 block header 中的一个标志位。

当commit 的时候,如果被commit 的数据块还在 data buffer 中也要被cleanout,因为 commit 的时候并不一定修改block header (delay block cleanout) 。

Clean out有2种: fast commitcleanout和delayed blockcleanout:

Oracle有一个modified block list结构,用来记录每个transaction更改过的block,每个transaction大约可以记录10%buffer cache这多的modified block。这部分block就是当发生commit的时候,oracle可以根据modified block list定位到那些块并做fast commit cleanout。

如果一个transaction修改的块超过10%buffer cache,那么超过的块就执行delayed block cleanout。当做fast commit cleanout时,oracle不会清理 Row lockslb标志位,ITL lck标志位。

另一种情况是delayed block cleanout,,当transaction还未commit或rollback时modified block已经被写回磁盘,当发生commit时oracle并不会把block重新读入做cleanout,这样成本太高.而是把cleanout留到下一次对此块的访问(select,update)时完成。

当delayed cleanout时候如果undo segment header的transaction table slot还没有被覆盖,那么可以找回该事务递交的exact scn,如果slot已经被覆盖(ITL被覆盖),那么将会使用undo segment header中的control scn来做为upper bound scn。

当发生fast commit cleanout,系统将transaction提交时刻的scn作为commit scn,更新block上 itl和undo segment header的Transaction table的slot上的 scn,并修改block scn,三者是一致的。

发生delayed block cleanout的时候,之前的transaction commit更新的只是undo segment header Transactiontable 上的slot scn,而并未做block上的更新,等待下次使用此block的时候,更新block scn和itl状态。block scn和itl的更新又分2种情况:

(1)当不产生slot重用的时候, delayedblock cleanout时,根据Transactiontable里面的信息,更新blockscn和itl上的Scn/Fsc为transaction曾经提交时候的scn。
(2)当产生slot重用的时候,更新对应itl上scn为undo segment 上的control scn,而block scn 为delayed block cleanout发生时刻的scn。

文档

Oracleblockcleanout说明

Oracleblockcleanout说明:oracle有一个modified block list结构,用来记录每个transaction更改过的block,每个transaction大约可以记录10%buffer cache这多 一. Block Cleanout 说明 之前的相关测试参考: Orace ITL(Interested Transaction Li
推荐度:
标签: 说明 oracle clean
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top