分区表特点:
在逻辑上为一个表,在物理上存储在多个文件中。
1、确认mysql服务器是否支持分区表:
mysql> show plugins;

查询结果如有partition这一行,则支持分区。
2、分区类型
1)按hash分区
CREATE TABLE `t_user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) DEFAULT NULL,
`phone` varchar(20) DEFAULT NULL,
`email` varchar(20) DEFAULT NULL,
`qq` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=57 DEFAULT CHARSET=utf8
PARTITION BY HASH(id) PATITIONS 4;
2)按范围分区
CREATE TABLE `t_user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) DEFAULT NULL,
`phone` varchar(20) DEFAULT NULL,
`email` varchar(20) DEFAULT NULL,
`qq` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=57 DEFAULT CHARSET=utf8
PARTITION BY RANGE(id)(
PATITION p0 VALUES LESS THAN (10000),
PATITION p1 VALUES LESS THAN (20000),
PATITION p2 VALUES LESS THAN (30000),
PATITION p3 VALUES LESS THAN MAXVALUE
);
适用于分区键为日期类型,定期清除某一日期的数据
3)List 分区
CREATE TABLE `t_user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) DEFAULT NULL,
`phone` varchar(20) DEFAULT NULL,
`email` varchar(20) DEFAULT NULL,
`qq` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=57 DEFAULT CHARSET=utf8
PARTITION BY LIST(id)(
PATITION p1 VALUES in (1,2,3,4,5),
PATITION p2 VALUES in (6,7,8,9,10)
);
如果插入一条list中没有的数据,报错!
3、其它
可以通过下面语句删除一个分区:
ALTER TABLE t_user DROP PARTITION p0;
可以通过下面语句添加一个分区:
alter table t_user add partition (partition p3 values less than (4000));
alter table t_user add partition (partition p3 values in (40));
版权声明:本文为eaphyy原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。