分割槽表分為:
範圍分割槽(partition by range),列表分割槽(partition by list),hash分割槽(partition by hash)
有多少個分割槽就有多少個segment
其實hash分割槽最大的好處在於,將資料根據一定的hash演算法,均勻分布到不同的分割槽中去,避免查詢資料時集中在某個地方
,從而避免熱點塊的競爭,改善io,此處時間列建hash分割槽一般不妥當,因為我們經常都指定具體的時間來完成資料檢索,
或者是指定具體的時間來完成資料清理,對這hash分割槽來說,就不合適了。hash可以精確匹配,無法範圍掃瞄。
分割槽表示有額外開銷的,如果分割槽表數量過多,oracle就需要管理過多的段,在操作分割槽表時也容易引發oracle內部大量的
遞迴呼叫。所以一般只有大表才建議分割槽,記錄數在100萬以下的表,不建議分割槽。
分割槽表的特性:
1.高效的分割槽消除
可以精確的查到所要查到的位置
可以用truncate刪除某個區的資料
2.分割槽交換**移備份)
alter table 分割槽表 exchange partition 分割槽名 with table 中間表
3.分割槽切割
比如:alter table 分割槽表 split partition p_max at (to_date('2013-02-01','yyyy-mm-dd')) into (partition p2003_01,partiton p_max);
①分割槽切割的三個關鍵字split,at和into
②at部分在此處說明了具體的發範圍,小於某個指定的值。
③into部分說明分割槽被切割成兩個分割槽。
4.分割槽合併
比如:alter table 分割槽表 merge partition p2013_02,p_max into partition p_max;
①分割槽合併的關鍵字是merge和into
②merge後面跟著的是需要合併的兩個分割槽名
③into部分為合併的分割槽名,可以是新的分割槽名,也可沿用已經存在的分割槽名
5增加分割槽和刪除分割槽
①分割槽增加add partition,分割槽刪除drop partition
②由於maxvalue分割槽的存在,無法追加新的分割槽,必須刪除了才可以追加
分割槽表的索引
全域性索引:create index 索引名 on range_part_tab(deal_data);
區域性索引:create index 索引名 on range_part_tab(area_code) local;
n/a表示區域性索引
分割槽表的相關陷阱
1.索引為何頻頻失效
通過實驗用alter table range_part_tab truncate partition p1;乙個分割槽可以看到全域性索引失效了,區域性沒有失效。
oracle提供了乙個有用的引數update global indexes,可以有效的避免全域性索引失效。
alter table range_part_tab truncate partition p2 update global indexes;
其中的分割槽轉移,切割。合併。增刪都可以用這個引數防止索引失效。
分割槽表的一些操作
一 建立表空間 create tablespace dinya space01 datafile f user data1.dbf size 50m autoextend on next 50m maxsize 20480m extent management local create tables...
對分割槽表的詳解分析
對分割槽表的分析 硬碟是由多個盤體組成的,盤體又是有無數碟片組成,當然有人會問 不是存在單碟硬碟嗎?沒錯,單碟硬碟是雙面可讀的硬碟,當然也相當於兩個碟片。每個碟片又分為許多磁軌,每個磁軌有63個扇區,扇區是硬碟儲存的基本單位,這是乙個理想化的模型,之所以將硬碟用乙個理想化的模型是為了對硬碟的研究更方...
MySQL分割槽表的一些問題
mysql支援多種分割槽表。我們看到最多的是根據範圍進行分割槽,每個分割槽儲存落在某個範圍的記錄,分割槽表示式可以是列,也可以是包含列的表示式。1.分割槽表不能使用非分割槽的其他單獨的列做主鍵 2.分割槽表新建時要定義好每乙個分割槽的詳細資訊 3.分割槽表可以建立聯合主鍵,也可以不用主鍵,指定兩個列...