分區(partitioning)最先在Oracle 8.0中引入,這個過程是將一個表或索引物理地分解爲多個更小、更可管理的部分。就訪問數據庫的應用而言,邏輯上講只有一個表或一個索引,但在物理上這個表或索引可能由數十個物理分區組成。每一個分區都是一個獨立的對象,能夠獨自處理,也能夠做爲一個更大對象的一部分進行處理 數據庫
分區只是一個工具,對索引或表進行分區時可能發生3種狀況:使用這些分區表的應用可能運行得更慢;可能運行得更快;有可能沒有任何變化。個人意見是,若是你只是一味地使用分區,而不理解它是如何工做的,也不清楚你的應用如何利用分區,那麼分區很可能只會對性能產生負面影響
分區有利用管理大的表和索引,有以下好處: 併發
提升可用性:不管是oltp仍是倉庫系統 高併發
優化器可以消除分區,這意味着許多用戶可能甚至從未注意到某些數據是不可用的。
出現錯誤時的停機時間會減小,由於恢復所需的工做量大幅減小 工具
減小管理負擔:這是由於與在一個大對象上執行操做相比,在小對象上執行一樣的操做從本質上講更爲容易、速度更快,並且佔用的資源也更少 性能
改善語句性能: 優化
分區最後一個總的(潛在)好處體如今改進語句(SELECT、INSERT、UPDATE、DELETE、MERGE)的性能方面。咱們來看兩類語句,一種是修改信息的語句,另外一種是隻讀取信息的語句 對象
並行dml 索引
查詢性能 資源
分區消除(partition elimination):處理查詢時不考慮某些數據分區。咱們已經看到了一個分區消除的例子。
並行操做(parallel operation):並行全表掃描和並行索引區間掃描就是這種操做的例子 it
分區消除只在大對象全面掃描時纔有用,由於經過分區消除,你能夠避免對對象的很大部分作全面掃描.
能夠用分區來減小競爭,從而提升併發度能夠利用分區將一個表的修改分佈到多個物理分區上。並非只有一個表段和一個索引段