對GeoServer上的WFS的各種數(shù)據(jù)源查詢效率感興趣,做個測試。本次測試了Postgresql、geopackage、shp文件三種數(shù)據(jù)源的查詢效率,無論是本機還是服務(wù)器環(huán)境,pg存儲查詢效率都比shp要好。
環(huán)境
-
操作系統(tǒng) 本機=Windows 10 專業(yè)版 1903 服務(wù)器=Windows Server 2016
-
CPU 本機=i7 9700 服務(wù)器=L5xxx
-
內(nèi)存 本機&服務(wù)器 = 32GB
-
硬盤 本機=512SSD 服務(wù)器=1TB機械
-
geoserver版本:2.16
-
pg版本:10.x
-
網(wǎng)絡(luò)環(huán)境:公司局域網(wǎng)
-
代碼測試環(huán)境:Cesium 1.68 原生自帶的請求方法 Cesium.Resource.fetchJson()
-
測試環(huán)境:Microsoft Edge 84.0.488.1 Dev
預(yù)備知識
shapefiles數(shù)據(jù)信息
數(shù)據(jù)名 |
數(shù)據(jù)體積 |
數(shù)據(jù)量 |
EPSG |
非OBJECTID屬性個數(shù) |
boundary_vill_sparse |
67.9MB |
31383 |
4490 |
12 |
village_mz_sparse |
17.0MB |
6246 |
4490 |
12 |
本文基于公司保密數(shù)據(jù)進(jìn)行測試,就不提供數(shù)據(jù)了,感興趣的朋友可以用全國縣級數(shù)據(jù)進(jìn)行模擬。
數(shù)據(jù)預(yù)覽:


數(shù)據(jù)入庫要求:
wfs模糊查詢效率對比(本機)
數(shù)據(jù)名稱 |
數(shù)據(jù)源 |
體積 |
查詢用時(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上勾選“若缺少空間索引,則構(gòu)建空間索引”選項加速索引。
分析
縱向?qū)Ρ?,同一份文件,pg的WFS查詢效率遠(yuǎn)高于shp文件。geopackage作為sqlite的一種實現(xiàn),適合用來做數(shù)據(jù)交換以替代shp文件的編輯功能,不適用于查詢。
橫向?qū)Ρ?,?shù)據(jù)量越大,pg的優(yōu)勢越明顯。數(shù)據(jù)量大的全省村落行政區(qū)數(shù)據(jù),比數(shù)據(jù)量小的梅州局部數(shù)據(jù)有明顯優(yōu)勢(約3倍vs約6倍)。
除此之外,pg還有數(shù)據(jù)壓縮方面的優(yōu)勢,約能節(jié)約相對于shp文件20%~30%的文件體積。
對于geopackage,文件體積沒有太大變化,可以犧牲稍微多出來的一點空間解決二維數(shù)據(jù)編輯交換的各種中文不兼容問題。spatiallite未測試。
wfs模糊查詢效率對比(服務(wù)器)
數(shù)據(jù)名稱 |
數(shù)據(jù)源 |
查詢用時(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 |
分析
在服務(wù)器環(huán)境shp文件發(fā)布的WFS查詢時間極其不穩(wěn)定,有時候會劇增到十幾秒,有的時候一秒多,有的時候幾秒鐘。估計是磁盤IO占用。
總的來說,shp文件的查詢效率在數(shù)據(jù)量越大的時候,無論是服務(wù)器環(huán)境,還是本地環(huán)境,都是不如pg的。
至于geopackage,這個僅適合做交換格式,以覆蓋shp文件中文不兼容的情況。
版權(quán)所有。B站/小專欄/知乎/csdn/博客園 @秋意正寒
|