本文主要介绍了选择LIST DEFAULT HASH分区的场景。
如果您想用LIST规则进行分区,但是分区键字段无法全部枚举,或者枚举值非常多,而对应的数据量很少。数据分布符合二八原则,20%的分区键值包含了80%的数据量,剩余80%的分区键值包含了20%的数据量。在这种场景下,您就可以选择LIST DEFAULT HASH分区类型,80%的数据按照LIST规则进行分区,不符合LIST规则的数据放到默认的DEFAULT分区里,按照HASH规则进行分区。
例如,对于多租户的业务系统,每个租户产生的用户数据量不均衡,您可以把大数据量的租户按照LIST规则分区,然后中小数据量的租户按照HASH规则分成多个分区,如下:
租户ID | 数据量 | 分区 |
大客户1 | 3000万 | p1 |
大客户2 | 2600万 | p2 |
大客户3 | 2400万 | p3 |
大客户4 | 2000万 | p4 |
中小客户群 | 3000万 | p_others |
CREATE TABLE cust_orders
(
customer_id VARCHAR(36),
year VARCHAR(60),
order_id INT,
order_content text
) PARTITION BY LIST COLUMNS(customer_id)
(
PARTITION p1 VALUES IN ('大客户1'),
PARTITION p2 VALUES IN ('大客户2'),
PARTITION p3 VALUES IN ('大客户3'),
PARTITION p4 VALUES IN ('大客户4'),
PARTITION p_others DEFAULT PARTITIONS 3
);