Использование описанных в этом разделе рекомендаций позволит повысить быстродействие пространственных запросов. При этом вам придется вручную рассчитывать размер пространственного индекса сетки в Oracle и DB2.
Размер ячейки сетки влияет на размер таблицы пространственного индекса. При настройке пространственного индекса необходимо установить оптимальный размер для ячеек – при использовании ячеек с небольшим размером потребуется больше ячеек на геометрию объекта, в результате чего потребуется больше записей в таблице пространственного индекса.
При использовании клиентских приложений третьих лиц, структура приложений и пространственных данных могут быть разными, что будет зависеть от системы. В таких случаях, возможно, придется поэкспериментировать с пространственным индексом и попробовать разные размеры ячеек и разные конфигурации иерархических уровней сетки.
- Подумайте, сколько необходимо уровней сетки, и помните, что оптимизатор базы данных сканирует таблицу пространственного индекса один раз для каждого уровня. Часто лучшим решением будет использование одного уровня сетки для класса пространственных объектов, несмотря на методику предельного уменьшения количества записей пространственного индекса за счет равномерного распределения геометрий по нескольким уровням сетки.
- Используйте один уровень сетки для классов пространственных объектов простого точечного типа и подумайте о возможности использования ячеек крупного размера. Пространственные запросы обычно быстрее обрабатывают точечные геометрии, чем геометрии других типов.
- Наблюдение за пространственным индексом. Настройка пространственного индекса становится затруднительной при частом изменении данных. Настройка зависит от структуры пространственных данных. Выполняйте периодическую оценку пространственного индекса по мере изменения пространственных данных.
- Стройте пространственный индекс с учетом приложения. Подбирайте размеры ячеек сетки пространственного индекса под размер окна приложения. При таком подходе приложение с наибольшей степенью вероятности будет точно считывать записи из таблицы пространственного индекса. Это позволяет установить соответствующий размер для таблицы пространственного индекса и уменьшить объем обработки, поскольку потребуется проводить оценку для меньшего количества идентификаторов возможных пространственных объектов по таблице пространственных объектов.
- Если параметры окон приложения неизвестны или изменяются, для начала установите размер ячейки для одного уровня сетки в три раза больший, чем средний размер экстента пространственного объекта. Выполните запрос к бизнес-таблице для получения среднего размера объекта. Приведенное выражение SQL берет средний размер объекта сервиса объектов Oracle:(где <N> – это пространственная таблица, а shape – столбец геометрии таблицы <N>). Такая конфигурация пространственного индекса предельно уменьшает количество строк в таблице пространственного индекса, так как на пространственные объекты может ссылаться менее одной или двух ячеек сетки.
SELECT (AVG(SDE.ST_MAXX(shape) – SDE.ST_MINX(shape)) + AVG(SDE.ST_MAXY(shape) – SDE.ST_MINY(shape))) / 2 from <N>;
- При проектировании пространственной таблицы учитывайте такие категории пространственных данных как тип, размер геометрии и распределение. Во многих случаях класс пространственных объектов, тщательно спроектированный с помощью этих категорий, может значительно повысить производительность пространственных запросов.
Если данные создаются с помощью ArcGIS Desktop, то индекс пространственной сетки будет рассчитан автоматически.
Для получения более подробной информации по расчету индекса сетки модуля Spatial Extender базы DB2 см. руководство IBM DB2 Spatial Extender and Geodetic Extender User's Guide and Reference.