• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 与存储引擎有关的分区限制

    在MySQL 8.0中,分区支持实际上不是由MySQL Server提供的,而是由表存储引擎自己或本机的分区处理程序提供的。在MySQL 8.0中,仅InnoDB存储引擎提供了本机分区处理程序。这意味着不能使用任何其他存储引擎来创建分区表。

    注意

    MySQL Cluster的NDB存储引擎还提供了本机分区支持,但MySQL 8.0当前不支持。

    ALTER TABLE ... OPTIMIZE PARTITION不适用于使用的分区表InnoDB。对于此类表,请使用ALTER TABLE ... REBUILD PARTITIONALTER TABLE ... ANALYZE PARTITION。有关更多信息,请参见“ ALTER TABLE分区操作”。

    用户定义的分区和NDB存储引擎(NDB群集)。KEY(包括LINEAR KEY)进行分区是NDB存储引擎支持的唯一分区类型。在正常情况下,在NDB Cluster中无法使用[LINEAR]以外的任何分区类型创建NDB Cluster表KEY,并且尝试这样做会失败并显示错误。

    异常(不适用于生产环境):可以通过将newNDB Cluster SQL节点上的系统变量设置为来覆盖此限制ON。如果选择执行此操作,则应注意[LINEAR] KEY生产环境中不支持使用分区类型以外的表。在这种情况下,您可以创建和使用分区类型不是KEY或的表LINEAR KEY,但这完全由您自己承担风险

    可为NDB表定义的最大分区数取决于群集中数据节点和节点组的数量,使用的NDB Cluster软件的版本以及其他因素。有关更多信息,请参见 NDB和用户定义的分区。

    一个NDB表中每个分区可以存储的最大固定大小数据为128 TB。以前,这是16 GB。

    CREATE TABLE不允许ALTER TABLE导致用户分区NDB表不满足以下两个要求中的一个或两个的语句,并且这些语句失败并出现错误:

    1. 该表必须具有显式主键。
    2. 该表的分区表达式中列出的所有列都必须是主键的一部分。

    例外。如果NDB使用空列列表(即使用PARTITION BY KEY()PARTITION BY LINEAR KEY())创建了用户分区表,则不需要显式主键。

    升级分区表。执行升级时,KEY必须转储并重新加载按分区的表。使用非存储引擎的分区表InnoDB无法从MySQL 5.7或更早版本升级到MySQL 8.0或更高版本;您必须在升级之前从此类表中删除分区,ALTER TABLE ... REMOVE PARTITIONING或将其转换为InnoDBusing ALTER TABLE ... ENGINE=INNODB

    有关将MyISAM表转换为的信息InnoDB,请参见“将表从MyISAM转换为InnoDB”。