欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Oracle表的分類以及相關參數(shù)的詳解

 更新時間:2013年05月31日 09:29:31   作者:  
本篇文章是對Oracle中表的分類以及相關參數(shù)進行了詳細的分析介紹,需要的朋友參考下
oracle中有如下幾種類型的表:
1、堆組織表(heap organized tables):
常用的表類型,以堆的方式管理,當增加數(shù)據(jù)時,將使用段中第一個適合數(shù)據(jù)大小的空閑空間;當刪除數(shù)據(jù)時,留下的空間允許以后的DML操作重用。
2、索引組織表:表存儲在索引結構中,利用行本身排序存儲。在堆中,數(shù)據(jù)可能被填到任何適合的地方,在索引組織表中,根據(jù)主關鍵字,以排序順序來存儲數(shù)據(jù)。
3、聚簇表:幾張表物理存儲在一塊,通常是同一個數(shù)據(jù)塊上。包含相同聚簇碼值的所有數(shù)據(jù)在物理上存儲在一起,數(shù)據(jù)"聚集"在聚簇碼周圍,聚簇碼用B*Tree索引構建。
4、散列聚簇表:和聚簇表相似,但是不是用B*Tree索引聚簇碼定位數(shù)據(jù),散列聚簇把碼散列到簇中,來到達數(shù)據(jù)所在的數(shù)據(jù)庫塊。在散列聚簇中,數(shù)據(jù)就是索引(比喻的說法)。這適合用于經(jīng)常通過碼等式來讀取的數(shù)據(jù)。
5、嵌套表:OOP擴展的一部分,由系統(tǒng)產(chǎn)生,以父子關系維持子表。
6、臨時表:存儲事務或會話中的臨時數(shù)據(jù),用以中間結果的計算,分配臨時段做為存儲區(qū)域。
7、對象表:根據(jù)對象類型創(chuàng)建,有特殊屬性并且和非對象表不關聯(lián)。
一張表最多有1000列;理論上一張表有無限多行;能有和列的排列一樣多的索引,且一次能夠使用32個;擁有表的數(shù)量沒有限制。
表的相關參數(shù)及術語
1)高水位標記
高水位標記開始在新創(chuàng)建的表的第一個塊上。隨著數(shù)據(jù)不斷放到表中,使用了更多的塊,從而高水標記上升。如果刪除一些表中的行,高水標記仍不下移。即count(*)100000行和delete全部行后count(*)所需時間一樣(全掃描情況下)。需要對表進行重建。
2)自由列表(freelist)
在oracle中用來跟蹤高水標記以下有空閑空間的塊對象。每個對象至少有一個freelist和它相關。當塊被使用時,oracle將根據(jù)需要放置或取走freelist。只有一個對象在高水位標記以下的塊才能在freelist上發(fā)現(xiàn)。保留在高水標記以上的塊,只有freelist為空時才能被用到。此時oracle提高高水標記并把這些塊增加到freelist中。用這種方式,oracle對一個對象推遲提高高水標記,直到必須時才提高。一個對象可能不只有一個freelist,如果預料會有許多并行用戶對一個對象進行大量的insert或update,配置多個freelist能夠提高整體性能(可能的代價就是增加存儲空間)。
3)pctfree和pctused
如果pctfree設置為10,那么塊在用完90%以前,都會使用freelist(都位于freelist中)。一旦達到90%,將從freelist中移除,直到塊上空閑空間超過60%以后再使用(再次進入freelist中,當pctuser為40時)。
A.當pctfree設置過小,而經(jīng)常更新時,容易出現(xiàn)行遷移
B.高pctfree,低pctused---用于插入許多將要更新的數(shù)據(jù),并且更新經(jīng)常會增加行的大小,這樣插入后在塊上保留了許多空間(高pctfree),在塊返回到自由列表之前,塊必須幾乎是空的(低pctused)
C.低pctfree,高pctused---用于傾向于對表只使用insert或delete,或者如果要update,update也只是會使行變小。
4)initial,next和pctincrease
例如使用一個initial盤區(qū)為1MB,next盤區(qū)為2MB,pctincrease為50,可得到盤區(qū)應該是:(1)1mb(2)2mb(2)3mb(2的150)(4)4.5mb(3的150%)。一般認為這些參數(shù)是過時的,數(shù)據(jù)庫應該使用局部管理并且盤區(qū)大小一致的表空間。在這種方式下,initial盤區(qū)總是等于next盤區(qū)的大小,并且不必使用pctincrease,使用pctincrease只會導致表空間產(chǎn)生碎片。在沒用局部管理表空間的情況下,建議總是設置initial=next和pctincrease等于zero,這樣可以模擬局部管理表空間的使用,為了避免碎片,所有在表空間中的對象應該使用相同盤區(qū)的分配策略。
5)minextents和maxextents
設置控制對象對它自己分配的盤區(qū)數(shù)。minextents為初始分配盤區(qū)個數(shù)。
6)logging和nologging
nologging允許對這些對象執(zhí)行某些操作時不產(chǎn)生重做。它只影響一些特定的操作,例如開始創(chuàng)建對象或者使用sqlldr進行直接路徑裝載或者insert /*+ append */ select類型的語句。
7)initrans和maxtrans
對象中的每一塊都有一個塊頭,塊頭的一部分是事務表,事務表中的條目描述哪一個事務塊上的行/元素被鎖定了。事務表的最初大小由對象的initrans設置確定,對于表,默認為1(索引默認為2),當需要時,事務表可以動態(tài)地增加,大小最多到maxtrans(假定在快上有足夠的空閑空間),每一個分配的事務條目在塊頭上占用23字節(jié)的存儲空間。

相關文章

最新評論