0
点赞
收藏
分享

微信扫一扫

mysql分区

凯约 2023-05-06 阅读 97


参考网址:
查看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%";

举报

相关推荐

0 条评论