posts - 262,  comments - 221,  trackbacks - 0
          1.Oracle數(shù)據(jù)塊與操作系統(tǒng)數(shù)據(jù)塊

          Oracle數(shù)據(jù)塊和操作系統(tǒng)數(shù)據(jù)塊不同,它通常是操作系統(tǒng)數(shù)據(jù)塊大小的若干倍(最高為5倍)。假如操作系統(tǒng)每次讀寫(xiě)磁盤(pán)的數(shù)據(jù)塊是512K,而Oracle的數(shù)據(jù)塊大小為其2倍,那么數(shù)據(jù)庫(kù)中參數(shù):DB_BLOCK_SIZE = 512 * 2。也就是說(shuō)Oracle每次讀寫(xiě)磁盤(pán)的I/O大小是1M。將每次讀入1M數(shù)據(jù)或?qū)懭?M數(shù)據(jù)。

          2.Oracle數(shù)據(jù)塊格式

          Oracle的數(shù)據(jù)塊中包含了以下信息:

          1.基本信息:塊的地址和數(shù)據(jù)類(lèi)型
          2.表信息:存儲(chǔ)的數(shù)據(jù)是那個(gè)表的
          3.行信息:存儲(chǔ)的是哪些數(shù)據(jù)(可多條)
          4.數(shù)據(jù)區(qū):持久化的信息
          5.空白區(qū):為用于數(shù)據(jù)存儲(chǔ)的空白區(qū)域

          3.Oracle何時(shí)對(duì)數(shù)據(jù)塊碎片進(jìn)行整理

          由于刪除或更新而被釋放出來(lái)的空間可能是不連續(xù)的。Oracle會(huì)在以下兩種情形下對(duì)這些不連續(xù)的空間進(jìn)行歸并:

           ①當(dāng)一個(gè)Insert,update語(yǔ)句試圖使用一個(gè)剩余空間不足的數(shù)據(jù)塊時(shí)。
           ②剩余空間被分散成多個(gè)碎片而無(wú)法連續(xù)利用

          其它情況下Oracle不會(huì)對(duì)數(shù)據(jù)塊的碎片進(jìn)行整理。因?yàn)檫@種對(duì)碎片的整理,歸并工作比起數(shù)據(jù)寫(xiě)入更新可能更加耗時(shí)。

          4.PCTFREE、PCTUSED參數(shù)

          PCTFREE和PCTUSED參數(shù)允許用戶(hù)對(duì)Oracle數(shù)據(jù)塊的空白區(qū)(Free space)進(jìn)行管理。

           ①PCTFREE:保留的可用空白空間大小
           ②PCTUSED:可用的最大數(shù)據(jù)空間

          PCTFREE: 只要剩余空白空間降低到PCTFREE指定的水平,將不允許新記錄插入,而僅允許本記錄更新
          PCTUSED:只要已使用空間達(dá)到PCTUSED指定的水平,將不允許新記錄插入,而僅允許本記錄更新

          這兩個(gè)參數(shù)其實(shí)是兩種不同的控制可用空間說(shuō)法

          5.插入操作與PCTFREE參數(shù)

          PCTFREE僅對(duì)Insert操作有用,但對(duì)Update無(wú)效。也就是說(shuō)當(dāng)空用空間降低到PCTFREE指定的水平時(shí),將不再允許Insert操作,但Update操作可以照常使用剩余空間。

          Oracle為每個(gè)段維護(hù)一或多個(gè)空用鏈表,這些鏈表上的對(duì)象是每一個(gè)未分配的數(shù)據(jù)塊,已經(jīng)分配出去但剩余空間被PCTFREE大的數(shù)據(jù)塊。這些數(shù)據(jù)塊都是可以被用于插入新記錄的。

          假如一個(gè)數(shù)據(jù)塊的剩余空間比PCTFREE指定的要小,但又達(dá)到PCTUSED的水平。那么Oracle將把該數(shù)據(jù)塊從可用鏈表上摘下來(lái),因?yàn)樵摂?shù)據(jù)塊肯定是不能用于再插入新記錄的了(這個(gè)時(shí)候就需要進(jìn)行前面我們提到的數(shù)據(jù)塊碎片整理了)。

          6.刪除、更新操作與PCTUSED參數(shù)

          如果執(zhí)行了一個(gè)Delete或Update語(yǔ)句后,Oracle會(huì)檢查當(dāng)前該數(shù)據(jù)塊的可用空間。判斷其是否比PCTUSED指定的值小,如果是的話將其掛到可用鏈表上作為第一個(gè)可分配空間。

          7.PCTFREE與PCTUSED參數(shù)配合使用

           ①插入操作前檢查數(shù)據(jù)塊的PCTFREE值
           ②刪除或更新操作后檢查數(shù)據(jù)塊的PCTUSED值

          如果PCTFREE值大于指定的水平,或PCTUSED值小于指定的水平則作為可分配空間掛到Free list鏈表上。



          -------------------------------------------------------------
          生活就像打牌,不是要抓一手好牌,而是要盡力打好一手爛牌。
          posted on 2008-12-21 14:58 Paul Lin 閱讀(656) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): Oracle Concept
          <2008年12月>
          30123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          常用鏈接

          留言簿(21)

          隨筆分類(lèi)

          隨筆檔案

          BlogJava熱點(diǎn)博客

          好友博客

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 四子王旗| 海口市| 北碚区| 房产| 明水县| 治多县| 三江| 咸丰县| 车致| 泰和县| 新昌县| 昭平县| 保定市| 余姚市| 滨州市| 循化| 策勒县| 佛学| 正定县| 白山市| 盐城市| 泰和县| 晋中市| 太保市| 江川县| 和田市| 潍坊市| 江都市| 崇信县| 綦江县| 赣榆县| 麻江县| 宁阳县| 鄯善县| 许昌市| 江城| 山东省| 开远市| 北票市| 新安县| 麻城市|