MySQL Partitioning

本文详细介绍MySQL中表分区的使用方法,包括如何检查服务器是否支持分区、创建不同类型的分区表、查看分区情况、指定数据文件位置等。此外还介绍了如何进行分区的修改、删除、添加及重新组织等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MySQL Version:5.1.49-communtity

1.       检查MySQL服务器是否支持表分区

mysql>show variables like ‘%partition%’;








 


 

 

 

2.       创建表

 

CREATE TABLE USER ( id INT AUTO_INCREMENT, username VARCHAR(20), birthday DATETIME, PRIMARY KEY (id,username) )ENGINE=INNODB PARTITION BY KEY(id,username) PARTITIONS 7;

 


 

3.       查看各个分区的情况(information_schema数据库的partitions表)

mysql> select table_name,partition_name,table_rows from information_schema.partitions where table_schema='partitiontest' and table_name like 'user';

 

 

 

 

4.       指定数据文件和索引文件的位置(在Windows平台被忽略)

CREATE TABLE USER ( id INT AUTO_INCREMENT, username VARCHAR(20), birthday DATETIME, PRIMARY KEY (id,username) )ENGINE=INNODB PARTITION BY KEY(id,username) PARTITIONS 2( PARTITION p0 DATA DIRECTORY 'D:/' INDEX DIRECTORY 'D:/', PARTITION p1 DATA DIRECTORY 'E:/' INDEX DIRECTORY 'E:/' );

 


 

5.       修改分区类型(如果原表有数据,此语句不会损坏数据)

Key类型改为hash

类型: ALTER TABLE `user` PARTITION BY HASH(id) PARTITIONS 3;

 

 

 

 

6.       删除分区(只能用于RANGELIST)

ALTER TABLE `user` DROP PARTITION p0;


 

 

 

 

7.       减少分区(只能用户KEYHASH

ALTER TABLE `user` COALESCE PARTITION 2;


 //

减少两个分区,减少个数必须小于原有分区数

 

 

8.       添加分区

ALTER TABLE `user` ADD PARTITION PARTITIONS 2;

 添加

2个分区

 

 

ALTER TABLE tt ADD PARTITION (PARTITION p2 VALUES IN (7, 14, 21));







 

9.       重新组织分区(RANGELIST

ALTER TABLE members REORGANIZE PARTITION p0 INTO ( PARTITION s0 VALUES LESS THAN (1960), PARTITION s1 VALUES LESS THAN (1970) ); ALTER TABLE members REORGANIZE PARTITION s0,s1 INTO ( PARTITION p0 VALUES LESS THAN (1970) );



 

 

 

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值