# 第24章 分区

**目录**

[24.1 MySQL分区概述](partitioning-overview.html)
[24.2 分区类型](partitioning-types.html)
[24.2.1 范围分区](partitioning-range.html)
[24.2.2 LIST 分区](partitioning-list.html)
[24.2.3 列分区](partitioning-columns.html)
[24.2.4 哈希分区](partitioning-hash.html)
[24.2.5 密钥分区](partitioning-key.html)
[24.2.6 子分区](partitioning-subpartitions.html)
[24.2.7 MySQL 分区如何处理 NULL](partitioning-handling-nulls.html)
[24.3 分区管理](partitioning-management.html)
[24.3.1 RANGE 和 LIST 分区的管理](partitioning-management-range-list.html)
[24.3.2 HASH 和 KEY 分区的管理](partitioning-management-hash-key.html)
[24.3.3 用表交换分区和子分区](partitioning-management-exchange.html)
[24.3.4 分区维护](partitioning-maintenance.html)
[24.3.5 获取分区信息](partitioning-info.html)
[24.4 分区修剪](partitioning-pruning.html)
[24.5 分区选择](partitioning-selection.html)
[24.6 分区的限制和限制](partitioning-limitations.html)
[24.6.1 分区键、主键和唯一键](partitioning-limitations-partitioning-keys-unique-keys.html)
[24.6.2 与存储引擎相关的分区限制](partitioning-limitations-storage-engines.html)
[24.6.3 与函数相关的分区限制](partitioning-limitations-functions.html)

[](<>)[](<>)[](<>)[](<>)[](<>)

本章讨论用户定义的分区。

笔记

表分区不同于窗口函数使用的分区。有关窗口函数的信息，请参见[第 12.21 节，“窗口函数”](window-functions.html).

在 MySQL 8.0 中，分区支持由[`InnoDB`](innodb-storage-engine.html)和[`新开发银行`](mysql-cluster.html)存储引擎。

MySQL 8.0 目前不支持使用除存储引擎之外的任何存储引擎对表进行分区`InnoDB`要么`新开发银行`， 如[`MyISAM`](myisam-storage-engine.html).尝试使用不提供本机分区支持的存储引擎创建分区表失败[`ER_CHECK_NOT_IMPLEMENTED`](https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html#error_er_check_not_implemented).

Oracle 提供的 MySQL 8.0 Community 二进制文件包括由`InnoDB`和`新开发银行`存储引擎。有关 MySQL 企业版二进制文件中提供的分区支持的信息，请参阅[第 30 章，*MySQL企业版*](mysql-enterprise.html).

如果您从源代码编译 MySQL 8.0，请使用`InnoDB`支持足以生成具有分区支持的二进制文件`InnoDB`表。有关详细信息，请参阅[第 2.9 节，“从源代码安装 MySQL”](source-installation.html).

不需要做任何进一步的事情来启用分区支持`InnoDB`（例如，在`我的.cnf`文件）。

无法禁用分区支持`InnoDB`存储引擎。

看[第 24.1 节，“MySQL 中的分区概述”](partitioning-overview.html)，了解分区和分区概念。

支持多种类型的分区以及子分区；看[第 24.2 节，“分区类型”](partitioning-types.html)， 和[第 24.2.6 节，“子分区”](partitioning-subpartitions.html).

[第 24.3 节，“分区管理”](partitioning-management.html)，涵盖在现有分区表中添加、删除和更改分区的方法。

[第 24.3.4 节，“分区维护”](partitioning-maintenance.html)，讨论用于分区表的表维护命令。

这[`分区`](information-schema-partitions-table.html)表中的`INFORMATION_SCHEMA`database 提供有关分区和分区表的信息。看[第 26.3.21 节，“信息\_SCHEMA 分区表”](information-schema-partitions-table.html)， 了解更多信息;有关针对此表的一些查询示例，请参见[第 24.2.7 节，“MySQL 分区如何处理 NULL”](partitioning-handling-nulls.html).

有关 MySQL 8.0 中分区的已知问题，请参阅[第 24.6 节，“分区的限制和限制”](partitioning-limitations.html).

在使用分区表时，您可能还会发现以下资源很有用。

[](<>)

**其他资源。**有关 MySQL 中用户定义分区的其他信息来源包括：

-   [MySQL 分区论坛](https://forums.mysql.com/list.php?106)

    这是对 MySQL 分区技术感兴趣或试验的人的官方论坛。它包含来自 MySQL 开发人员和其他人的公告和更新。它由分区开发和文档团队的成员监控。

-   [Mikael Ronström 的博客](http://mikaelronstrom.blogspot.com/)

    MySQL 分区架构师和首席开发人员 Mikael Ronström 经常在此处发布有关他在 MySQL 分区和 NDB 集群方面的工作的文章。

-   [行星MySQL](http://www.planetmysql.org/)

    一个以 MySQL 相关博客为特色的 MySQL 新闻站点，任何使用我的 MySQL 的人都应该对此感兴趣。我们鼓励您在此处查看指向使用 MySQL 分区的人员保存的博客的链接，或者将您自己的博客添加到所涵盖的博客中。
