Оптимизация производительности БД Docsvision

Счетчики производительности

Счетчики производительности предназначены для получения статистических данных по работе системы Docsvision.

Счетчики Storage Server Methods

Счетчики из категории Storage Server Methods позволяют оценить соотношение времени, затраченного сервером на выполнение тех или иных операций.

Все операции разделены на следующие группы:
  • % Search — все, что относится к поиску.

  • % Data Processing — операции со строками карточек.

  • % Card Processing — операции с самими карточками (создание, удаление).

  • % Cursor Processing — операции с секциями карточек.

  • % File Processing — операции с файлами.

  • % Link Processing — операции с ссылками.

  • % Lock Processing — операции с блокировками.

  • % Log Processing — операции с журналом.

  • % Numerator Processing — операции с нумераторами.

  • % Folder Processing — операции с папками.

  • % Crypto Processing — операции с шифрованием и подписанием.

  • % Security Processing — операции с безопасностью и правами.

  • % View Processing — операции с представлениями.

  • % Transformation Processing — операции с преобразованиями.

  • % Report Processing — операции с расширенными отчётами.

Каждой из этих групп операций (за исключением поиска) соответствует 2 счетчика. Первый из них (его имя совпадает с именем группы) показывает суммарное время, затраченное сервером на выполнение всех операций этой группы. Учитывается только время, которое было затрачено на обработку данных и передачу их клиенту (время чистых вычислений).

Второй счетчик носит то же имя, но с приставкой SQL. Он характеризует только то время, которое было затрачено при выполнении данной группы методов на взаимодействие с базой данных (чтение, изменение, удаление данных).

Таким образом, сложив показания обоих счетчиков, можно получить суммарную величину времени (в секундах), затраченную сервером на выполнение операций данного типа.

На основании показаний этих счетчиков можно оценить, например, какие операции дают наибольшую нагрузку на сервер, или посмотреть распределение нагрузки в зависимости от времени.

Счетчики Storage Server Totals

Счетчики из категории Storage Server Totals позволяют оценить динамику роста нагрузки сервера по времени. В эту категорию входит три счетчика:

  • Method calls — показывает общее число вызванных методов сервера.

  • Operation Time — показывает общее время, затраченное на вычисления.

  • SQL Operation Time — показывает общее время, затраченное на работу с базой данных.

Все счетчики в этой категории являются накопительными, то есть сбрасывать их значения нужно принудительно (это можно сделать в Консоли Настройки Docsvision в разделе "Сервер").

На основе показаний этих счетчиков можно оценить, например, в какие часы суток возникает наибольшая нагрузка на сервер. Периоды наибольшей нагрузки на графике значений счётчиков будут отображаться как наиболее крутые подъемы. Также эти счётчики помогают дать оценку узких мест. Например, какая часть замедляет работу системы: сервер приложений или СУБД.

Оптимизация базы данных при работе с представлениями

Максимальную нагрузку на сервер в Docsvision вызывают операции поиска данных и формирования представлений. Максимальную нагрузку вызывает именно выполнение операций SQL, а не обработка их результатов.

Исходя из этого, повышение общей производительности сервера рекомендуется начинать с настройки базы данных. Поскольку нагрузка на БД очень сильно зависит от специфики конкретного окружения и выполняемых операций, рекомендации по оптимизации могут быть даны только в индивидуальном порядке.

Основным способом такой оптимизации можно считать создание индексов на полях таблиц, с которыми идет наиболее интенсивная работа. Эти таблицы можно выявить профилированием базы данных (при помощи SQL Profiler) и последующим анализом полученных журналов (SQL 2005 может выполнить такой анализ автоматически и самостоятельно выявить таблицы, нуждающиеся в оптимизации).

Также в настройках базы данных рекомендуется отключить опцию Autoshrink, предназначенную для работы одноименного фонового процесса. Если использование опции необходимо, следует запускать процесс во время технологического обслуживания базы данных.

Autoshrink предназначен для сокращения размеров базы (файлов), однако, во время работы он увеличивает нагрузку на ЦП, диски, увеличивает фрагментацию файлов БД, ухудшает состояние индексов и может стать причиной взаимных и даже мертвых блокировок в пользовательских (не системных) транзакциях.

Подробнее про построение индексов и выявление медленных запросов см. Обнаружение медленных запросов В БД.

Кэширование прав доступа

Docsvision может кэшировать результаты расчета прав доступа пользователя к карточке, что может дать небольшой положительный эффект в случае многократной проверки прав на чтение или запись. Сохранённые в кэше данные являются действительными в течение определённого промежутка времени и удаляются при изменении карточки.

Данный механизм управляется значениями ключей, расположенных в ветке реестра HKEY_LOCAL_MACHINE\SOFTWARE\DocsVision\Platform\Server:

  • UseAccessCache (типа DWORD):

    • 0 — кэш выключен (по умолчанию).

    • 1 — включен.

  • AccessCacheTimeout (типа DWORD) — интервал времени (в миллисекундах), когда кэш действителен. Значение по умолчанию — 3 секунды (3000 миллисекунд).

Оптимизация ad hoc запросов

Оптимизация ad hoc запросов должна выполняться только по рекомендации специалиста технической поддержки Docsvision.

Все запросы к Microsoft SQL Server можно разбить на две группы: вызов хранимых процедур, и выполнение т.н. "ad hoc-запросов". В Docsvision к первой группе относятся работа с представлениями и сохранёнными поисковыми запросами, а ко второй группе — различные выборки из карточек (серверный поиск строк секций).

В Microsoft SQL Server существует конфигурация "optimize for ad hoc workloads", оптимальная для работы с "ad hoc"-запросами. При использовании данной конфигурации будет оптимизирована работа с памятью и планами выполнения.

Описание параметра приведено в статье на sdn.microsoft.com; детальный разбор применения в статье на blog.sqlauthority.com.

Настройку можно включить через advanced options следующим образом:
sp_CONFIGURE 'show advanced options',1
RECONFIGURE
GO

sp_CONFIGURE ‘optimize for ad hoc workloads’,1
RECONFIGURE
GO

Настроить автоматический рост размера файлов БД

При создании новой БД Docsvision значение настройки Autogrowth (автоматическое увеличение файлов БД) будет получено из настроек эталонной БД model.

Если в процессе работы Docsvision по счетчикам производительности заметно многократное приращение файла данных или лога в течение рабочего дня, что ведёт к множественным блокировкам файлов БД в моменты увеличения — рекомендуется увеличить размер Autogrowth.

Оптимальное значение Autogrowth определяется эмпирическим путем, и в соответствии с рекомендациями компании Microsoft.