【问题标题】:Geoserver creates slow PSQL queriesGeoserver 创建缓慢的 PSQL 查询
【发布时间】:2019-02-28 20:17:53
【问题描述】:

我在使用 Geoserver + PostGIS 时遇到了一些缓慢。过滤图层需要大量时间让 Geoserver 渲染切片。

例如,我有一个需要显示的 ID 数组,所以我制作了一个 CQL_FILTER

CQL_FILTER="id IN ('1', '2')"

我检查了 PSQL 中的查询记录器,查询看起来像

SELECT "objectid",encode(ST_AsBinary(ST_Force2D("the_geom")),'base64') as "the_geom" FROM "public"."table" WHERE ((("id" = '1' AND "id" IS NOT NULL ) OR ("id" = '2' AND "id" IS NOT NULL )

当然,我需要查询数百个 ID,而 PSQL 查询大约需要 30 秒才能完成。但如果我只是做这个查询:

SELECT "objectid",encode(ST_AsBinary(ST_Force2D("the_geom")),'base64') as "the_geom" FROM "public"."table" WHERE id IN ('1', '2')

查询在约 1 秒内完成。有没有办法“优化” GeoServer 编写查询的方式?

我尝试通过增加缓存大小、优化 M2 SSD 和预热来优化 PSQL 服务器

谢谢!

编辑:

删除 ID 为 null 的行,将 NOT NULL 语句添加到 PSQL 内的列并重新加载 GeoServer 内的层从查询中删除了 "id" IS NOT NULL,查询时间是以前的一半,但是它仍然不够好。它真的应该只是一个简单的IN 查询。

【问题讨论】:

    标签: gis psql geoserver


    【解决方案1】:

    将 PSQL 升级到 10.2 解决了这个问题,索引仍然不用于 OR 查询,但速度提高了 10 倍。

    【讨论】:

      猜你喜欢
      • 2019-08-06
      • 2011-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-04
      • 2020-06-10
      • 2012-01-15
      • 1970-01-01
      相关资源
      最近更新 更多