Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  Partitioning  /  Partition Management

26.3 分区管理

使用 SQL 语句可以修改分区表;可以使用分区扩展的 ALTER TABLE 语句来添加、删除、重新定义、合并或拆分现有的分区。此外,还可以获取关于分区表和分区的信息。在以下部分中,我们将讨论这些主题。

Note

所有分区表的子分区数必须相同;创建表后无法更改子分区。

要更改表的分区方案,只需使用 ALTER TABLE 语句带有 partition_options 选项,该选项的语法与用于创建分区表的 CREATE TABLE 语句相同;该选项始终以关键字 PARTITION BY 开头。假设使用以下 CREATE TABLE 语句创建了一个按范围分区的表:

CREATE TABLE trb3 (id INT, name VARCHAR(50), purchased DATE)
    PARTITION BY RANGE( YEAR(purchased) ) (
        PARTITION p0 VALUES LESS THAN (1990),
        PARTITION p1 VALUES LESS THAN (1995),
        PARTITION p2 VALUES LESS THAN (2000),
        PARTITION p3 VALUES LESS THAN (2005)
    );

要将该表重新分区为使用 id 列值作为键的两个分区,可以使用以下语句:

ALTER TABLE trb3 PARTITION BY KEY(id) PARTITIONS 2;

这对表的结构具有与使用 CREATE TABLE trb3 PARTITION BY KEY(id) PARTITIONS 2; 创建表相同的效果。

ALTER TABLE ... ENGINE = ... 只更改表的存储引擎,而不改变表的分区方案。该语句仅在目标存储引擎支持分区时成功。你可以使用 ALTER TABLE ... REMOVE PARTITIONING 删除表的分区;请参阅 第 15.1.9 节,“ALTER TABLE 语句”

Important

仅在给定的 ALTER TABLE 语句中可以使用单个 PARTITION BYADD PARTITIONDROP PARTITIONREORGANIZE PARTITIONCOALESCE PARTITION 子句。如果你(例如)想删除一个分区并重新组织表的剩余分区,你必须在两个单独的 ALTER TABLE 语句中执行(一个使用 DROP PARTITION,然后第二个使用 REORGANIZE PARTITION)。

你可以使用 ALTER TABLE ... TRUNCATE PARTITION 从一个或多个选定的分区中删除所有行。