mysql 子分割槽 mysql8 參考手冊 子分割槽

2021-10-25 14:37:12 字數 2287 閱讀 8220

子分割槽(也稱為 復合分割槽)是分割槽表中每個分割槽的進一步劃分。考慮以下 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 分割槽。這些分割槽中的每個分割槽p0,p1和p2進一步分為2個子分割槽。實際上,整個表分為多個 3 * 2 = 6分割槽。但是,由於該partition by range子句的作用,其中的前2個僅將值小於1990的記錄儲存在該purchased列中。

可以對通過range或進行分割槽的表進行子分割槽 list。子分割槽可以使用hash或 key分割槽。這也稱為 復合分割槽。

注意subpartition by hash和 subpartition by key一般遵循相同的語法規則partition by hash和 partition by key分別。唯一的例外是subpartition by key(不同於partition by key)當前不支援預設列,因此即使表具有顯式主鍵,也必須指定用於此目的的列。這是我們正在努力解決的已知問題;有關更多資訊和示例,請參閱 子分割槽問題。

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 s2,

subpartition s3

partition p2 values less than maxvalue (

subpartition s4,

subpartition s5

mysql8問題 mysql8中的問題

only full group by 對於group by聚合操作,如果在 select 中的列,沒有在 group by 現,那麼這個sql是不合法的,因為列不在group by從句中。no auto value on zero 該值影響自增長列的插入。預設設定下,插入0或null代表生成下乙個自...

mysql8建立不了使用者 mysql8建立使用者

假如是mysql8版本的話,使用 grant all privileges to 使用者 localhost identified by 自定義密碼 會報錯,因為要先建立使用者再進行賦權,不能同時進行 建立使用者 create user 使用者名稱 localhost identified by 密...

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

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