首先检查Mysql服务器是否支持分区表:
mysql>show plugins
如果显示有partition项,那么就是有支持分区表功能的
分区表:在逻辑上为一个表,在物理上储存在多个文件中
partition by hash(key) partitions 4
非分区表文件:.frm 与 .ibd
分区表文件:ibd文件的个数和分区多少一致
HASH分区的键值必须是一个INT 类型的值,或是通过函数可以转换成int类型
RANGE分区:
根据分区键值的范围把数据存储到表的不同分区中
多个分区的范围要连续,但是不能重叠
默认情况下使用values less than属性,即每个分区不包括指定的那个值
PARTITION BY RANGE(customer_id)(
PARTITION P0 VALUES LESS THAN(10000), 0~9999
PARTITION P1 VALUES LESS THAN(20000),
PARTITIOM P2 VALUES LESS THAN(30000)
PARTITION P3 VALUES LESS THAN MAXVALUE 大于30000的部分
)
如果没有设置 less than maxvalue 那么就会出现超出范围无法插入的情况
Range分区的适用场景:
分区键为日期或者时间类型
所有的查询中都包括分区键
按照范围定期清除的信息
List 分区:
Partition by list(login_type)(
partition p0 values in (1,3,5,7,9),
partition p1 values in (2,4,6,8)
)