一、如何管理range和list分割槽
以該分割槽表為例
create table 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. 刪除分割槽
alter table members drop partition p1;
注意:如果刪掉了某分割槽,則該分區內的資料將全部丟失,不僅如此,在用show create table members\g;命令檢視該錶的建立語句時將無法看到被刪除分割槽的任何資訊。
對於range分割槽來說,如果刪除了p1分割槽,在插入資料時,如果日期在1970到1980區間之內,則該資料將會被分配到下乙個分割槽,即p2,。
對於list分割槽,如果刪除了某一分割槽,在插入資料時,如果資料屬於這一分割槽,則插入會報錯。
如果只是刪除資料而不刪除該分割槽的資訊,可使用truncate命令
alter table members truncate partition p1;
2. 新增分割槽
alter table members add partition (partition p3 values less than (2000));
注意:使用add命令來新增分割槽,只能在分割槽列表的末尾新增,具體到本例中,只能新增到2023年以後。
當然,在實際生產環境中,這樣的侷限性太大,譬如我想將p0分割槽之前新增乙個分割槽,區間為1960,或者將p1之間再新增乙個1975的分割槽,這時候,用add將無法滿足此類需求,可使用alter table ... reorganize partition命令。
譬如:alter table members reorganize partition p0 into (
partition s0 values less than (1960),
partition s1 values less than (1970)
reorganize命令其實是相當靈活的,不僅能拆分分割槽,還可以用來合併分割槽,譬如:
alter table 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 ....語句,譬如:
alter table members
partition by hash( year(dob) )
partitions 8;
2> reorganize partition語法如下:
alter table tbl_name
reorganize partition partition_list
into (partition_definitions);
partition_definitions中分割槽的範圍必須要涵蓋partition_list中的分割槽範圍。
二、如何管理hash和key分割槽
以該分割槽表為例
create table 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分割槽。
事實上,它只支援一種型別的「分割槽調整」。
alter table clients coalesce partition 4;
該命令的作用在於將clients表的分割槽剪裁4個,從12個剪裁到8個。
alter table clients add partition partitions 6;
同樣,該命令為clients表增加了6個分割槽,從12個到18個。
MySQL分割槽管理
檢視你的mysql是否支援表分割槽 show variables like partition 分割槽型別 range分割槽 list分割槽 column分割槽 hash分割槽 key分割槽 range分割槽 range分割槽基於屬於乙個給定的 連續區間 的列值進行分配 create table e...
mysql分割槽管理 hash分割槽
hash分割槽的目的是將資料按照某列進行hash計算後更加均勻的分散到各個分割槽,相比,range和list分割槽來說,hash分割槽不需要明確指定乙個給定的列值或者列值集合 應該在儲存在哪個分割槽,mysql會自動按照hash計算後完成這些工作,我們只需要基於將要進行hash的列值指定乙個列或者表...
mysql 分表分割槽
一 分表 1 垂直分割 就是將乙個表按照欄位來分,每張表保證有相同的主鍵就好。一般來說,將常用字段和大字段分表來放。優勢 比沒有分表來說,提高了查詢速度,降低了查詢結果所用記憶體 劣勢 沒有解決大量記錄的問題,對於單錶來說隨著記錄增多,效能還是下降很快 2 水平分割 水平分割是企業最常用到的,水平拆...