本节主要介绍SuperMap SDX + 的优化策略,您可以根据需要选择适合自己的优化方式。
硬件平台对GIS系统的性能仍起着重要作用,但硬件并不是越昂贵就越合适,必须根据系统的需求进行合理规划,选择适合自己GIS系统的高性价比硬件平台。
下面是选择硬件平台时可以参考的选项:
SuperMap SDX + 数据引擎,需要访问大量的空间数据。在数据访问过程中,对内存访问的性能远远高于对磁盘访问,因此,数据库系统和SuperMap SDX+ 都尽可能充分利用内存进行操作和处理,并在内存中缓存一部分数据,所以无论对于关系型数据库系统(DBMS)还是SuperMap SDX + ,提高内存容量都会明显提升性能。
在数据访问过程中,还需要频繁访问硬盘,因此硬盘的性能对SuperMap SDX +的性能有着直接的影响。数据放在转速高的硬盘,可以获得更高的数据访问速度。
SuperMap SDX + 中的网络数据引擎和空间数据库引擎是实时的空间数据访问技术,网络速度对数据传输的性能有重要影响。例如一个基于空间数据库技术的GIS应用系统,运行在100兆网络上的性能要明显优于10兆网络。并发用户数量越多,网络带宽需求越高。另外,在一个并发用户数量较多的局域网络环境中,网络交换机或集线器的背板带宽也很重要,如在100兆的局域网环境下,可考虑采用1000兆或更高的背板带宽交换机或集线器。
文件缓存是SuperMap SDX+为均衡网络和服务器负载、提高应用整体性能而提供的智能分布式存储方案。开启文件缓存功能后,应用程序在访问存储在空间数据库或网络服务器中的数据时,会首先检查本地缓存库中是否已经有相应数据的最新版本,如果没有相应的缓存数据或是缓存数据不是最新版本,则从服务器端读取数据并更新本地缓存数据,这样下次访问的时候就可以直接读取本地缓存数据;如果本地缓存中已经有了相应数据的最新版本,则不必通过网络向服务器请求数据,而是直接读取本地缓存数据来完成显示或分析的功能。通过这种解决方案,可以大幅降低数据库服务器负载和网络负载,从而大幅提高应用程序的整体性能。
下面举例说明使用缓存模式与不使用缓存模式显示速度的差异。测试数据:某市1:500地形图的线状地物数据集(记录数:69万);服务器:普通PC兼容机、CPU(P4 2.4)、内存(DDR 1024M)、硬盘(7200转);客户端与服务器为同一台机器。
以下测试均为数据全幅显示,测试三次并求平均值:
模式 | 项 | 时间(秒) |
非缓存模式 | 第一次 | 9.50 |
第二次 | 9.41 | |
第三次 | 9.32 | |
平均值 | 9.41 | |
缓存模式 | 第一次 | 3.56 |
第二次 | 3.40 | |
第三次 | 3.50 | |
平均值 | 3.49 |
从上表可以看出,缓存模式的显示速度要远远快于非缓存模式,因此,若数据不是频繁变更,请选择使用文件缓存模式。
Layer的MinVisibleGeometrySize属性值决定几何对象的最小可见大小,以像素为单位,默认值为4。设置此属性后,如果对象的显示尺寸小于此值,将不显示此对象。
对于数据量较大或很大(记录数大于50000)的线、面、网络等数据集,为Layer设置合适的MinVisibleGeometrySize属性值可以取得很好的优化效果。
测试数据:某市1:500地形图的线状地物数据集(记录数:69万)
服务器:普通PC兼容机,CPU:P4 2.4 内存:DDR 1024M 硬盘:7200转
客户端:普通PC兼容机,CPU:PIII 667 内存:256 硬盘:5400转
以下测试均为数据全幅显示,测试三次并求平均值:
0 | 1 | 2 | 3 | 4 | 5 | |
第一次 | 19.75秒 | 15.60秒 | 14.62秒 | 13.81秒 | 13.65秒 | 13.51秒 |
第二次 | 19.59秒 | 15.28秒 | 14.84秒 | 13.90秒 | 13.91秒 | 13.66秒 |
第三次 | 19.31秒 | 15.41秒 | 14.32秒 | 13.91秒 | 13.85秒 | 13.44秒 |
平均值 | 19.55秒 | 15.43秒 | 15.43秒 | 13.87秒 | 13.80秒 | 13.64秒 |
通过上面的对比,得出如下结论:
针对您的系统数据,也可以通过对比测试找到性能与显示效果的最佳切入点。Layer的MinVisibleGeometrySize值推荐范围:0~5。
SuperMap SDX+ 提供了四种空间索引来提高数据访问速度,包括:
SuperMap SDX + 在将数据导入到数据库中时会自动为其建立空间索引(在最新版本中,默认索引类型是多级网格索引),您也可以根据自己的需要建立其他索引。
随着数据的变更(添加、删除和修改),会出现不完整的空间索引,当修改的数据量很大时,会影响数据的访问速度,这个时候需要更新或重建索引。IsSpatialIndexDirty判断矢量数据集中空间索引是否需要重建,若IsSpatialIndexDirty值为TRUE,则需要重建索引;若IsSpatialIndexDirty值为FALSE,则不需要重建索引。
在使用SuperMap进行二次开发的过程中,如果需要频繁使用某一字段的值进行定位、查询等操作,若为此类字段建立索引,这样可以很大程度地提高程序运行的效率。
SuperMap的影像金字塔技术可以轻松地胜任海量影像数据的组织管理,使用SuperMap影像金字塔技术,可以实现与数据量无关、显示区域无关的海量影像数据的流畅漫游。
对于比较大的影像数据,建立影像金字塔可以明显提高影像数据的显示速度。举例说明如下,数据文件:北京地区(局部)547平方公里遥感卫星影像(共10图幅);像素格式:24位真彩;总像素数:2606464372;原始数据大小:7457.15438M,下表为未建立影像金字塔与已建立影像金字塔的全副显示和放大显示时间对比。
未建立影像金字塔 | 已建立影像金字塔 | |
全幅显示 | 14分28秒 | <0.5秒 |
放大2倍 | 6分35秒 | <0.5秒 |
放大4倍 | 4分10秒 | <0.5秒 |
放大8倍 | 1分57秒 | <0.5秒 |
放大16倍 | 1分02秒 | <0.5秒 |
放大32倍 | 24秒 | <0.5秒 |
放大64倍 | 8.06秒 | <0.5秒 |
从上表可以看出,将近7.5G的影像数据,SuperMap可以保证任意区域、任意范围的浏览显示时间控制在1秒以内,为海量影像数据的组织管理及使用提供了令人放心的解决方案。