一、如何管理range和list分割槽
以該分割槽表為例
createtable
members (
id int,
fname
varchar(25
), lname
varchar(25
), dob date
)partition
by range( year
(dob) ) (
partition p0
values less than (1970
), partition p1
values less than (1980
), partition p2
values less than (1990
));
1. 刪除分割槽
altertable members drop partition p1;
注意:如果刪掉了某分割槽,則該分區內的資料將全部丟失,不僅如此,在用show create table members\g;命令檢視該錶的建立語句時將無法看到被刪除分割槽的任何資訊。
對於range分割槽來說,如果刪除了p1分割槽,在插入資料時,如果日期在1970到1980區間之內,則該資料將會被分配到下乙個分割槽,即p2,。
對於list分割槽,如果刪除了某一分割槽,在插入資料時,如果資料屬於這一分割槽,則插入會報錯。
如果只是刪除資料而不刪除該分割槽的資訊,可使用truncate命令
altertable members truncate partition p1;
2. 新增分割槽
altertable members add partition (partition p3 values less than (2000));
注意:使用add命令來新增分割槽,只能在分割槽列表的末尾新增,具體到本例中,只能新增到2023年以後。
當然,在實際生產環境中,這樣的侷限性太大,譬如我想將p0分割槽之前新增乙個分割槽,區間為1960,或者將p1之間再新增乙個1975的分割槽,這時候,用add將無法滿足此類需求,可使用alter table ... reorganize partition命令。
譬如:
altertable members reorganize partition p0 into
( partition s0
values less than (1960
), partition s1
values less than (1970
));
reorganize命令其實是相當靈活的,不僅能拆分分割槽,還可以用來合併分割槽,譬如:
altertable members reorganize partition p0,p1,p2,p3 into
( partition m0
values less than (1980
), partition m1
values less than (2000
));
注意:
1> 不能使用reorganize partition命令修改表的分割槽型別,只能通過alter table ... partition by ....語句,譬如:
altertable
members
partition
by hash( year
(dob) )
partitions
8;
2> reorganize partition語法如下:
altertable
tbl_name
reorganize partition partition_list
into (partition_definitions);
partition_definitions中分割槽的範圍必須要涵蓋partition_list中的分割槽範圍。
二、如何管理hash和key分割槽
以該分割槽表為例
createtable
clients (
id int,
fname
varchar(30
), lname
varchar(30
), signed date
)partition
by hash( month
(signed) )
partitions
12;
對於hash分割槽和key分割槽,並不支援上述range和list分割槽的語法,譬如drop,truncate,reorganize分割槽。
事實上,它只支援一種型別的「分割槽調整」。
altertable clients coalesce partition 4;
該命令的作用在於將clients表的分割槽剪裁4個,從12個剪裁到8個。
altertable clients add partition partitions 6;
同樣,該命令為clients表增加了6個分割槽,從12個到18個。
MySQL分割槽表的管理 1
一 如何管理range和list分割槽 以該分割槽表為例 create table members id int,fname varchar 25 lname varchar 25 dob date partition by range year dob partition p0 values le...
mysql分割槽表 MySQL分割槽表的正確使用方法
mysql分割槽表概述 我們經常遇到一張表裡面儲存了上億甚至過十億的記錄,這些表裡面儲存了大量的歷史記錄。對於這些歷史資料的清理是乙個非常頭疼事情,由於所有的資料都乙個普通的表裡。所以只能是啟用乙個或多個帶where條件的delete語句去刪除 一般where條件是時間 這對資料庫的造成了很大壓力。...
MySQL分割槽表
分割槽表是一種粗粒度,簡易的索引策略,適用於大資料的過濾場景.最適合的場景是,沒有合適的索引時,對其中幾個分割槽表進行全表掃瞄.或者只有乙個分割槽表和索引是熱點,而且這個分割槽和索引能夠全部儲存在記憶體中.限制單錶分割槽數不要超過150個,並且注意某些導致無法做分割槽過濾的細節,分割槽表對於單條記錄...