一、什麼是分割槽表
分割槽表就是按一定規則將一張表分割成多個部分,達到和物理分表同樣的效果,但操作起來更 簡單,不同於物理分表那樣使用時還需要指定使用的資料表。對於使用者來說和操作普通表無差別。
二、優勢與限制
1、優勢
2、限制
三、分割槽型別
1、range分割槽
基於乙個給定連續區間範圍,把資料分配到不同的分割槽;
createtable
r1 (
a int,
b int)
partition
byrange (a) (
partition p0
values less than (5
), partition p1
values
less than (maxvalue)
);
2、list分割槽
類似range分割槽,區別在list分割槽是基於列舉出的值列表分割槽,range是基於給定連續區間範圍分割槽;
createtable
customers_1 (
first_name
varchar(25
), last_name
varchar(25
), street_1
varchar(30
), street_2
varchar(30
), city
varchar(15
), renewal date
)partition
bylist columns(city) (
partition pregion_1
values
in('
xian
', '
chengdu
', '
chongqing
'),
partition pregion_2
values
in('
shijiazhuang
', '
tianjin
', '
beijing
'),
partition pregion_3
values
in('
hangzhou
', '
nanjing')
);
3、hash分割槽
基於使用者定義的表示式返回值來選擇分割槽,該表示式對要插入到表的行中列值操作。
ps:表示式必須返回整型資料。
createtable
employees (
id intnot
null
, fname
varchar(30
), lname
varchar(30
), hired date
notnull
default
'1970-01-01',
separated date
notnull
default
'9999-12-31',
job_code
int,
store_id
int)
partition
by hash(store_id) partitions 4;
4、key分割槽
類似hash分割槽,但是hash分割槽允許使用使用者自定義表示式,而key分割槽不允許,它需要使用 mysql伺服器提供的hash函式,同時hash分割槽只支援整數分割槽,而key分割槽支援除blob和 text型別外其他列;
ps:key分割槽對列資料進行hash運算所以有時候資料分布會非常不均勻。
createtable
k1 (
id intnot
null
primary
key,
name
varchar(20))
partition
bykey() partitions 2;
如果不指定列,mysql會自動使用主鍵或者唯一健所在的列。
MySQL分割槽表
分割槽表是一種粗粒度,簡易的索引策略,適用於大資料的過濾場景.最適合的場景是,沒有合適的索引時,對其中幾個分割槽表進行全表掃瞄.或者只有乙個分割槽表和索引是熱點,而且這個分割槽和索引能夠全部儲存在記憶體中.限制單錶分割槽數不要超過150個,並且注意某些導致無法做分割槽過濾的細節,分割槽表對於單條記錄...
mysql分割槽表
對使用者來說,分割槽表是乙個獨立的邏輯表,但是底層由多個物理子表組成。實現分割槽的 實際上是對一組底層表的控制代碼物件的封裝。mysql在建立表時使用partition by子句定義每個分割槽存放的資料。在執行查詢的時候,優化器會根據分割槽定義過濾那些沒有我們需要資料的分割槽,這樣查詢就無須掃瞄所有...
mysql分割槽表 MySQL分割槽表的正確使用方法
mysql分割槽表概述 我們經常遇到一張表裡面儲存了上億甚至過十億的記錄,這些表裡面儲存了大量的歷史記錄。對於這些歷史資料的清理是乙個非常頭疼事情,由於所有的資料都乙個普通的表裡。所以只能是啟用乙個或多個帶where條件的delete語句去刪除 一般where條件是時間 這對資料庫的造成了很大壓力。...