我在PostgreSQL中有一个具有以下结构的数据库:
@media(max-width: 500px) {
.logo {
font-size: 1.5em;
}
}
数据库包含约146.000.000条记录,包含该数据的表的大小为:
Column | Type | Collation | Nullable | Default
-------------+-----------------------+-----------+----------+------------------------------------------------
vessel_hash | integer | | not null | nextval('samplecol_vessel_hash_seq'::regclass)
status | character varying(50) | | |
station | character varying(50) | | |
speed | character varying(10) | | |
longitude | numeric(12,8) | | |
latitude | numeric(12,8) | | |
course | character varying(50) | | |
heading | character varying(50) | | |
timestamp | character varying(50) | | |
the_geom | geometry | | |
Check constraints:
"enforce_dims_the_geom" CHECK (st_ndims(the_geom) = 2)
"enforce_geotype_geom" CHECK (geometrytype(the_geom) = 'POINT'::text OR the_geom IS NULL)
"enforce_srid_the_geom" CHECK (st_srid(the_geom) = 4326)
我尝试使用以下命令在几何字段public | samplecol | table | postgres | 31 GB |
上创建GIST索引:
the_geom
但是需要太长时间。它已经运行了2个小时。
基于这个问题Slow indexing of 300GB Postgis table Ask Question,在创建索引之前,我在psql控制台中执行了
:create index samplecol_the_geom_gist on samplecol using gist (the_geom);
但是创建索引花费的时间太长。有人知道为什么吗?如何解决这个问题?
答案 0 :(得分:1)
恐怕您必须将其搁置。
除了maintenance_work_mem
高以外,实际上没有调整选项。
增加max_wal_size
会有所帮助,因为您得到的检查点会更少。
如果您不能长时间使用ACCESS EXCLUSIVE
锁,请尝试使用CREATE INDEX CONCURRENTLY
,这会更慢,但不会阻止并发数据库活动。