小编Amy*_*Amy的帖子

Postgres 加速大表的索引创建

我有一个大型 Postgres 表,其中包含 2+ 十亿个条目(1.5TB),并且大部分是非空的 char var 列。为了加快插入速度,我在批量上传之前删除了索引。但是,现在创建 b 树索引需要很长时间。对于我缩短的运行之一,它花了超过 12 个小时创建索引。

我正在尝试制作的示例表和索引:

        Column         |            Type             | Modifiers 
-----------------------+-----------------------------+-----------
 name                  | character varying           | not null
 id                    | character varying           | 
 lifecycle_id          | character varying           | 
 dt                    | character varying           | 
 address               | character varying           | 
 ...

Indexes: 
"name_idx" PRIMARY KEY, btree (name)

"id_idx" btree (rec_id)

"lifecycle_id_idx" btree (lifecycle_id)
Run Code Online (Sandbox Code Playgroud)

实际表有 18 列。我已将 maintenance_work_mem 设置为 15GB。这是在 RDS 上的 Postgres 9.6.11 上运行的。实例类是 db.m4.4xlarge。

由于有三个索引,在插入之前很难对数据进行排序。只插入数据而不删除索引会更快吗?还有其他加快索引创建的建议吗?

postgresql postgresql-9.6

8
推荐指数
3
解决办法
6940
查看次数

标签 统计

postgresql ×1

postgresql-9.6 ×1