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%以后再使用(再次進入freelist中,當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,可得到盤區應該是:(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表的分類以及相關參數的詳解
2019-11-25 16:40Oracle教程網 Oracle
本篇文章是對Oracle中表的分類以及相關參數進行了詳細的分析介紹,需要的朋友參考下
延伸 · 閱讀
- 2022-03-09Python垃圾郵件的邏輯回歸分類示例詳解
- 2022-03-07Oracle Linux 能否成為企業級 CentOS 的替代品?
- 2022-03-05Oracle VM VirtualBox 虛擬機硬盤擴容
- 2022-03-03Android仿京東分類效果
- 2022-02-28oracle刪除超過N天數據腳本的方法
- 2022-02-25oracle重置序列從0開始遞增1
- Oracle
關于SQL執行計劃錯誤導致臨時表空間不足的問題
故障現象:臨時表空間不足的問題已經報錯過3次,客戶也煩了,前兩次都是同事添加5G的數據文件,目前已經達到40G,占用臨時表空間主要是distinct 和gro...
- Oracle
Oracle 12c Release 2 RAC 安裝 Oracle Linux 7
一、概述 本文主要闡述基于ASM 構建 Oracle 12c RAC數據庫的過程說明 1、系統版本要求 確保 Oracle Linux 版本為 6 或更高版本。 確保兩個節點的 Oracle Linux 內核版...
- Oracle
詳解Oracle自定義異常示例
這篇文章主要介紹了詳解Oracle自定義異常示例的相關資料,需要的朋友可以參考下 ...
- Oracle
深入ORACLE遷移到MYSQL的總結分析
本篇文章是對ORACLE遷移到MYSQL進行了詳細的總結與分析,需要的朋友參考下 ...
- Oracle
Oracle連接配置解讀
這篇文章主要介紹了Oracle連接配置解讀,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編...
- Oracle
Oracle中簡單查詢、限定查詢、數據排序SQL語句范例和詳細注解
這篇文章主要介紹了Oracle中簡單查詢、限定查詢、數據排序SQL語句范例和詳細注解,對查詢語法一并做了介紹,需要的朋友可以參考下 ...
- Oracle
Oracle中的SUM用法講解
今天小編就為大家分享一篇關于Oracle中的SUM用法講解,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...
- Oracle
關于Oracle多表連接,提高效率,性能優化操作
這篇文章主要介紹了關于Oracle多表連接,提高效率,性能優化操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧...