Oracle表的分類以及相關引數的詳解

2022-09-24 17:54:11 字數 2299 閱讀 5231

oracle中有如下幾種型別的表:

1、堆組織表(heap organized tables):常用的表型別,以堆的方式管理,當增加資料時,將使用段中第乙個適合資料大小的空閒空間;當刪除資料時,留下的空間允許以後的dml操作重用。

2、索引組織表:表儲存在索引結構中,利用行本身排序儲存。在堆中,資料可能被填到任何適合的地方,在索引組織表中,根據主關鍵字,以排序順序來儲存資料。

3程式設計客棧、聚程式設計客棧簇表:幾張表物理儲存在一塊,通常是同乙個資料塊上。包含相同聚簇碼值的所有資料在物理上儲存在一起,資料"聚集"在聚簇碼周圍,聚簇碼用b*tree索引構建。

4、雜湊聚簇表:和聚簇表相似,但是不是用b*tree索引聚簇碼定位資料,雜湊聚簇把碼雜湊到簇中,來到達資料所在的資料庫塊。在雜湊聚簇中,資料就是索引(比喻的說法)。這適合用於經常通過碼等式來讀取的資料。

5、巢狀表:oop擴充套件的一部分,由系統產生,以父子關係維持子表。

6、臨時表:儲存事務或會話中的臨時資料,用以中間結果的計算,分配臨時段做為儲存區域。

7、物件表:根據物件型別建立,有特殊屬性並且和程式設計客棧非物件表不關聯。

一張表最多有1000列;理論上一張表有無限多行;能有和列的排列一樣多的索引,且一次能夠使用32個;擁有表的數量沒有限制。

表的相關引數及術語

1)高水位標記

高水位標記開始在新建立的表的第乙個塊上。隨著資料不斷放到表中,使用了更多的塊,從而高水標記上公升。如果刪除一些表中的行,高水標記仍不下移。即count(*)100000行和delete全部行後count(*)所需時間一樣(全掃瞄情況下)。需要對錶進行重建。

2)自由列表(freelist)

在oracle中用來跟蹤高水標記以下有空閒空間的塊物件。每個物件至少有乙個freelist和它相關。當塊被使用時,oracle將根據需要放置或取走freelist。只有乙個物件在高水位標記以下的塊才能在freelist上發現。保留在高水標記以上的塊,只有freelist為空時才能被用到。此時oracle提高高水標記並把這些塊增加到freelist中。用這種方式,oracle對乙個物件推遲提高高水標記,直到必須時才提高。乙個物件可能不只有乙個freelist,如果預料會有許多並行使用者對乙個物件進行大量的insert或update,配置多個freelist能夠提高整體效能(可能的代價就是增加儲存空間)。

3)pctfree和pctused

如果pctfree設定為10,那麼塊在用完90%以前,都會使用freelist(都位於freelist中)。一旦達到90%,將從freelist中移除,直到塊上空閒空間超過60%以後再使用(再次進入freelwww.cppcns.comist中,當pctuser為40時)。

a.當pctfree設定過小,而經常更新時,容易出現行遷移

b.高pctfree,低pctused---用於插入許多將要更新的資料,並且更新經常會增加行的大小,這樣插入後在塊上保留了許多空間(高pctfree),在塊返回到自由列表之前,塊必須幾乎是空的(低pctused)

c.低pctfree,高pctused---用於傾向於對錶只使用insert或delete,或者如果要update,update也只是會使行變小。

4)initial,next和pctincrease

例如使用乙個initial盤區為1mb,next盤區為2mb,pctincrease為50,tjgnr可得到盤區應該是:(1)1mb(2)2mb(2)3mb(2的150)(4)4.5mb(3的150%)。一般認為這些引數是過時的,資料庫應該使用區域性管理並且盤區大小一致的表空間。在這種方式下,initial盤區總是等於next盤區的大小,並且不必使用pctincrease,使用pctincrease只會導致表空間產生碎片。在沒用區域性管理表空間的情況下,建議總是設定initial=next和pctincrease等於zero,這樣可以模擬區域性管理表空間的使用,為了避免碎片,所有在表空間中的物件應該使用相同盤區的分配策略。

5)minextents和maxextents

設定控制物件對它自己分配的盤區數。minextents為初始分配盤區個數。

6)logging和nologging

nologging允許對這些物件執行某些操作時不產生重做。它只影響一些特定的操作,例如開始建立物件或者使用sqlldr進行直接路徑裝載或者insert /*+ append */ select型別的語句。

7)initrans和maxtrans

物件中的每一塊都有乙個塊頭,塊頭的一部分是事務表,事務表中的條目描述哪乙個事務塊上的行/元素被鎖定了。事務表的最初大小由物件的initrans設定確定,對於表,預設為1(索引預設為2),當需要時,事務表可以動態地增加,大小最多到maxtrans(假定在快上有足夠的空閒空間),每乙個分配的事務條目在塊頭上占用23位元組的儲存空間。

本文位址:

Oracle 表空間分類

system表空間包含整個資料庫的資料字典表,另外一些程式單元 儲存過程,函式,包,觸發器 也儲存在system表空間中。system表空間主要用於存放oracle系統內部的資料字典,而sysaux表空間則充當system表空間 的輔助表空間,主要用於儲存資料字典以外的其他資料物件,它在一定程度上降...

鎖的分類以及相關講解與synchronized區別

1.鎖的分類 2.深入理解lock介面 lock的使用 lock與synchronized的區別 lock 獲取鎖與釋放鎖的過程,都需要程式設計師手動的控制 lock用的是樂觀鎖方式。所謂樂觀鎖就是,每次不加鎖而是假設沒有衝突而去完成某項操作,如果因為衝突失敗就重試,直到成功為止。樂觀鎖實現的機制就...

oracle 表空間 相關

檢視當前表空間 select from dba tablespaces 檢視剩餘表空間 select tablespace name,file id,block id,bytes 1024 1024,blocks from dba free space 查詢資料檔案名稱 大小和路徑的資訊 selec...