MySQL分割槽表的管理 1

2022-01-19 18:37:38 字數 2781 閱讀 5538

一、如何管理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分割槽表的管理 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個,並且注意某些導致無法做分割槽過濾的細節,分割槽表對於單條記錄...