云数据库 GaussDB-REINDEX:参数说明

时间:2023-11-01 16:22:17

参数说明

  • INDEX

    重新建立指定的索引。

  • INTERNAL TABLE

    重建列存表的Desc表的索引,如果表有从属的"TOAST"表,则这个表也会重建索引。

  • TABLE

    重新建立指定表的所有索引,如果表有从属的"TOAST"表,则这个表也会重建索引。如果表上有索引已经被alter unusable失效,则这个索引无法被重新创建。当指定CONCURRENTLY选项时,暂不支持重建从属"TOAST"表上的索引。

  • DATABASE

    重建当前数据库里的所有索引。当指定CONCURRENTLY选项时,暂不支持重建数据库中表的从属"TOAST"表上的索引。

  • SYSTEM

    在当前数据库上重建所有系统表上的索引。不会处理在用户表上的索引。

  • CONCURRENTLY

    以不阻塞DML的方式重建索引(加ShareUpdateExclusiveLock锁)。重建索引时,一般会阻塞其他语句对该索引所依赖表的访问。指定此关键字,可以实现重建过程中不阻塞DML。不支持在线重建系统表上的索引。不支持REINDEX INTERNAL TABLE CONCURRENTLY和REINDEX SYSTEM CONCURRENTLY。当执行REINDEX DATABASE CONCURRENTLY时,在线重建当前数据库中用户表上的所有索引(不会处理系统表上的索引)。REINDEX CONCURRENTLY不可以在事务内执行。在线重建索引只支持B-tree索引和UB-tree索引,只支持普通索引、GLOBAL索引、LOCAL索引。在线并行重建索引只支持Astore的普通索引、GLOBAL索引、LOCAL索引。如果在线重建索引失败,可能会留下非法的新索引,在系统无法自动清理失败新索引的情况下(比如数据库宕机),需要尽快手动清除(使用DROP INDEX语句)非法新索引,以防占用更多资源。一般来说,非法的新索引的后缀名为_ccnew。REINDEX INDEX CONCURRENTLY对表加4级会话锁,且其前几个阶段与CREATE INDEX CONCURRENTLY相似,因此也可能产生卡住或死锁的问题,具体场景与CREATE INDEX CONCURRENTLY相似(比如两个会话同时对同一个索引或表进行REINDEX CONCURRENTLY操作,会引发死锁问题),详见CONCURRENTLY章节。

  • name

    需要重建索引的索引、表、数据库的名称。表和索引可以有模式修饰。

    REINDEX DATABASE和SYSTEM只能重建当前数据库的索引,所以name必须和当前数据库名称相同。

  • FORCE

    废弃选项,仅为保持前向兼容,故继续保留。

  • partition_name

    需要重建索引的分区的名称或者索引分区的名称。

    取值范围:

    • 如果前面是REINDEX INDEX,则这里应该指定索引分区的名称;
    • 如果前面是REINDEX TABLE,则这里应该指定分区的名称;
    • 如果前面是REINDEX INTERNAL TABLE,则这里应该指定列存分区表的分区的名称。

REINDEX DATABASE和SYSTEM这种形式的重建索引不能在事务块中执行。

support.huaweicloud.com/distributed-devg-v3-opengauss/gaussdb-12-0618.html