日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql子分区多少层_MySQL 子分区-阿里云开发者社区

發(fā)布時間:2023/12/3 数据库 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql子分区多少层_MySQL 子分区-阿里云开发者社区 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

介紹

子分區(qū)其實是對每個分區(qū)表的每個分區(qū)進行再次分隔,目前只有RANGE和LIST分區(qū)的表可以再進行子分區(qū),子分區(qū)只能是HASH或者KEY分區(qū)。子分區(qū)可以將原本的數(shù)據(jù)進行再次的分區(qū)劃分。

一、創(chuàng)建子分區(qū)

子分區(qū)由兩種創(chuàng)建方法,一種是不定義每個子分區(qū)子分區(qū)的名字和路徑由分區(qū)決定,二是定義每個子分區(qū)的分區(qū)名和各自的路徑

1.不定義每個子分區(qū)

CREATE TABLE tb_sub (id INT, purchased DATE)

PARTITION BY RANGE( YEAR(purchased) )

SUBPARTITION BY HASH( TO_DAYS(purchased) )

SUBPARTITIONS2(

PARTITION p0 VALUES LESS THAN (1990),

PARTITION p1 VALUES LESS THAN (2000),

PARTITION p2 VALUES LESS THAN MAXVALUE

);

SELECT PARTITION_NAME,PARTITION_METHOD,PARTITION_EXPRESSION,PARTITION_DESCRIPTION,TABLE_ROWS,SUBPARTITION_NAME,SUBPARTITION_METHOD,SUBPARTITION_EXPRESSION

FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA=SCHEMA() AND TABLE_NAME='tb_sub';

2.定義每個子分區(qū)

定義子分區(qū)可以為每個子分區(qū)定義具體的分區(qū)名和分區(qū)路徑

CREATE TABLE tb_sub_ev (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

)

);

3.測試數(shù)據(jù)

INSERT INTO tb_sub_ev() VALUES(1,'1989-01-01'),(2,'1989-03-19'),(3,'1989-04-19');

當(dāng)往里面插入三條記錄時,其中‘1989-01-01’和‘1989-04-19’存儲在p0_s0分區(qū)中,‘1989-03-19’存儲在p0_s1當(dāng)中

二、分區(qū)管理

分區(qū)管理和RANGE、LIST的分區(qū)管理是一樣的

1.合并分區(qū)

將p0,p1兩個分區(qū)合并

ALTER TABLE tb_sub_ev REORGANIZE PARTITION p0,p1 INTO (

PARTITION m1 VALUES LESS THAN (2000)

( SUBPARTITION n0,

SUBPARTITION n1

)

);

注意:合并分區(qū)的子分區(qū)也必須是兩個,這點需要理解,因為必須和創(chuàng)建分區(qū)時每個分區(qū)只有兩個子分區(qū)保持一致,合并分區(qū)不會造成數(shù)據(jù)的丟失。

2.拆分分區(qū)

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

)

);

同樣,拆分分區(qū)也必須保證每個分區(qū)是兩個子分區(qū)。

3.刪除分區(qū)

ALTER TABLE tb_sub_ev DROP PARTITION P0;

注意:由于分區(qū)是RANGE和LIST分區(qū),所以刪除分區(qū)也是同RANGE和LIST分區(qū)一樣,這里只能對每個分區(qū)進行刪除,不能針對每個子分區(qū)進行刪除操作,刪除分區(qū)后子分區(qū)連同數(shù)據(jù)一并被刪除。

三、錯誤的子分區(qū)創(chuàng)建

1.要不不定義各個子分區(qū)要不就每個都需要定義

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

)

);

這里由于分區(qū)p1沒有定義子分區(qū),所以創(chuàng)建分區(qū)失敗

四、移除表的分區(qū)

ALTER TABLE tablename

REMOVE PARTITIONING ;

注意:使用remove移除分區(qū)是僅僅移除分區(qū)的定義,并不會刪除數(shù)據(jù)和drop PARTITION不一樣,后者會連同數(shù)據(jù)一起刪除

分區(qū)系列文章:

總結(jié)

子分區(qū)的好處是可以對分區(qū)的數(shù)據(jù)進行再分,這樣數(shù)據(jù)就更加的分散,同時還可以對每個子分區(qū)定義各自的存儲路徑,這部分內(nèi)容在指定各分區(qū)路徑的下一篇文章中單獨進行講解。

本文轉(zhuǎn)自pursuer.chen(陳敏華)博客園博客,原文鏈接:http://www.cnblogs.com/chenmh/p/5649447.html,如需轉(zhuǎn)載請自行聯(lián)系原作者

總結(jié)

以上是生活随笔為你收集整理的mysql子分区多少层_MySQL 子分区-阿里云开发者社区的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。