• WFS: postgresql(postgis)和shp文件查询效率对比


    对GeoServer上的WFS的各种数据源查询效率感兴趣,做个测试。本次测试了Postgresql、geopackage、shp文件三种数据源的查询效率,无论是本机还是服务器环境,pg存储查询效率都比shp要好。

    环境

    • 操作系统 本机=Windows 10 专业版 1903 服务器=Windows Server 2016

    • CPU 本机=i7 9700 服务器=L5xxx

    • 内存 本机&服务器 = 32GB

    • 硬盘 本机=512SSD 服务器=1TB机械

    • geoserver版本:2.16

    • pg版本:10.x

    • 网络环境:公司局域网

    • 代码测试环境:Cesium 1.68 原生自带的请求方法 Cesium.Resource.fetchJson()

    • 测试环境:Microsoft Edge 84.0.488.1 Dev

    预备知识

    • WFS
    • WFS的cql_filter过滤条件

    shapefiles数据信息

    数据名 数据体积 数据量 EPSG 非OBJECTID属性个数
    boundary_vill_sparse 67.9MB 31383 4490 12
    village_mz_sparse 17.0MB 6246 4490 12

    本文基于公司保密数据进行测试,就不提供数据了,感兴趣的朋友可以用全国县级数据进行模拟。

    数据预览:

    boundary_vill_sparse

    village_mz_sparse

    数据入库要求:

    • 均建立索引

    wfs模糊查询效率对比(本机)

    数据名称 数据源 体积 查询用时(6次随机)
    boundary_vill_sparse postgresql 55.65MB [73, 86, 65, 66, 64, 64] / 6 = 69.7ms
    boundary_vill_sparse geopackage 71.70MB [580, 640, 635, 610, 603, 653] / 6 = 620.2ms
    boundary_vill_sparse shapefiles 67.9MB [412, 344, 359, 396, 339, 369] / 6 = 369.8ms
    village_mz_sparse postgresql 13.21MB [52, 68, 29, 26, 70, 60] / 6 = 50.8ms
    village_mz_sparse geopackage 16.82MB [195, 243, 254, 232, 207, 168] / 6 = 216.5ms
    village_mz_sparse shapefiles 17.0MB [124, 162, 154, 162, 161, 119] / 6 = 147ms

    对于shp文件,在geoserver上勾选“若缺少空间索引,则构建空间索引”选项加速索引。

    分析

    纵向对比,同一份文件,pg的WFS查询效率远高于shp文件。geopackage作为sqlite的一种实现,适合用来做数据交换以替代shp文件的编辑功能,不适用于查询。

    横向对比,数据量越大,pg的优势越明显。数据量大的全省村落行政区数据,比数据量小的梅州局部数据有明显优势(约3倍vs约6倍)。

    除此之外,pg还有数据压缩方面的优势,约能节约相对于shp文件20%~30%的文件体积。

    对于geopackage,文件体积没有太大变化,可以牺牲稍微多出来的一点空间解决二维数据编辑交换的各种中文不兼容问题。spatiallite未测试。

    wfs模糊查询效率对比(服务器)

    数据名称 数据源 查询用时(6次随机)
    boundary_vill_sparse postgresql [419, 354, 411, 425, 360, 362] / 6 = 388.5ms
    boundary_vill_sparse geopackage [3.60, 3.37, 3.42, 3.31, 3.36, 3.17] / 6 = 3.37s
    boundary_vill_sparse shapefiles [1.94, 1.84, 1.87, 1.48, 1.93, 1.83] / 6 = 1.81s
    village_mz_sparse postgresql [320, 316, 314, 316, 316, 312] / 6 = 315.7ms
    village_mz_sparse geopackage [1.17, 1.01, 1.00, 1.01, 1.01, 1.01] / 6 = 1.04s
    village_mz_sparse shapefiles [656, 640, 636, 639, 637, 637] / 6 = 640.8ms

    分析

    在服务器环境shp文件发布的WFS查询时间极其不稳定,有时候会剧增到十几秒,有的时候一秒多,有的时候几秒钟。估计是磁盘IO占用。

    总的来说,shp文件的查询效率在数据量越大的时候,无论是服务器环境,还是本地环境,都是不如pg的。

    至于geopackage,这个仅适合做交换格式,以覆盖shp文件中文不兼容的情况。

    版权所有。B站/小专栏/知乎/csdn/博客园 @秋意正寒

  • 相关阅读:
    Java线程专题 3:java内存模型
    Java线程专题 2:synchronized理解
    Java线程专题 1:线程创建
    设计模式七大原则
    JVM 运行时数据区
    css_selector定位,比xpath速度快,语法简洁
    xpath绝对定位和相对定位
    selenium多种定位
    操作浏览器基本元素(不定时更新)
    爬取网页图片并且下载(1)
  • 原文地址:https://www.cnblogs.com/onsummer/p/12795646.html
Copyright © 2020-2023  润新知