第 14 章 分區
14.1 分區的使用
增加可用性
減輕維護負擔
提高DML與查詢的性能
14.2 分區如何工作
表分區策略
索引分區
本地索引
分為本地前綴索引(Local Prefixed Index)、本地非前綴索引(Local Non-prefixed Index)
1. 索引的選擇
在單表查詢中,本地非前綴索引可能增加可用性,也更加實用。例如表T(a, b)按a區間分區,若在b上建立本地索引,則當某個分區離線,僅查詢b的某個值時,該索引可用,而索引(a, b)不可用;刪除索引(a, b),查詢(a, b)的某對值,b上的索引仍可用。此時若建立索引(b, a),則可應對各類查詢。
在多表關聯(如上例中按照(a, b)值關聯)時,系統將發現代價較高而不會用到本地非前綴索引(如上例中(b, a))。
因此建立本地索引時應當考慮通常的使用環境。
2. 無法基於本地非前綴索引建立唯一鍵或主鍵。
全局索引
僅有一種,即全局前綴索引
1. 數據倉庫環境
在(與建立好相應索引的表)交換分區與索引或分割分區後,全局索引將失效而必須重建,因此全局索引並不適合數據倉庫。
例如:
ALTER TABLE partitioned
EXCHANGE PARTITION fy_1999
WITH TABLE fy_1999
INCLUDING INDEXES
WITHOUT VALIDATION;
ALTER TABLE partitioned
SPLIT PARTITION the_rest
AT (TO_DATE(‘200101’, ‘yyyymm’))
INTO (PARTITION fy_2000, PARTITION the_rest);
2. OLTP環境
一定程度上增加了可用性。當某些分區離線,不含有用於分區的列且合乎查詢條件的數據存在於在線分區的索引仍然是可用的,對於不需要查詢全表而是通過索引即可得到結果的查詢也是有效的(例如COUNT非用於分區的列等)。