• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 在线DDL操作

    本节以下主题下提供了DDL操作的在线支持详细信息,语法示例和使用说明。

    • 索引操作
    • 主键操作
    • 列操作
    • 生成的列操作
    • 外键操作
    • 表操作
    • 表空间操作
    • 分区操作

    索引操作

    下表概述了对索引操作的联机DDL支持。星号表示其他信息,异常或依赖项。有关详细信息,请参见语法和用法说明。

    对索引操作的在线DDL支持

    运作方式瞬间到位重建表允许并发DML仅修改元数据
    创建或添加二级索引没有没有没有
    删除索引没有没有
    重命名索引没有没有
    添加FULLTEXT索引没有是*没有*没有没有
    添加SPATIAL索引没有没有没有没有
    更改索引类型没有

    语法和用法说明

    • 创建或添加二级索引

      CREATE INDEX name ON table (col_list);
      
      ALTER TABLE tbl_name ADD INDEX name (col_list);
      

      创建索引时,该表仍可用于读取和写入操作。该CREATE INDEX语句仅在访问表的所有事务完成后才完成,因此索引的初始状态反映了表的最新内容。

      在线DDL对添加二级索引的支持意味着您通常可以通过以下方式来创建和加载表及相关索引:创建不具有二级索引的表,然后在数据加载后添加二级索引,从而加快了创建和加载表及关联索引的总体过程。

      CREATE INDEXor ALTER TABLE语句完成执行时,新创建的二级索引仅包含表中已提交的数据。它不包含任何未提交的值,值的旧版本或标记为要删除但尚未从旧索引中删除的值。

      一些因素会影响此操作的性能,空间使用率和语义。有关详细信息,请参见“在线DDL限制”。

    • 删除索引

      DROP INDEX name ON table;
      
      ALTER TABLE tbl_name DROP INDEX name;
      

      删除索引时,该表仍可用于读取和写入操作。该DROP INDEX语句仅在访问表的所有事务完成后才完成,因此索引的初始状态反映了表的最新内容。

    • 重命名索引

      ALTER TABLE tbl_name RENAME INDEX old_index_name TO new_index_name, ALGORITHM=INPLACE, LOCK=NONE;
      
    • 添加FULLTEXT索引

      CREATE FULLTEXT INDEX name ON table(column);
      

      FULLTEXT如果没有用户定义的FTS_DOC_ID列,则添加第一个索引将重建表。FULLTEXT可以添加其他索引而不重建表。

    • 添加SPATIAL索引

      CREATE TABLE geom (g GEOMETRY NOT NULL);
      ALTER TABLE geom ADD SPATIAL INDEX(g), ALGORITHM=INPLACE, LOCK=SHARED;
      

      FULLTEXT如果没有用户定义的FTS_DOC_ID列,则添加第一个索引将重建表。FULLTEXT可以添加其他索引而不重建表。

    • 更改索引类型(USING{BTREE | HASH}

      ALTER TABLE tbl_name DROP INDEX i1, ADD INDEX i1(key_part,...) USING BTREE, ALGORITHM=INSTANT;
      

    主键操作

    下表概述了对主键操作的联机DDL支持。星号表示其他信息,异常或依赖项。请参阅语法和用法说明。

    对主键操作的在线DDL支持

    运作方式瞬间到位重建表允许并发DML仅修改元数据
    添加主键没有是*是*没有
    删除主键没有没有没有没有
    删除主键并添加另一个没有没有

    语法和用法说明

    • 添加主键

      ALTER TABLE tbl_name ADD PRIMARY KEY (column), ALGORITHM=INPLACE, LOCK=NONE;
      

      重建表到位。数据被大量重组,使其成为昂贵的操作。ALGORITHM=INPLACE如果必须将列转换为,则在某些情况下是不允许的NOT NULL

      重组聚集索引始终需要复制表数据。因此,最好在创建表时定义主键,而不要在ALTER TABLE ... ADD PRIMARY KEY以后发布。

      创建UNIQUEPRIMARY KEY索引时,MySQL必须做一些额外的工作。对于UNIQUE索引,MySQL检查表是否不包含键的重复值。对于PRIMARY KEY索引,MySQL还检查是否所有PRIMARY KEY列都不包含NULL

      当您使用ALGORITHM=COPY子句添加主键时,MySQL会将NULL关联列中的值转换为默认值:0表示数字,空字符串表示基于字符的列和BLOB,而0000-00-00则注册00:00:00 DATETIME。这是Oracle建议您不要依赖的非标准行为。ALGORITHM=INPLACE仅当SQL_MODE设置包含strict_trans_tablesstrict_all_tables标志时,才允许使用主键。当SQL_MODE设置为严格时,ALGORITHM=INPLACE是允许的,但是如果请求的主键列包含NULL价值观。该ALGORITHM=INPLACE行为更符合标准。

      如果创建的表没有主键,InnoDB则为您选择一个,它可以是列上UNIQUE定义的第一个键,也可以是NOT NULL系统生成的键。为避免不确定性和额外隐藏列的潜在空间需求,请将该PRIMARY KEY子句指定为语句的一部分CREATE TABLE

      MySQL通过将现有数据从原始表复制到具有所需索引结构的临时表中来创建新的聚集索引。将数据完全复制到临时表后,原始表将使用其他临时表名重命名。包含新的聚集索引的临时表将用原始表的名称重命名,然后从数据库中删除原始表。

      适用于二级索引操作的联机性能增强不适用于主键索引。InnoDB表的行存储在基于主键组织的聚集索引中,形成一些数据库系统称为“索引组织表”的表。由于表结构与主键紧密相关,因此重新定义主键仍然需要复制数据。

      当对主键进行的操作使用时ALGORITHM=INPLACE,即使仍然复制数据,它也比使用效率更高,ALGORITHM=COPY因为:

      • 不需要撤消日志记录或相关的重做日志记录ALGORITHM=INPLACE。这些操作会增加使用的DDL语句的开销ALGORITHM=COPY
      • 二级索引条目已预先排序,因此可以按顺序加载。
      • 不使用更改缓冲区,因为辅助索引中没有随机访问插入。
    • 删除主键

      ALTER TABLE tbl_name DROP PRIMARY KEY, ALGORITHM=COPY;
      

      ALGORITHM=COPY支持删除主键而不在同一ALTER TABLE语句中添加新的主键。

    • 删除主键并添加另一个

      ALTER TABLE tbl_name DROP PRIMARY KEY, ADD PRIMARY KEY (column), ALGORITHM=INPLACE, LOCK=NONE;
      

      数据被大量重组,使其成为昂贵的操作。

    列操作

    下表概述了对列操作的在线DDL支持。星号表示其他信息,异常或依赖项。有关详细信息,请参见语法和用法说明。

    对列操作的在线DDL支持

    运作方式瞬间到位重建表允许并发DML仅修改元数据
    添加列是*没有*是*没有
    删除列没有没有
    重命名列没有没有是*
    重新排序栏没有没有
    设置列默认值没有
    更改列数据类型没有没有没有没有
    扩展VARCHAR列大小没有没有
    删除列默认值没有
    更改自动增量值没有没有没有*
    制作专栏NULL没有是*没有
    制作专栏NOT NULL没有是*是*没有
    修改ENUMSET列的定义没有

    语法和用法说明

    • 添加列

      ALTER TABLE tbl_name ADD COLUMN column_name column_definition, ALGORITHM=INSTANT;
      

      使用该INSTANT算法添加列时,存在以下限制:

      • 添加列不能在同一语句中与ALTER TABLE不支持的其他操作组合使用ALGORITHM=INSTANT
      • 只能将一列添加为表的最后一列。不支持将列添加到其他列中的任何其他位置。
      • 列不能添加到使用的表中ROW_FORMAT=COMPRESSED
      • 列不能添加到包含FULLTEXT索引的表中。
      • 列不能添加到临时表。临时表仅支持ALGORITHM=COPY
      • 不能将列添加到驻留在数据字典表空间中的表中。
      • 添加列时不评估行大小限制。但是,在插入和更新表中的行的DML操作期间会检查行大小限制。

      可以在同一ALTER TABLE语句中添加多个列。例如:

      ALTER TABLE t1 ADD COLUMN c2 INT, ADD COLUMN c3 INT, ALGORITHM=INSTANT;
      

      INFORMATION_SCHEMA.INNODB_TABLESINFORMATION_SCHEMA.INNODB_COLUMNS提供即时添加列的元数据。INFORMATION_SCHEMA.INNODB_TABLES.INSTANT_COLS显示添加第一个即时列之前表中的列数。INFORMATION_SCHEMA.INNODB_COLUMNS.HAS_DEFAULTDEFAULT_VALUE提供有关立即添加的列的默认值的元数据。

      添加自动增量列时不允许并发DML 。数据被大量重组,使其成为昂贵的操作。至少ALGORITHM=INPLACE, LOCK=SHARED是必需的。

      如果ALGORITHM=INPLACE用于添加列,则重建表。

    • 删除列

      ALTER TABLE tbl_name DROP COLUMN column_name, ALGORITHM=INPLACE, LOCK=NONE;
      

      数据被大量重组,使其成为昂贵的操作。

    • 重命名列

      ALTER TABLE tbl CHANGE old_col_name new_col_name data_type, ALGORITHM=INPLACE, LOCK=NONE;
      

      要允许并发DML,请保持相同的数据类型,仅更改列名。

      当您保持相同的数据类型和[NOT] NULL属性时,仅更改列名,即可始终在线执行该操作。

      您还可以重命名属于外键约束的列。外键定义会自动更新为使用新的列名。重命名参与外键的列仅适用于ALGORITHM=INPLACE。如果您使用该ALGORITHM=COPY子句,或者某些其他条件导致该命令在ALGORITHM=COPY后台使用,则该ALTER TABLE语句将失败。

      ALGORITHM=INPLACE不支持重命名生成的列。

    • 重新排序栏

      要重新排序列,请使用FIRSTAFTERCHANGEMODIFY操作。

      ALTER TABLE tbl_name MODIFY COLUMN col_name column_definition FIRST, ALGORITHM=INPLACE, LOCK=NONE;
      

      数据被大量重组,使其成为昂贵的操作。

    • 更改列数据类型

      ALTER TABLE tbl_name CHANGE c1 c1 BIGINT, ALGORITHM=COPY;
      

      仅支持通过更改列数据类型ALGORITHM=COPY

    • 扩展VARCHAR列大小

      ALTER TABLE tbl_name CHANGE COLUMN c1 c1 VARCHAR(255), ALGORITHM=INPLACE, LOCK=NONE;
      

      VARCHAR列所需的长度字节数必须保持相同。对于VARCHAR大小为0到255个字节的列,需要一个长度的字节来编码该值。对于VARCHAR大小为256字节或更大的列,需要两个长度的字节。结果,就地ALTER TABLE仅支持将VARCHAR列大小从0 增大到255字节,或从256字节增大到更大的大小。就地ALTER TABLE不支持增加VARCHAR列,从小于256个字节到等于或大于256个字节的大小。在这种情况下,所需的长度字节数从1更改为2,这仅由表副本(ALGORITHM=COPY)支持。例如,尝试VARCHAR使用就地ALTER TABLE将单字节字符集的列大小从VARCHAR(255)更改为VARCHAR(256)会返回此错误:

      ALTER TABLE tbl_name ALGORITHM=INPLACE, CHANGE COLUMN c1 c1 VARCHAR(256);
      ERROR 0A000: ALGORITHM=INPLACE is not supported. Reason: Cannot change
      column type INPLACE. Try ALGORITHM=COPY.
      
      注意

      一个的字节长度VARCHAR列是依赖于字符集的字节长度。

      减少VARCHAR使用就地尺寸ALTER TABLE不被支持。减小VARCHAR大小需要表副本(ALGORITHM=COPY)。

    • 设置列默认值

      ALTER TABLE tbl_name ALTER COLUMN col SET DEFAULT literal, ALGORITHM=INSTANT;
      

      仅修改表元数据。默认列值存储在数据字典中。

    • 删除列默认值

      ALTER TABLE tbl ALTER COLUMN col DROP DEFAULT, ALGORITHM=INSTANT;
      
    • 更改自动增量值

      ALTER TABLE table AUTO_INCREMENT=next_value, ALGORITHM=INPLACE, LOCK=NONE;
      

      修改存储在内存中的值,而不是数据文件。

      在使用复制或分片的分布式系统中,有时会将表的自动增量计数器重置为特定值。插入表的下一行将为其自动增量列使用指定的值。您还可以在数据仓库环境中使用此技术,在该环境中,您定期清空所有表并重新加载它们,然后从1重新开始自动递增序列。

    • 制作专栏NULL

      ALTER TABLE tbl_name MODIFY COLUMN column_name data_type NULL, ALGORITHM=INPLACE, LOCK=NONE;
      

      重建表到位。数据被大量重组,使其成为昂贵的操作。

    • 制作专栏NOT NULL

      ALTER TABLE tbl_name MODIFY COLUMN column_name data_type NOT NULL, ALGORITHM=INPLACE, LOCK=NONE;
      

      重建表到位。STRICT_ALL_TABLESSTRICT_TRANS_TABLESSQL_MODE操作成功所需的。如果该列包含NULL值,则操作失败。服务器禁止更改外键列,这可能会导致丢失引用完整性。请参见“ ALTER TABLE语句”。数据被大量重组,使其成为昂贵的操作。

    • 修改ENUMSET列的定义

      CREATE TABLE t1 (c1 ENUM('a', 'b', 'c'));
      ALTER TABLE t1 MODIFY COLUMN c1 ENUM('a', 'b', 'c', 'd'), ALGORITHM=INSTANT;
      

      只要不改变数据类型的存储大小,就可以立即或就地执行通过在有效成员值列表的末尾添加新的枚举或设置成员来修改ENUMor或SETcolumn 的定义的操作。例如,将成员添加到具有8个成员的列中,将每个值所需的存储从1字节更改为2字节;这需要一个表副本。在列表中间添加成员会导致对现有成员重新编号,这需要表副本。SET

    生成的列操作

    下表概述了对生成的列操作的在线DDL支持。有关详细信息,请参见语法和用法说明。

    对生成的列操作的在线DDL支持

    运作方式瞬间到位重建表允许并发DML仅修改元数据
    添加STORED没有没有没有没有
    修改STORED列顺序没有没有没有没有
    删除STORED没有没有
    添加VIRTUAL没有
    修改VIRTUAL列顺序没有没有没有没有
    删除VIRTUAL没有

    语法和用法说明

    • 添加STORED

      ALTER TABLE t1 ADD COLUMN (c2 INT GENERATED ALWAYS AS (c1 + 1) STORED), ALGORITHM=COPY;
      

      ADD COLUMN不是对存储的列的就地操作(无需使用临时表即可完成),因为表达式必须由服务器评估。

    • 修改STORED列顺序

      ALTER TABLE t1 MODIFY COLUMN c2 INT GENERATED ALWAYS AS (c1 + 1) STORED FIRST, ALGORITHM=COPY;
      

      重建表到位。

    • 删除STORED

      ALTER TABLE t1 DROP COLUMN c2, ALGORITHM=INPLACE, LOCK=NONE;
      

      重建表到位。

    • 添加VIRTUAL

      ALTER TABLE t1 ADD COLUMN (c2 INT GENERATED ALWAYS AS (c1 + 1) VIRTUAL), ALGORITHM=INSTANT;
      

      虚拟列的添加可以立即执行,也可以在非分区表中执行。

      VIRTUAL对于分区表,添加a 不是就地操作。

    • 修改VIRTUAL列顺序

      ALTER TABLE t1 MODIFY COLUMN c2 INT GENERATED ALWAYS AS (c1 + 1) VIRTUAL FIRST, ALGORITHM=COPY;
      
    • 删除VIRTUAL

      ALTER TABLE t1 DROP COLUMN c2, ALGORITHM=INSTANT;
      

      删除VIRTUAL列可以立即执行,也可以在未分区的表中执行。

    外键操作

    下表概述了对外键操作的联机DDL支持。星号表示其他信息,异常或依赖项。有关详细信息,请参见语法和用法说明。

    对外键操作的在线DDL支持

    运作方式瞬间到位重建表允许并发DML仅修改元数据
    添加外键约束没有是*没有
    删除外键约束没有没有

    语法和用法说明

    • 添加外键约束

      禁用INPLACE时支持该算法foreign_key_checks。否则,仅COPY支持算法。

      ALTER TABLE tbl1 ADD CONSTRAINT fk_name FOREIGN KEY index (col1) 
        REFERENCES tbl2(col2) referential_actions;
      
    • 删除外键约束

      ALTER TABLE tbl DROP FOREIGN KEY fk_name;
      

      可以通过foreign_key_checks启用或禁用选项在线执行删除外键。

      如果您不知道特定表上的外键约束的名称,请发出以下语句,并在CONSTRAINT子句中为每个外键找到约束名称:

      SHOW CREATE TABLE table\G
      

      或者,查询INFORMATION_SCHEMA.TABLE_CONSTRAINTS表并使用CONSTRAINT_NAMECONSTRAINT_TYPE列标识外键名称。

      您还可以在单个语句中删除外键及其关联的索引:

      ALTER TABLE table DROP FOREIGN KEY constraint, DROP INDEX index;
      
    注意

    如果要更改的表中已经存在外键(即,它是包含子句的子表FOREIGN KEY ... REFERENCE),则其他限制适用于联机DDL操作,即使那些不直接涉及外键列的操作也是如此:

    • 一个ALTER TABLE子表上可以等待另一个事务提交,如果更改到父表导致子表通过相关的变化ON UPDATEON DELETE条款使用CASCADESET NULL参数。
    • 以同样的方式,如果表是父表的外键关系,即使它不包含任何FOREIGN KEY条款,它可以等待ALTER TABLE完成如果一个INSERTUPDATEDELETE声明引起ON UPDATEON DELETE动作子表。

    表操作

    下表概述了对表操作的在线DDL支持。星号表示其他信息,异常或依赖项。有关详细信息,请参见语法和用法说明。

    对表操作的在线DDL支持

    运作方式瞬间到位重建表允许并发DML仅修改元数据
    改变ROW_FORMAT没有没有
    改变KEY_BLOCK_SIZE没有没有
    设置持久表统计信息没有没有
    指定字符集没有是*没有没有
    转换字符集没有没有是*没有没有
    优化表没有是*没有
    FORCE选项重建没有是*没有
    执行空重建没有是*没有
    重命名表格没有

    语法和用法说明

    • 改变ROW_FORMAT

      ALTER TABLE tbl_name ROW_FORMAT = row_format, ALGORITHM=INPLACE, LOCK=NONE;
      

      数据被大量重组,使其成为昂贵的操作。

      有关该ROW_FORMAT选项的更多信息,请参见表选项。

    • 改变KEY_BLOCK_SIZE

      ALTER TABLE tbl_name KEY_BLOCK_SIZE = value, ALGORITHM=INPLACE, LOCK=NONE;
      

      数据被大量重组,使其成为昂贵的操作。

      有关该KEY_BLOCK_SIZE选项的更多信息,请参见表选项。

    • 设置持久表统计信息选项

      ALTER TABLE tbl_name STATS_PERSISTENT=0, STATS_SAMPLE_PAGES=20, STATS_AUTO_RECALC=1, ALGORITHM=INPLACE, LOCK=NONE;
      

      仅修改表元数据。

      持续的统计数据包括STATS_PERSISTENTSTATS_AUTO_RECALC,和STATS_SAMPLE_PAGES。有关更多信息,请参见“配置持久性优化器统计参数”。

    • 指定字符集

      ALTER TABLE tbl_name CHARACTER SET = charset_name, ALGORITHM=INPLACE, LOCK=NONE;
      

      如果新字符编码不同,则重建表。

    • 转换字符集

      ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name, ALGORITHM=COPY;
      

      如果新字符编码不同,则重建表。

    • 优化表

      OPTIMIZE TABLE tbl_name;
      

      具有FULLTEXT索引的表不支持就地操作。该操作使用的INPLACE算法,但ALGORITHMLOCK语法是不允许的。

    • FORCE选项重建表

      ALTER TABLE tbl_name FORCE, ALGORITHM=INPLACE, LOCK=NONE;
      

      用途ALGORITHM=INPLACE为MySQL的5.6.17的。ALGORITHM=INPLACE具有FULLTEXT索引的表不支持。

    • 执行“空”重建

      ALTER TABLE tbl_name ENGINE=InnoDB, ALGORITHM=INPLACE, LOCK=NONE;
      

      用途ALGORITHM=INPLACE为MySQL的5.6.17的。ALGORITHM=INPLACE具有FULLTEXT索引的表不支持。

    • 重命名表格

      ALTER TABLE old_tbl_name RENAME TO new_tbl_name, ALGORITHM=INSTANT;
      

      重命名表可以立即执行,也可以就地执行。MySQL重命名与表相对应的文件,tbl_name但不进行复制。(您也可以使用该RENAME TABLE语句来重命名表。请参见“ RENAME TABLE语句”。)专为重命名表授予的特权不会迁移到新名称。必须手动更改它们。

    表空间操作

    下表概述了对表空间操作的联机DDL支持。有关详细信息,请参见语法和用法说明。

    对表空间操作的在线DDL支持

    运作方式瞬间到位重建表允许并发DML仅修改元数据
    重命名通用表空间没有没有
    启用或禁用常规表空间加密没有没有没有
    启用或禁用每表文件表空间加密没有没有没有没有

    语法和用法说明

    • 重命名通用表空间

      ALTER TABLESPACE tablespace_name RENAME TO new_tablespace_name;
      

      ALTER TABLESPACE ... RENAME TO使用INPLACE算法,但不支持该ALGORITHM子句。

    • 启用或禁用常规表空间加密

      ALTER TABLESPACE tablespace_name ENCRYPTION='Y';
      

      ALTER TABLESPACE ... ENCRYPTION使用INPLACE算法,但不支持该ALGORITHM子句。

      有关相关信息,请参见“ InnoDB静态数据加密”。

    • 启用或禁用每表文件表空间加密

      ALTER TABLE tbl_name ENCRYPTION='Y', ALGORITHM=COPY;
      

      有关相关信息,请参见“ InnoDB静态数据加密”。

    分区操作

    除某些ALTER TABLE分区子句外,分区InnoDB表的联机DDL操作遵循与常规InnoDB表相同的规则。

    某些ALTER TABLE分区子句与常规未分区InnoDB表没有通过相同的内部在线DDL API 。结果,对ALTER TABLE分区子句的在线支持有所不同。

    下表显示了每个ALTER TABLE分区语句的联机状态。无论使用哪种在线DDL API,MySQL都会尽可能地减少数据复制和锁定。

    ALTER TABLE使用ALGORITHM=COPY或仅允许使用“ALGORITHM=DEFAULT, LOCK=DEFAULT”的分区选项,使用COPY算法对表进行重新分区。换句话说,将使用新的分区方案创建一个新的分区表。新创建的表包括该ALTER TABLE语句应用的所有更改,并且表数据被复制到新的表结构中。

    对分区操作的在线DDL支持

    分区条款瞬间到位允许DML注意
    PARTITION BY没有没有没有许可证ALGORITHM=COPYLOCK={DEFAULT|SHARED|EXCLUSIVE}
    ADD PARTITION没有是*是*ALGORITHM=INPLACE, LOCK={DEFAULT|NONE|SHARED|EXCLUSISVE}为支持RANGELIST分区,ALGORITHM=INPLACE, LOCK={DEFAULT|SHARED|EXCLUSISVE}用于HASHKEY分区,并且ALGORITHM=COPY, LOCK={SHARED|EXCLUSIVE}对所有分区类型。不复制由RANGE或分区的表的现有数据LIST。允许ALGORITHM=COPY对以HASH或分区的表进行并发查询LIST,因为MySQL会在持有共享锁的同时复制数据。
    DROP PARTITION没有是*是*

    ALGORITHM=INPLACE, LOCK={DEFAULT|NONE|SHARED|EXCLUSIVE}支持。不复制由RANGE或分区的表的数据LIST

    DROP PARTITION与一起ALGORITHM=INPLACE删除分区中存储的数据并删除分区。但是,DROP PARTITION使用ALGORITHM=COPYold_alter_table=ON重建分区表,并尝试将数据从删除的分区移动到具有兼容PARTITION ... VALUES定义的另一个分区。无法删除的数据将被删除。

    DISCARD PARTITION没有没有没有仅允许ALGORITHM=DEFAULTLOCK=DEFAULT
    IMPORT PARTITION没有没有没有仅允许ALGORITHM=DEFAULTLOCK=DEFAULT
    TRUNCATE PARTITION没有不复制现有数据。它只是删除行;它不会更改表本身或其任何分区的定义。
    COALESCE PARTITION没有是*没有ALGORITHM=INPLACE, LOCK={DEFAULT|SHARED|EXCLUSIVE}支持。
    REORGANIZE PARTITION没有是*没有ALGORITHM=INPLACE, LOCK={DEFAULT|SHARED|EXCLUSIVE}支持。
    EXCHANGE PARTITION没有
    ANALYZE PARTITION没有
    CHECK PARTITION没有
    OPTIMIZE PARTITION没有没有没有ALGORITHMLOCK子句将被忽略。重建整个表。请参见“分区维护”。
    REBUILD PARTITION没有是*没有ALGORITHM=INPLACE, LOCK={DEFAULT|SHARED|EXCLUSIVE}支持。
    REPAIR PARTITION没有
    REMOVE PARTITIONING没有没有没有许可证ALGORITHM=COPYLOCK={DEFAULT|SHARED|EXCLUSIVE}

    ALTER TABLE分区表上的非分区联机操作遵循与常规表相同的规则。但是,ALTER TABLE在每个表分区上执行联机操作,由于在多个分区上执行操作而导致对系统资源的需求增加。

    有关ALTER TABLE分区子句的其他信息,请参见“分区选项”和“ ALTER TABLE分区操作”。有关常规分区的信息,请参见分区