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

2021-10-17 12:40:47 字數 2263 閱讀 5550

子分割槽

子分割槽是分割槽表中每個分割槽的再次分割。例如,考慮下面的create table語句:

create table ts (id int, purchased date)

partition by range(year(purchased))

subpartition by hash(to_days(purchased))

subpartitions 2(

partition p0 values less than (1990),

partition p1 values less than (2000),

partition p2 values less than maxvalue

表ts有3個range分割槽。這3個分割槽中的每乙個分割槽——p0, p1, 和 p2——又被進一步分成了2個子分割槽。實際上,整個表被分成了3 * 2 = 6個分割槽。但是,由於partition by range子句的作用,這些分割槽的頭2個只儲存「purchased」列中值小於1990的那些記錄。

在mysql 5.1中,對於已經通過range或list分割槽了的表再進行子分割槽是可能的。子分割槽既可以使用hash希分割槽,也可以使用key分割槽。這也被稱為復合分割槽(composite partitioning)。

為了對個別的子分割槽指定選項,使用subpartition子句來明確定義子分割槽也是可能的。

例如,建立在前面例子中給出的同乙個表的、乙個更加詳細的方式如下:

create table ts (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)

(subpartition s2,

subpartition s3 ),

partition p2 values less than maxvalue

(subpartition s4,

subpartition s5)

幾點要注意的語法項:

·    每個分割槽必須有相同數量的子分割槽。

·   如果在乙個分割槽表上的任何分割槽上使用subpartition來明確定義任何子分割槽,那麼就必須定義所有的子分割槽。換句話說,下面的語句將執行失敗:

create table ts (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 s2,

subpartition s3

即便這個語句包含了乙個subpartitions 2子句,但是它仍然會執行失敗。

每個subpartition子句必須包括 (至少)子分割槽的乙個名字。否則,你可能要對該子分割槽設定任何你所需要的選項,或者允許該子分割槽對那些選項採用其預設的設定。·

在每個分區內,子分割槽的名字必須是唯一的,但是在整個表中,沒有必要保持唯一。例如,下面的create table語句是有效的:

create table ts (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)

subpartition s0,

subpartition s1

partition p2 values less than maxvalue

subpartition s0,

subpartition s1

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

介紹 子分割槽其實是對每個分割槽表的每個分割槽進行再次分隔,目前只有range和list分割槽的表可以再進行子分割槽,子分割槽只能是hash或者key分割槽。子分割槽可以將原本的資料進行再次的分割槽劃分。一 建立子分割槽 子分割槽由兩種建立方法,一種是不定義每個子分割槽子分割槽的名字和路徑由分割槽決...

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

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

MySQL 子分割槽

子分割槽其實是對每個分割槽表的每個分割槽進行再次分隔,目前只有range和list分割槽的表可以再進行子分割槽,子分割槽只能是hash或者key分割槽。子分割槽可以將原本的資料進行再次的分割槽劃分。子分割槽由兩種建立方法,一種是不定義每個子分割槽子分割槽的名字和路徑由分割槽決定,二是定義每個子分割槽...