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

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

Функциональность счётчиков производительности — встроенный механизм ОС Windows и не работает в ОС Linux.

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

Максимальную нагрузку на сервер в 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.