- Использование слоев для рабочих данных
- Использование локальных данных в ArcGIS Server
- Запись промежуточных данных в память
- Предварительная обработка данных, используемая задачами
- Добавить атрибутивные индексы
- Добавление пространственных индексов
- Использование синхронного режима (вместо асинхронного)
- Избегайте ненужных преобразований координат
- Уменьшение объемов данных
- Различия между 10.0 и более поздними версиями
Клиенты ожидают и требуют быстрого обслуживания, поэтому сервисы геообработки должны быть быстрыми и эффективными. Так как ArcGIS Server может поддерживать несколько клиентов одновременно, неэффективные сервисы могут перегрузить ваш сервер. Чем эффективнее сервисы, тем больше клиентов будет обслуживаться при использовании тех же вычислительных ресурсов.
Ниже приведены рекомендации и средства повышения производительности сервисов. В целом, методы приведены в порядке их значимости – первыми представлены те, которые обеспечивают наивысшее повышение производительности. Несколько последних рекомендаций позволят выиграть десятые доли секунды времени выполнения, что может оказаться достаточным для некоторых задач.
Использование слоев для рабочих данных
При запуске инструментов геообработки для создания публикуемого результата необходимо запустить инструмент с использованием в качестве входных объектов слоев, а не путей к наборам данных на диске. Слой ссылается на набор данных на диске; кроме того, слои кэшируют свойства, относящиеся к набору данных. Это в особенности применимо к слоям наборов сетевых данных и растровым слоям. Использование слоя вместо пути к набору данных имеет определенное преимущество в плане производительности, так как при запуске сервиса создается слой из набора данных, кэшируются базовые свойства набора данных, а сам набор данных остается открытым. При выполнении сервиса свойства набора данных тут же становятся доступными, а набор данных открывается и становится доступным для дальнейших действий, что является повышением производительности.
Например, сервис Видимость (Viewshed) на сервере Esri SampleServer и дополнительный модуль ArcGIS Network Analyst, которые создают полигоны времени пути, используют слои. В зависимости от размера набора данных это может выиграть от 1 до 2 секунд для каждого выполнения сервиса.
Использование локальных данных в ArcGIS Server
Данные проекции, необходимые сервисами геообработки, должны быть локальными по отношению к ArcGIS for Server. Для доступа к данным с общим доступом, расположенным на сетевом ресурсе (UNC), потребуется больше времени, чем для доступа к данным, размещенным на локальном компьютере. Показатели производительности значительно отличаются, однако нередко чтение и запись данных по локальной сети занимает примерно в два раза больше времени, чем при выполнении этих же операций на локальном диске.
Запись промежуточных данных в память
Можно записывать промежуточные данные в память. Запись данных в память происходит быстрее, чем запись данных на диск.
Новой возможностью версии 10.1 является возможность записи растров в память.
Предварительная обработка данных, используемая задачами
Большинство сервисов геообработки предназначены преимущественно для ответов на определенные пространственные запросы, осуществляемые веб-клиентами. Так как задачи зачастую являются определенными операциями с известными данными, всегда есть возможность предварительно обработать данные для оптимизации операций. Например, добавление атрибута или пространственного индекса является простой предварительной обработкой для оптимизации операций выбора атрибутов или пространственных объектов. Другие примеры:
- Учебное руководство Пример сервиса геообработки: водосборная область используется для предварительной обработки гидрологии путем создания суммарного стока и растра направления.
- Можно предварительно рассчитать расстояния от известных местоположений с помощью инструментов Ближайший объект (Near) или Построить таблицу соседних объектов (Generate Near Table). Предположим, сервис позволяет клиентам выбирать свободные участки на заданном пользователем расстоянии от реки Los Angeles River. Можно использовать инструмент Выбрать в слое по расположению (Select Layer By Location) для создания выборки, однако, значительно быстрее предварительно рассчитать расстояние до каждого участка от реки Лос-Анджелес (с помощью инструмента Ближайший объект) и сохранить это расстояние в качестве атрибута участка. Этот атрибут можно индексировать с помощью инструмента Добавить индекс атрибута (Add Attribute Index). Теперь при запросе клиента задача выполнит простой и быстрый выбор атрибута на основе атрибута расстояния, а не будет выполнять менее эффективный пространственный запрос.
Добавить атрибутивные индексы
Если задача состоит в выборе данных с помощью запросов атрибутов, создайте атрибутивный индекс для каждого атрибута, используемого в запросах. Можно использовать инструмент Добавить атрибутивный индекс (Add Attribute Index). Индекс необходимо создать только один раз за пределами модели или скрипта.
Добавление пространственных индексов
Если модель или скрипт выполняет пространственные запросы в шейп-файлах, создайте пространственный индекс для шейп-файла с помощью инструмента Добавить пространственный индекс (Add Spatial Index). Если используются классы объектов базы геоданных, пространственные индексы создаются и поддерживаются автоматически. В некоторых случаях повторный пересчет пространственного индекса может повысить производительность, как описано в разделе Настройка пространственных индексов.
Использование синхронного режима (вместо асинхронного)
Можно указать, должен ли сервис геообработки работать в синхронном или асинхронном режиме. В асинхронном режиме сервер создает небольшое количество дополнительной служебной информации, что означает что асинхронная задача вряд ли будет выполнена менее чем за секунду. Выполнение той же задачи в синхронном режиме занимает десятую доли секунды, то есть оно быстрее, чем в асинхронном режиме.
Избегайте ненужных преобразований координат
Если в задаче используются наборы данных в других системах координат, инструментам геообработки, используемым задачей, может понадобиться преобразовать координаты в единую общую систему координат. В зависимости от размера наборов данных, преобразование координат из одной системы координат в другую может замедлить задачу. Необходимо знать, какая система координат используется в наборах данных и необходимо ли используемым в задаче инструментам преобразовывать эту систему координат. Может понадобиться преобразовать все наборы данных, используемые задачей, в единую систему координат. Дополнительные сведения о системах координат и их влиянии на инструменты геообработки см. в приведенных ниже разделах.
Уменьшение объемов данных
Любое программное обеспечение, которое обрабатывает данные, работает быстрее, если набор данных небольшой. Существует ряд способов уменьшения объема географических данных:
- Удалите ненужные атрибуты в рабочих данных с помощью инструмента Удалить поле (Delete Field).
- Линейные и полигональные объекты имеют вершины, которые определяют их формы. Каждая вершина является координатой x,y. Возможно, что у объектов больше вершин, чем нужно, что излишне увеличивает размер набора данных.
- Если данные поступают из внешнего источника, в них могут содержаться дублированные вершины или вершины, которые так близко расположены друг к другу, что не представляют какой-либо значимости для определения объекта.
- Количество вершин не соответствует масштабу анализа. Например, объекты содержат детали, которые приемлемы на больших масштабах, однако в анализе и представлениях используется небольшой масштаб.
Различия между 10.0 и более поздними версиями
Если вы создавали сервисы геообработки в версии 10.0, для них использовались особые методы повышения производительности, описанные ниже. В версии 10.1 и более поздних версиях использование этих методов не требуется.