對分割槽表的一些總結

2022-05-25 04:51:09 字數 1582 閱讀 6120

分割槽表分為:

範圍分割槽(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.分割槽表可以建立聯合主鍵,也可以不用主鍵,指定兩個列...