`
zhaoshijie
  • 浏览: 2243475 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

mysql分区

 
阅读更多
参考网址:
http://blog.51yip.com/mysql/1013.html
http://www.iteye.com/topic/1032668

查看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%";

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics