mysql 子分割槽的寫法 MySQL 子分割槽

2021-10-19 17:15:25 字數 3204 閱讀 4946

介紹

子分割槽其實是對每個分割槽表的每個分割槽進行再次分隔,目前只有range和list分割槽的表可以再進行子分割槽,子分割槽只能是hash或者key分割槽。子分割槽可以將原本的資料進行再次的分割槽劃分。

一、建立子分割槽

子分割槽由兩種建立方法,一種是不定義每個子分割槽子分割槽的名字和路徑由分割槽決定,二是定義每個子分割槽的分割槽名和各自的路徑

1.不定義每個子分割槽

2.定義每個子分割槽

定義子分割槽可以為每個子分割槽定義具體的分割槽名和分割槽路徑

3.測試資料

insert into tb_sub_ev() values(1,『1989-01-01『),(2,『1989-03-19『),(3,『1989-04-19『);

當往裡面插入三條記錄時,其中『1989-01-01』和『1989-04-19』儲存在p0_s0分割槽中,『1989-03-19』儲存在p0_s1當中

二、分割槽管理

分割槽管理和range、list的分割槽管理是一樣的

1.合併分割槽

將p0,p1兩個分割槽合併

注意:合併分割槽的子分割槽也必須是兩個,這點需要理解,因為必須和建立分割槽時每個分割槽只有兩個子分割槽保持一致,合併分割槽不會造成資料的丟失。

2.拆分分割槽

alter table tb_sub_ev reorganize partition m1 into (

partition p0 values less than (1990) (

subpartition s0,

subpartition s1

partition p1 values less than (2000) (

subpartition s2,

subpartition s3

同樣,拆分分割槽也必須保證每個分割槽是兩個子分割槽。

3.刪除分割槽

alter table tb_sub_ev drop partition p0;

注意:由於分割槽是range和list分割槽,所以刪除分割槽也是同range和list分割槽一樣,這裡只能對每個分割槽進行刪除,不能針對每個子分割槽進行刪除操作,刪除分割槽後子分割槽連同資料一併被刪除。

三、錯誤的子分割槽建立

1.要不不定義各個子分割槽要不就每個都需要定義

create table tb_sub_ev_nex (id int, purchased date)

partition by range( year(purchased) )

subpartition by hash( to_days(purchased) ) (

partition p0 values less than (1990) (

subpartition s0,

subpartition s1

partition p1 values less than (2000),

partition p2 values less than maxvalue (

subpartition s4,

subpartition s5

這裡由於分割槽p1沒有定義子分割槽,所以建立分割槽失敗

四、移除表的分割槽

alter table tablename

remove partitioning ;

注意:使用remove移除分割槽是僅僅移除分割槽的定義,並不會刪除資料和drop partition不一樣,後者會連同資料一起刪除

參考:總結

備註:《歡迎交流討論》

mysql 子分割槽的寫法 MySQL子分割槽一例

這是現實中的乙個例子,但是我不推薦使用mysql分割槽用於生產create table t log id int 11 not null auto increment comment 主鍵id verson int 11 not null default 0 comment 版本號 actions ...

mysql子分割槽 MYSQL 子分割槽詳解

子分割槽 子分割槽是分割槽表中每個分割槽的再次分割。例如,考慮下面的create table語句 create table ts id int,purchased date partition by range year purchased subpartition by hash to days ...

mysql修改子分割槽 建立MySQL子分割槽方法

建立mysql子分割槽方法 閱讀 216 本文主要給大家介紹建立mysql子分割槽方法,文章內容都是筆者用心摘選和編輯的,具有一定的針對性,對大家的參考意義還是比較大的,下面跟筆者一起了解下建立mysql子分割槽方法吧。create table t log id int 11 not null au...