欢迎您访问我爱IT技术网,今天小编为你分享的是oracle数据库教程:【Oracle中的Low HWM与 High HWM 高水位_Oracle_领测软件测试网】,通过学习这些教程,你能够更深层次的掌握Oracle数据库!
Oracle中的Low HWM与 High HWM 高水位_Oracle_领测软件测试网
在MSSM的FREELIST下, 高水位High Water Mark代表所有相关块, 高水位以上就是未格式化unformatted 的数据块,INSRT数据时不能直接使用。当FREELIST中不包含可插入数据块时 HWM默认每次上升5个数据块。
在MSSM的FREELIST下, 高水位High Water Mark代表所有相关块, 高水位以上就是未格式化unformatted 的数据块,INSRT数据时不能直接使用。当FREELIST中不包含可插入数据块时 HWM默认每次上升5个数据块。
对于ASSM管理的BITMAP 数据段而言,Oracle允许在数据段的中部出现unformatted blocks未格式化的数据块, 基于以下的原因:
一、在以前 HWM以下的数据块必然是formatted , 为了维护这一点代价是昂贵的:
长时间持有HW enqueue 队列锁对并发的抑制
过于频繁的持有HW enqueue在Oracle研发看来是罪恶的
上涨HWM 而不格式化 这样的话更有效率,因为格式化往往涉及到 IO,是一种较慢的操作
二、 在直接路径加载过程中,最后的一个extent中的数据块将被全部format 格式化,而如果下一次还是direct load直接路径加载数据的话,它不会从Freelist上获取数据块,而是使用HWM以上新的数据盘区extent。 如果这个数据段是典型的一直在direct load加载数据的话,则可能在freelist上有很多unused block从来不被使用,而被浪费了。 这可能造成空间的浪费,尤其是在Extent size 很大的时候 或者 数据段几乎从来不传统路径插入数据的时候。保留这些数据块为unformatted则可以让加载数据时利用到这些空间空洞
为了实现这一点就需要使用2个High Water Mark 即Low HWM和High HWM; Low HWM以下都是formatted 数据块 而 High HWM以上都是unformatted数据块。
Extent Header:: spare1: 0 spare2: 0 #extents: 18413 #blocks: 147304
last map 0xabc23541 #maps: 36 offset: 2716
Highwater:: 0xabc23f6c ext#: 18412 blk#: 3 ext size: 8
#blocks in seg. hdr's freelists: 0
#blocks below: 147299
mapblk 0xabc23541 offset: 325
Unlocked
--------------------------------------------------------
Low HighWater Mark :
Highwater:: 0xabc23f6c ext#: 18412 blk#: 3 ext size: 8
#blocks in seg. hdr's freelists: 0
#blocks below: 147299
mapblk 0xabc23541 offset: 325
Level 1 BMB for High HWM block: 0xabc23ef9
Level 1 BMB for Low HWM block: 0xabc23ef9
--------------------------------------------------------
Segment Type: 1 nl2: 2 blksz: 8192 fbsz: 0
L2 Array start offset: 0x00001434
First Level 3 BMB: 0x00000000
L2 Hint for inserts: 0xabc0000a
Last Level 1 BMB: 0xabc23ef9
Last Level II BMB: 0xabc1d5fa
Last Level III BMB: 0x00000000
Map Header:: next 0xabc009a1 #extents: 307 obj#: 99039 flag: 0x10000000
Inc # 0
Extent Map
在顺序读取过程中,那些unformatted数据块将被忽略。关于一个数据块究竟是format了还是没有的信息是存放在2个高水位之间的bitmap中。 当扫描数据段的块时,扫描算法并不参考LOW HWM以下的bitmap block; High HWM用来作为顺序读取该数据段时 停止扫描的位置。
格式化数据块一般发生在搜索空间时,如果数据块被发现时unformatted,则格式化一部分数据块(至少16个)。 格式化数据块未必更新Low HWM。
何时更新LOW HWM是一个问题: Low HWM在当前extent和之前的extent中的所有数据块均被格式化的情况下被更新,否则不更新。
来举2个场景: HENO=高水位盘区号, HBNO=高水位数据块号,MyEno=My Extent number; MyBno=My block number. :
如果(HEno==MyEno && MyBno==HBno+1), 例如在同一个extent中格式化下一个范围的block
如果(HEno + 1==MyEno && HBno==HExtentSize &&MyBno==0),例如在前一个extent中所有的数据块均已format 然后要format下一个extent时
对于High HWM而言,如果High HWM以下的数据块不够用,则可能上升High HWM,这个过程需要用到HW Enqueue队列锁。High HWM移动的块数目取决于一级bitmap block控制的块数目,HIGH HWM以下包含了所有的L1 bitmap block。
关于Oracle中的Low HWM与 High HWM 高水位_Oracle_领测软件测试网的用户使用互动如下:
相关问题:oracle9.2如何在不使用truncate语句的情况下将HWM...
答:建一个临时表,truncate前,先备份到临时表里 然后,truncate,执行完毕后,把临时表的数据insert into到正式表中 然后再把临时表truncate掉 这样就满足你的要求了,不过麻烦 不过1000W的数据,你就是insert into也得很长时间了........ >>详细
相关问题:什么是Oracle高水位线
答:所有的oracle段(segments,在此,为了理解方便,建议把segment作为表的一个同义词) 都有一个在段内容纳数据的上限,我们把这个上限称为"high water mark"或HWM。这个HWM是一个标记,用来说明已经有多少没有使用的数据块分配给这个segment。HWM通... >>详细
相关问题:基金中的 high water mark什么意思?
答:基金中的 high water mark意思就基金高水标。 附注: 来源于Huttenlocher先生在2009年第三季度,超过了他所谓的高水位线的投资收益弥补投资者的损失,使基金恢复充电费用投资利润。 >>详细
- 数据库中Oracle索引的优化设计_Oracle_领测软件测
- oracle性能Statspack使用之命中率调整_Oracle_领
- Oracle数据库和JSP连接要注意的一些问题[1]_Oracl
- 软件测试开发技术Oracle数据块损坏及其恢复的总结
- Oracle数据库集中复制方法浅议_Oracle_领测软件测
- ORACLE数据库的统计数据及其生成方式_Oracle_领测
- 软件测试数据库中Oracle数据库认证的三个层次_Ora
- Oracle游标使用大全_Oracle_领测软件测试网
- 程序员需要一本面向对象的实践指南吗?_Oracle_领
- Oracle数据库环境下数据文件丢失的恢复_Oracle_领
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
