参考
https://dev.mysql.com/doc/refman/5.7/en/create-table.html#create-table-partitioning
分类
1.HASH
哈希一个或多个列,以创建用于放置和定位行的键。expr是一个使用一个或多个表列的表达式。这可以是任何有效的MySQL表达式(包括MySQL函数),生成一个整数值。例如,它们都是使用分区BY散列的有效CREATE TABLE语句
CREATE TABLE t1 (col1 INT, col2 CHAR(5))
PARTITION BY HASH(col1);
CREATE TABLE t1 (col1 INT, col2 CHAR(5), col3 DATETIME)
PARTITION BY HASH ( YEAR(col3) );
2.KEY
这类似于散列,只是MySQL提供了散列函数,以保证数据的均匀分布。column_list参数只是一个包含1个或多个表列的列表(最多16个)。这个例子展示了一个简单的按键分区的表,有4个分区
CREATE TABLE tk (col1 INT, col2 CHAR(5), col3 DATE)
PARTITION BY KEY(col3)
PARTITIONS 4;
3.RANGE
在本例中,expr使用一组小于操作符的值显示一个值范围。在使用范围分区时,必须使用小于的值定义至少一个分区。不能在范围分区中使用值
CREATE TABLE t1 (
year_col INT,
some_data INT
)
PARTITION BY RANGE (year_col) (
PARTITION p0 VALUES LESS THAN (1991),
PARTITION p1 VALUES LESS THAN (1995),
PARTITION p2 VALUES LESS THAN (1999),
PARTITION p3 VALUES LESS THAN (2002),
PARTITION p4 VALUES LESS THAN (2006),
PARTITION p5 VALUES LESS THAN MAXVALUE
);
4.LIST
这在根据表列(可能的值的限制集,例如州或国家代码)分配分区时非常有用。在这种情况下,可以将属于某个州或国家的所有行分配给单个分区,或者为某个州或国家集保留一个分区。它与RANGE类似,只是可以使用IN中的值为每个分区指定允许的值。值IN与要匹配的值列表一起使用。例如,你可以创建一个分区方案如下