• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • Oracle中的Low HWM與 High HWM 高水位

    發表于:2013-10-14來源:IT博客大學習作者:Maclean Liu點擊數: 標簽: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。

    原文轉自:http://blogread.cn/it/article/6695

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>