当前支持的类型包括 Range 分区和 Hash 分区,不支持 MySQL 的 List 分区和 Key 分区。

    Range 分区是指将数据行按分区表达式计算的值都落在给定的范围内。在 Range 分区中,你必须为每个分区指定值的范围,并且不能有重叠,通过使用 VALUES LESS THAN 操作进行定义。目前只支持单列的 Range 分区表。

    Hash 分区主要用于保证数据均匀地分散到一定数量的分区里面。在 Hash 分区中,你只需要指定分区的数量。使用 Hash 分区时,需要在 CREATE TABLE 后面添加 PARTITION BY HASH (expr) PARTITIONS num ,其中:expr 是一个返回整数的表达式,它可以是一个列名,但这一列的类型必须整数类型;num 是一个正整数,表示将表划分为多少个分区。

    1. 建表限制

    建立主键和唯一键时必须包含分区表达式中用到的所有列,以 Range 分区举例说明:

    2. 分区管理和使用方面的限制

    只要底层实现可能会涉及数据挪动的操作,TiDB 目前都不支持。包括且不限于:调整 Hash 分区表的分区数量;修改 Range 分区表的范围;合并分区;交换分区等。

    使用方面的限制主要指 Load Data 不支持指定分区 load,例如:

    TiDB 4.0 版本对分区表进行了较多的 Bug 修复、功能增强和性能提升,主要有以下几个方面:

    • 稳定性提升,修复了很多 Bug