【openGauss】openGauss如何并行创建索引
一、问题现象:
对大表创建索引比较耗时,如果我们希望缩短索引创建时间可以使用并行创建索引特性
二、解决方案:
步骤1:检查索引并行度
索引并行度由表级参数parallel_workers控制,执行以下SQL,检查索引当前索引并行度。
select reloptions from pg_class where relname='表名'
输出示例如下:
['orientation=row','compression=no','storage_type=USTORE']
步骤2:设置索引并行度
根据目前数据库实例的CPU规格和CPU负载情况,设置合理的索引并行度。建议不超过CPU核数的一半,有业务负载时再酌情降低。
如索引并行度已设置,且和期望一致,跳过步骤2
alter table 表名 set (parallel_workers=8);
再次检查索引当前索引并行度
select reloptions from pg_class where relname='表名'
输出示例如下:
['orientation=row','compression=no','storage_type=USTORE','parallel_workers=8']
步骤3:创建索引
SET maintenance_work_mem = '8GB';
CREATE INDEX ....
注意事项:
并行创建索引不能和CREATE INDEX CONCURRENTLY
特性并用。如果希望以CONCURRENTLY方式加速创建多个索引,可以打开多个终端,在不同终端分别创建不同索引。