在线添加索引

可获得性

本特性自openGauss 1.1.0 版本开始引入。

特性简介

通过create index concurrently语法,以不阻塞DML的方式在线创建索引。

客户价值

创建索引时指定concurrently关键字,可以实现创建过程中不阻塞DML,不阻塞用户在线业务。

特性描述

创建索引时,一般会阻塞其他语句对该索引所依赖表的访问。指定concurrently关键字,对表加的是ShareUpdateExclusiveLock锁,可以实现创建过程中不阻塞DML。

在线添加索引,需要执行先后两次对该表的全表扫描来完成build,第一次扫描的时候创建索引,不阻塞读写操作;第二次扫描的时候合并更新第一次扫描到目前为止发生的变更。由于需要执行两次对表的扫描和build,而且必须等待现有的所有可能对该表执行修改的事务结束。这意味着该索引的创建比正常耗时更长,同时因此带来的CPU和I/O消耗对其他业务也会造成影响。

特性增强

无。

特性约束

  • 在线添加索引时只能指定一个索引的名称。
  • 普通CREATE INDEX命令可以在事务内执行,但是CREATE INDEX CONCURRENTLY不可以在事务内执行。
  • 列存表、分区表和临时表不支持CONCURRENTLY方式创建索引。

依赖关系

无。