以下限制适用于使用具有用户定义的表分区的存储引擎。
合并存储引擎。
自定义分区和MERGE
存储引擎不兼容。使用
MERGE
存储引擎的表不能分区。不能合并分区表。
联合存储引擎。 FEDERATED
不支持表
分区;无法创建分区
FEDERATED
表。
CSV 存储引擎。 CSV
不支持
使用存储引擎的分区表;无法创建分区CSV
表。
InnoDB 存储引擎。
InnoDB
外键和 MySQL 分区不兼容。分区
InnoDB
表不能有外键引用,也不能有外键引用的列。InnoDB
不能对具有外键或被外键引用的表进行分区。
InnoDB
不支持使用多个磁盘进行子分区。(目前只有 . 支持
MyISAM
。)
此外,
ALTER
TABLE ... OPTIMIZE PARTITION
不能正确处理使用InnoDB
存储引擎的分区表。而是对此类表使用ALTER TABLE ... REBUILD
PARTITION
and ALTER TABLE ... ANALYZE
PARTITION
。有关详细信息,请参阅
第 13.1.8.1 节,“ALTER TABLE 分区操作”。
用户定义的分区和 NDB 存储引擎(NDB Cluster)。
分区方式KEY
(包括
)是存储引擎LINEAR KEY
支持的唯一分区类型
。NDB
在 NDB Cluster 的正常情况下,不可能使用 [ LINEAR
]以外的任何分区类型创建 NDB Cluster 表KEY
,并且尝试这样做会失败并出现错误。
异常(不适用于生产)new
:可以通过将NDB Cluster SQL 节点上的系统变量设置为来覆盖此限制
ON
。如果您选择这样做,您应该知道使用非分区类型的表[LINEAR] KEY
在生产中不受支持。在这种情况下,您可以创建和使用分区类型不是KEY
或的表LINEAR KEY
,但这样做的风险完全由您自己承担。
可以为
NDB
表定义的最大分区数取决于集群中数据节点和节点组的数量、所使用的 NDB Cluster 软件的版本以及其他因素。有关详细信息,请参阅
NDB 和用户定义的分区。
从 MySQL NDB Cluster 7.5.2 开始,表中每个分区可以存储的最大固定大小数据量
NDB
为 128 TB。以前,这是 16 GB。
CREATE TABLE
ALTER
TABLE
不允许使用会导致用户分区
NDB
表不满足以下两个要求中的一个或两个的语句,并且会失败并出现错误
:
该表必须具有明确的主键。
表的分区表达式中列出的所有列都必须是主键的一部分。
例外。
如果用户分区NDB
表是使用空列列表(即使用
PARTITION BY KEY()
或PARTITION BY
LINEAR KEY()
)创建的,则不需要显式主键。
分区选择。
表不支持分区选择
NDB
。有关详细信息,请参阅
第 22.5 节,“分区选择”。
升级分区表。
执行升级时,
必须转储并重新加载由除此之外
的KEY
任何存储引擎分区和使用的表。NDB
所有分区都使用相同的存储引擎。 分区表的所有分区必须使用相同的存储引擎,并且它必须是整个表使用的相同存储引擎。此外,如果没有在表级别指定引擎,则在创建或更改分区表时必须执行以下任一操作:
不要为任何分区或子分区 指定任何 引擎
为所有分区或子分区 指定引擎