在线添加索引
可获得性
本特性自openGauss 1.1.0版本开始引入。
特性简介
通过create index concurrently语法,以不阻塞DML的方式在线创建索引。
客户价值
创建索引时指定concurrently关键字,可以实现创建过程中不阻塞DML,不阻塞用户在线业务。
特性描述
创建索引时,一般会阻塞其他语句对该索引所依赖表的访问。指定concurrently关键字,加表加的是ShareUpdateExclusiveLock锁,可以实现创建过程中不阻塞DML。
在线添加索引,需要执行先后两次对该表的全表扫描来完成build,第一次扫描的时候创建索引,不阻塞读写操作;第二次扫描的时候合并更新第一次扫描到目前为止发生的变更。由于需要执行两次对表的扫描和build,而且必须等待现有的所有可能对该表执行修改的事务结束。这意味着该索引的创建比正常耗时更长,同时因此带来的CPU和I/O消耗对其他业务也会造成影响。
特性增强
无。
特性约束
- 在线添加索引时只能指定一个索引的名称。
- 普通CREATE INDEX命令可以在事务内执行,但是CREATE INDEX CONCURRENTLY不可以在事务内执行。
- 列存表、分区表和临时表不支持CONCURRENTLY方式创建索引。
依赖关系
无。