Postgresql 300gbpostgis表的慢速索引

Postgresql 300gbpostgis表的慢速索引,postgresql,indexing,postgis,pgadmin-4,Postgresql,Indexing,Postgis,Pgadmin 4,我正在将大约300GB的等高线数据加载到postgis表格中。为了加快进程,我读到,首先加载数据,然后创建索引是最快的。加载数据只花了大约2天的时间,但现在我已经等待索引大约30天了,它仍然没有准备好 问题是: create index idx_contour_geom on contour.contour using gist(geom); 我在pgadmin4中运行了它,从那时起,程序的内存消耗从500MB到100GB++不等 用这么长的时间索引这样一个数据库正常吗 关于如何加快这个过程有

我正在将大约300GB的等高线数据加载到postgis表格中。为了加快进程,我读到,首先加载数据,然后创建索引是最快的。加载数据只花了大约2天的时间,但现在我已经等待索引大约30天了,它仍然没有准备好

问题是:

create index idx_contour_geom on contour.contour using gist(geom);
我在pgadmin4中运行了它,从那时起,程序的内存消耗从500MB到100GB++不等

用这么长的时间索引这样一个数据库正常吗

关于如何加快这个过程有什么建议吗

编辑:
数据是从1x1度(lat/lon)单元(约30.000个单元)加载的,因此没有任何一条线的边界框大于1x1度,大多数线的边界框应该小得多。它们位于EPSG:4326投影中,唯一的属性是高度和几何体(geom)。

我将
维护工作\u mem
更改为1GB,并停止了所有其他磁盘写入操作(添加了大量插入操作,占用了大量资源)。我现在跑了23分钟。

请介绍一下轮廓。轮廓结构您是否将
维护\u work\u mem
设置为1GB这样的高值?这是加速索引创建的主要旋钮。尽管如此,时间还是令人惊讶的。CPU忙还是I/O是瓶颈?我没有设置维护工作记忆。这可能就是问题所在。我现在用
altersystemsetmaintenance\u work\u mem='1GB'设置它;选择pg_reload_conf()我不确定是否必须重新启动索引才能生效,但我会让它在周末运行,如果没有帮助的话,在周一重新启动。谢谢@LaurenzAlbe!-(CPU不是很忙,但我很惊讶,当maintenance_work_mem设置得很低时,内存消耗会这么高。)您必须重新启动索引才能使参数生效,但您可以在周末等待。内存占用确实太高,可能是PostGIS或GiST的错误。检查系统是否正在分页(即交换分区上的大量i/O)。这就解释了持续时间过长的原因,然后高
维护工作\u mem
也无济于事。在这种情况下,最好向PostGIS人员寻求帮助。