15.12.1 Online DDL操作

本章节提供DDL操作的在线支持详情,语法示例和使用说明。

  • [索引操作]
  • [主键操作]
  • [列操作]
  • [生成列操作]
  • [外键操作]
  • [表操作]
  • [分区操作]

索引操作 #

下表提供了对索引操作的online DDL支持的概述。星号表示附加信息,例外,或者依赖。详情请查阅 语法和使用说明

表 15.16 索引操作的Online DDL支持

操作即时就地重建表允许并发DML只修改元数据
创建或添加二级索引
删除索引
重命名索引
添加全文索引是*否*
添加控件索引
修改索引类型

语法和使用说明 #

  • 创建或添加二级索引

    create index name on table (col_list);
    
    alter table tbl_name add index name (col_list);
    

    在创建索引期间,对于读操作和写操作,表仍然可用。只有在所有访问表的事务完成之后,CREATE INDEX语句才会结束。这样,索引的初始状态就能反映表的最新内容。

    添加二级索引时的Online DDL支持,意味着通过创建不带二级索引的表,然后在装载数据之后再添加二级索引,你可以加速创建和加载表以及相关索引的过程。

    一个新添加的索引只包含在create index或alter table语句执行完成时已提交的的数据。它不会包含任何未提交的值,旧版本的值,或被标记为删除但是没有从旧索引上移除的值。

    一些因素会影响性能,空间使用,或语义。想了解详情,请查阅章节Online 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;
    
  • 添加全文索引

    create fulltext index name on table(column);
    

    如果没有用户自定义的FTS_DOC_ID列,添加第一个全文索引时会创建整张表。在创建更多的全网索引时就不会重建表了。

  • 添加控件索引

    CREATE TABLE geom (g GEOMETRY NOT NULL);
        ALTER TABLE geom ADD SPATIAL INDEX(g), ALGORITHM=INPLACE, LOCK=SHARED;
    
  • 修改索引类型(USING {BTREE | HASH})

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