存儲和索引:算法
oracle中,一個數據庫是由存儲在文件中的信息組成的,而且經過一個實例來訪問數據庫
它是一個共享存儲區和一組與文件中的數據交互的進程安全
控制文件是一個小文件,包含一些啓動或操做實例所需的很是高層的元數據數據結構
表空間:oracle
數據庫由一個或多個稱做表空間的邏輯存儲單元組成的函數
表空間又由一個或多個稱做數據文件的物理結構組成,數據文件多是文件系統的一部分,或是原始的設備性能
一個oracle數據庫一般包括如下表空間:大數據
1 系統表空間和輔助的sysaux表空間老是被建立,包含數據字典表、觸發器和存儲過程的存儲器優化
2 建立的存儲用戶數據的表空間,雖然用戶數據能夠存儲在系統表空間,但將用戶數據與系統數據分離通常是值得的加密
決定要建立另外哪些表空間是基於性能、可用性、可維護性以及易於管理來考慮的
3 撤銷表空間:僅僅用於存放事務管理和恢復的撤銷信息
4 臨時表空間:許多數據庫操做須要對數據進行排序,若是排序不能再內存中完成,排序例程可能須要將數據暫時保存在硬盤上
表空間也能夠做爲在數據庫之間轉移數據的一種方式,
oracle經過簡單地複製數據文件並導入和導出少許的數據字典元數據,就容許一個表空間中的全部數據從一個系統轉移到另外一個系統
oracle稱爲可移動表空間
段:
表空間中的空間被劃分爲一個個單元,稱爲段。每一個段包含一種特定數據結構的數據:
1 數據段:表空間中的每一個表都有本身的數據段,表數據就存儲在這裏
2 索引段:
3 臨時段:當排序操做須要將數據寫到硬盤上時,或者將數據插入到臨時表中
4 撤銷段:這些段包含了撤銷信息,使未提交事務能夠回滾
在段這一層下,空間已盤區的粒度級別進行分配,每一個盤區由一組連續的數據庫塊組成
數據庫塊是oracle進行磁盤I/O的最低的粒度級別。數據庫塊地大小沒必要和操做系統中的塊相同,但必須是它的倍數
表:
oracle中的標準表以堆組織(通常爲二叉樹)的,表中行的存儲位置不是由該行所包含的值決定的,而是在行被插入時肯定的
按索引組織的表:
在一個按索引組織的表中,記錄存儲在oracle的B樹索引中,而不是堆中
壓縮:
oracle的壓縮特性容許數據以壓縮格式存儲,壓縮極大地下降了存儲數據所需的空間和檢索數據所需的I/O操做數。
oracle的壓縮方法是一種無損的、基於字典的算法,它單獨地壓縮每一個塊
全部用來解壓一個塊地信息就包含在那個塊自身中
算法把在塊中重複出現的值替換爲指向塊中符號表(或字典)中該值所對應項的指針
項能夠基於單獨地列或者列的組合中重複的值
數據安全:
1 加密
2 數據庫保險庫
3 虛擬私人數據庫
索引:
位圖索引:
位圖索引使用位圖表示索引項,當被索引的列有適中數量的不一樣值的時候,這種表示能夠實質性地節省空間
字節對齊位圖壓縮:兩個連續的1之間的距離足夠小的部分存儲爲逐字位圖,距離大的話,存儲爲0的個數
根據經驗,若是不一樣碼值數目少於表中行數的一半,位圖索引應該比常規B樹索引空間利用率更高
例如,在一個具備100萬行的表中,若是少於50萬個不一樣取值的列上建立的是位圖索引,可能更節省空間
對於取不多的、不一樣值的列,這樣的索引的空間優點能以更少的磁盤I/O帶來相應的性能優點
基於函數的索引:
能夠在包含一個或多個列的表達式上建立索引,例子:在表達式upper(name)上建立索引
鏈接索引:
索引中行標識所指向的關鍵字列並不在表中。
域索引:
oracle容許非oracle原生的索引結構對錶進行索引,
這種擴展特性容許軟件廠商爲特定應用領域。如文本、空間數據和圖像,開發插卡式的功能
劃分:
oracle支持多種對錶和索引的水平劃分方式,而且這種特性在oracle支持特大數據庫的能力中發揮着重要做用
優勢:
1 備份和恢復更容易也更快速,由於能夠對單獨的分區進行而不是對整個表進行
2 數據倉庫環境下的加載操做不那麼生硬,數據能夠添加到新建立的分區,而後把分區添加到表中
3 查詢性能得到實質性受益
被劃分的表上的索引能夠是全局索引,或者是局部索引。
全局索引中的項能夠指向任何分區中的行,局部索引的表對每一個劃分有一個物理索引
範圍劃分:
在範圍劃分中,劃分標準是值的範圍,此劃分類型特別適合於日期列
散列劃分:
散列函數根據劃分列中的值把行映射到分區中
列表劃分:
與特定分區相關的值在一個列表中聲明
複合劃分:
被範圍、區間或列表劃分的表能夠進行範圍、列表或者散列子劃分
參照劃分:
劃分關鍵字是基於另外一個表的外鍵約束來定的
物化視圖
查詢處理和優化:
執行方法:
數據能夠經過多種訪問方法來訪問:
1 全表掃描:
2 索引掃描
3 索引快速掃描
4 索引鏈接
5 簇和散列簇訪問
oracle有幾種方法把來自多個索引的信息合併在單個訪問路徑裏,
這種能力容許多個where字句條件一塊兒使用來儘量有效地計算出結果集
優化:
查詢轉換:
oracle支持的轉換和重寫的一些主要類型以下:
1 視圖合併
2 複雜視圖合併
3 子查詢整平
4 物化視圖重寫
5 星型轉換
訪問路徑選擇:
oracle有一個基於代價的優化器來決定鏈接順序、鏈接方法以及訪問路徑