hash分区的目的是将数据均匀的分布到预先定义的各个分区中,保证各个分区的数据量大致都是一样的。使用partition by hash(expr)子句,其中expr是一个返回一个整数的表达式。
create table t5( a int null, b datetime )engine=innodb partition by hash(year(b)) partitions 4; |
mysql还支持一种linear hash的分区,使用更复杂的算法来计算数据分布位置:
create table t5( a int null, b datetime )engine=innodb partition by linear hash(year(b)) partitions 4; |
linear hash分区的优点在于,增加、删除、合并、拆分分区将更加快捷;缺点是各个分区之间的数据或许将不大平衡。