1 测试总结
本次测试目标重点关于shape文件导入导出的效率以及地理空间数据的范围查询性能。范围查询的SQL方式较多,此次测试已如下2种为例:
方式1 select count(*) from city
where se_xmin(geom)>100.5
and se_xmax(geom)<118.5
and and se_ymax(geom)<38.7
and se_ymin(geom)>30.5
方式2 select count(*) from city
where ST_within(geom,ST_Geomfromtext('polygon((100.5 30.5,100.5 38.7,118.5 38.7,118.5 30.5,100.5 30.5))',55063))
范围查询的效率除跟SQL本身语法有关外 SQL返回的结果集所占表总数据量的比重也有很大的影响,本次测试中我们分别已5%、10%、20%等情况比较查询性能的差异,测试结果参考如下:
测试场景 测试细则 测试结果
shape数据导入 Shape文件1.09G 9分32秒(1.96M/s)
shape数据导出 Shape文件1.09G 45.7s(24.4M/s)
范围查询方式1 结果集/全表数据量: 5% 1.572s
结果集/全表数据量: 10% 2.324s
结果集/全表数据量: 20% 2.626s
结果集/全表数据量: 50% 3.148s
范围查询方式2 结果集/全表数据量: 5% 0.949s
结果集/全表数据量: 10% 1.461s
结果集/全表数据量: 20% 2.054s
结果集/全表数据量: 50% 4.497s
2 测试环境
类别 名称 配置 测试表
服务器 一体机 CPU个数: 36
内存:256G
操作系统:Centos release 7.2.1511
数据库版本:GBase8tV8.5.12.10.FC4G1AEE_1.6.3.54
Spatial版本: 8.21.FC6
Shp文件大小:1.09G
总行数:2472428
GIS类型: st_multilinestring
3 性能测试
3.1 数据加载
测试用例名称 GIS数据加载
1 导入坐标信息
infoshp -o create -D test -f cityroad_polyline
2 导入数据
loadshp -o create -l city,geom -f cityroad_polyline -D test -srid <infoshp导入的srid> -c 40000
3 测试结论:9分32秒(1.96M/s)
3.2 数据卸载
1 卸载数据
unloadshp -o init -l city,geom -f cityroad_polyline -D test
2 测试结论:45.7秒(24.4M/s)
3.3 范围查询1
1 执行如下SQL:
select count(*) from city
where se_xmin(geom)>100.5 and se_xmax(geom)<118.5 and se_ymax(geom)<38.5 and se_ymin(geom)>30.5
相关范围根据结果集要求会有相关变化
2 测试结论:
结果集占全表百分比50% 结果集占全表百分比20% 结果集占全表百分比10% 结果集占全表
百分比5%
3.148s 2.626s 2.324s 1.572s
3.4 范围查询2
1 执行如下SQL:
select count(*) from city
where ST_within(geom,ST_Geomfromtext('polygon((100.5 30.5,100.5 38.7,118.5 38.7,118.5 30.5,100.5 30.5))',55063));
相关范围根据结果集要求会有相关变化
2 测试结论:
结果集占全表百分比50% 结果集占全表百分比20% 结果集占全表百分比10% 结果集占全表
百分比5%
4.497s 2.054s 1.461s 0.949s
4 意见及建议
• 建议使用16k页的dbspace存放GIS表。
• 当地理数据量较大时,建议采用分片的方式建表及存储数据。
• 当范围查询结果集较大时,建议开启PDQ加快查询速度。
• 范围查询建议使用ST_Within或者ST_Contains的写法,效率会更高。
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
赞0
添加新评论0 条评论