mysql 分割槽管理 mysql分割槽管理

2021-10-17 13:07:22 字數 2240 閱讀 6974

一、如何管理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 水平分割 水平分割是企業最常用到的,水平拆...