mysql資料庫在5.1版本開始支援分割槽,分割槽的過程是將乙個表或索引分解為多個更小、更可管理的部分。
分割槽有兩種:
range分割槽
create
table r(
id int
)engine=innodb
partition by range(id)(
partition p0 values less than(10),
partition p1 values less than(20)
);
這裡用r表的id欄位進行分割槽,id小於10的行放入p0分割槽,大於等於10小於20的行放入p1分割槽。
list分割槽
create
table r(
a int,
b int
)engine=innodb
partition by list(b)(
partition p0 values less than(1,3,5,7,9),
partition p1 values less than(0,2,4,6,8)
);
b等於1,3,5,7,9的行將放入p0中,b等於0,2,4,6,8的行將放入p1中。
hash分割槽
create
table t_hash(
a int,
b datetime
)engine=innodb
partition by hash(year(b))
partitions 4;
以上建立了乙個hash分割槽的表,分割槽按照日期列b進行
key分割槽
create
table t_key(
a int,
b int
)engine=innodb
partition by
key(b))
partitions 4;
key分割槽和hash分割槽相似,不同之處在於hash分割槽使用使用者自定義的函式進行分割槽,而key分割槽使用mysql資料庫提供的函式進行分割槽。
columns分割槽
range,list,hash,key分割槽都有相同的限制:資料必須是整數,如果不是整數就需要通過函式轉化為整數。而columns分割槽可以看成是range分割槽和list分割槽的一種進化,不但可以直接使用非整數進行分割槽(支援int,smallint,tinyint,bigint,date,datetime,char,varchar,binary,varbinary型別),還支援用多個列進行分割槽
create
table rcx(
a int,
b int,
c char(3),
d int
)engine=innodb
partition by range columns(a,b,c)(
partition p0 values less than(5,10,'ggg'),
partition p1 values less than(10,20,'mmm'),
partition p2 values less than(15,30,'sss'),
partition p3 values less than(maxvalue,maxvalue,maxvalue)
);
如果表中存在主鍵或唯一索引,那麼用於分割槽的字段必須是唯一索引的乙個組成部分 mysql分割槽邊 mysql分割槽
檢視資料庫版本是否支援分割槽 分割槽的四種型別 range分割槽 範圍分割槽,根據某個欄位的值來進行分割槽,某個連續的區間來進行區分 建立表時分區create table teacher id varchar 20 not null name varchar 20 age varchar 20 bi...
mysql 分割槽的作用 MySQL分割槽的優點
mysql分割槽有多種模式,而且在mysql5.1中,支援水平分割槽,下面就為您介紹5個常見的mysql分割槽模式,希望對您有所幫助。mysql5.1中最激動人心的新特性應該就是對水平分割槽的支援了。這對mysql的使用者來說確實是個好訊息,而且她已經支援分割槽大部分模式 range 範圍 這種模式...
mysql 的分割槽
使用過oracle的分割槽 create table partition by list field value alter table truncate add partition.查了一下mysql的分割槽功能,mysql只有在5.1版本以後才支援分割槽 mysql的分割槽與oracle的分割槽...