一個完整的Oracle建表的例子
阿新 • • 發佈:2019-02-15
控制併發性引數:
INITRANS和MAXTRANS指定初始的和最大的事務位置數,這些事務位置在索引塊或者資料塊內建立。事務位置用來儲存在某一事件點上正在對塊進行更改的事務的資訊。一個事務只佔用一個事務位置,即使它正在更改多行或者多個索引條目。 INITRANS對資料段的預設值為1,對索引段的預設值為2,以保證最低程度的併發。例如,如果INITRANS設為3,則保證至少3個事務可以同時對塊進行更改。如果需要,也可以從塊空閒空間內分配其它事務位置,以允許更多的事務併發修改塊內的行。
MAXTRANS的預設值為255,它設定可更改資料塊或者索引塊的併發事務數的限制。設定後,該值限制事務位置對空間的使用,從而保證塊內有足夠的空間供行或者索引資料使用。
控制資料空間使用的引數:
資料段的PCTFREE指定每個資料塊中保留空間的百分比,用於因更新塊內的行而導致的增長。PCTFREE的預設值為10%。 資料段的PCTUSED代表Oracle伺服器試圖為表內的每個資料塊維持的已用空間的最低百分比。如果一個塊的已用空間低於PCTUSED,則將這塊放回到空閒列表中。段的空閒列表示容納將來所插入內容的可選擇塊的列表。根據預設,每個段在建立時都有一個空閒列表。PCTUSED的預設值為40%。
PCTFREE和PCTUSED都按可用資料空間百分比來計算,可用資料空間是從整個塊大小減去塊頭空間後剩餘的塊空間。 塊空間使用引數只能針對段指定,而不能在表空間級別設定。
下面步驟介紹對PCTFREE=20且PCTUSED=40的資料段如何管理塊內空間:
1.向塊中插入行,直到塊內的空閒空間小等於20%。當行所佔用的塊內資料空間達到80%(100-PCTFREE)或者更多後,即無法再向該塊進行插入。
2.剩餘的20%可在行大小增長時使用。例如,更新初始為NULL的列並分配一個值。這樣,由於更新,塊使用率可能超過80%。
3.如果由於更新,刪除了塊內的行或者行大小減少,塊使用率可能跌至80%以下。但是,仍然無法向塊中插入,直到塊使用率跌至PCTUSED以下,在本例中PCTUSED為40%。
4.當塊使用率跌至PCTUSED以下後,該塊可用於插入。隨著向塊內插入行,塊使用率增長,重複從步驟1開始的迴圈。
from http://www.2cto.com/database/201304/202052.html