云萌主云应用官方论坛
标题:
【转载】Mysql的分区与分表(下)
[打印本页]
作者:
飘在云端
时间:
2017-2-9 14:42
标题:
【转载】Mysql的分区与分表(下)
column分区是5.5开始引入的分区功能,只有range column和list column这两种分区;支持整形、日期、字符串;range和list的分区方式非常的相似。
columns和range和list分区的区别
1.针对日期字段的分区就不需要再使用函数进行转换了,例如针对date字段进行分区不需要再使用year()表达式进行转换。
2.column分区支持多个字段作为分区键但是不支持表达式作为分区键。
columns支持的类型
整形支持:tinyint,smallint,mediumint,int,bigint;不支持decimal和float
时间类型支持:date,datetime
字符类型支持:char,varchar,binary,varbinary;不支持text,blob
目前mysql可用的分区类型主要有以下几种:
range分区:基于一个给定的连续区间范围,range主要是基于整数的分区,对于非整形的字段需要利用表达式将其转换成整形。
list分区:是基于列出的枚举值列表进行分区。
columns分区:可以无需通过表达式进行转换直接对非整形字段进行分区,同时columns分区还支持多个字段组合分区,只有rangelist存在columns分区,
columns是range和list分区的升级。
hash分区:基于给定的分区个数,将数据分配到不同的分区,hash分区只能针对整数进行hash,对于非整形的字段只能通过表达式将其转换成整数。
key分区:支持除text和blob之外的所有数据类型的分区,key分区可以直接基于字段做分区无需转换成整数。
新增分区:
注意:增加分区只能在最大端增加
alter table lange add partition (partition p3 values less than (30000));
删除分区:
注意:通过这种删除分区的方式会将分区中的数据也删除,慎用!!!!
但是通过删除分区的方式删除数据会比delete快很多,因为它相当于删除一个数据库一样因为每个分区都是一个独立的数据文件。
用来删除历史分区数据是非常好的办法。
alter table lange drop partition p3;
合并分区:
拆分合并分区统称为重新定义分区,拆分分为不会造成数据的丢失,只将会将数据从一个分区移动到另一个分区。
alter table lange
reorganize partition p1,p2,p3 into(
partition p4 values less than (40000),
partition p5 values less than (50000),
partition p6 values less than (60000)
);
移除分区:
alter table tablename
remove partitioning ;
注意:使用remove移除分区是仅仅移除分区的定义,并不会删除数据和drop PARTITION不一样,后者会连同数据一起删除
欢迎光临 云萌主云应用官方论坛 (https://yunmengzhu.com/)
Powered by Discuz! X3.5