参考网址:
查看mysql分区信息(这里查看user表的分区信息):
select * from INFORMATION_SCHEMA.PARTITIONS where table_name='user';
查看执行一条查询SQL会扫描的分区:
explain partitions select * from user where id=10;
一、范围分区:
1、建表时就分区:
CREATE TABLE IF NOT EXISTS `user` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID',
`name` varchar(50) NOT NULL DEFAULT '' COMMENT '名称',
`sex` int(1) NOT NULL DEFAULT '0' COMMENT '0为男,1为女',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1
PARTITION BY RANGE (id) (
PARTITION p0 VALUES LESS THAN (3),
PARTITION p1 VALUES LESS THAN (6),
PARTITION p2 VALUES LESS THAN (9),
PARTITION p3 VALUES LESS THAN (12),
PARTITION p4 VALUES LESS THAN MAXVALUE
);
2、对现有表进行分区:
可以对现有表进行分区,并且会按規则自动的将表中的数据分配相应的分区
# 中,这样就比较好了,可以省去很多事情,看下面的操作*/
alter table aa partition by RANGE(id)
(PARTITION p1 VALUES less than (1),
PARTITION p2 VALUES less than (5),
PARTITION p3 VALUES less than MAXVALUE);
1、查看分区情况
SELECT partition_ordinal_position as 定义顺序,table_schema as 所属数据库,table_name as 所属表,partition_name as 分区表名称,partition_method as 分区类型,partition_expression as 分区列名称,partition_description as 数据范围,table_rows as 数据总数,create_time as 创建时间,update_time as 修时间 FROM INFORMATION_SCHEMA.partitions WHERE TABLE_SCHEMA= schema() AND TABLE_NAME='user';
2、查看特定表的字段定义情况
desc user;
3、查看特定表的创建语句
show create table user;
4、创建表并设置分区
CREATE TABLE IF NOT EXISTS `user` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID',
`name` varchar(50) NOT NULL DEFAULT '' COMMENT '名称',
`sex` int(1) NOT NULL DEFAULT '0' COMMENT '0为男,1为女',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1
PARTITION BY RANGE (id) (
PARTITION p0 VALUES LESS THAN (3),
PARTITION p1 VALUES LESS THAN (6),
PARTITION p2 VALUES LESS THAN (9),
PARTITION p3 VALUES LESS THAN (12),
PARTITION p4 VALUES LESS THAN MAXVALUE
);
5、删除一个分区(当删除了一个分区,也同时删除了该分区中所有的数据)
ALTER TABLE tr DROP PARTITION p2;
6、对现有表进行分区(对现有表进行分区,会按規则自动的将表中的数据分配相应的分区中,也可用于重新规划分区)
alter table aa partition by RANGE(id)
(PARTITION p1 VALUES less than (1),
PARTITION p2 VALUES less than (5),
PARTITION p3 VALUES less than MAXVALUE);
7、新增一个分区(新增分区时必须先把MAXVALUE分区删除,增加完毕后再加上)
alter table user add partition(partition p4 values less than MAXVALUE);
6、查看mysql服务器是否支持分区
show variables like "%part%";