Ускоритель запросов в файловых базах 1с8

Предлагается простая для внедрения в любую конфигурацию методика ускорения выполнения запросов в файловых базах 1с8. Суть идеи – выполнять запросы в специально запущенном клиенте на том же компьютере, где находится база. За счет этого удается существенно, в 5-10 раз ускорить выполнение запросов.

 

Предыстория: Ко мне обратились складские работники. Т.к. количество пользователей базы 1с8 было небольшое, то им поставили файловую базу. Но запросы выполнялись очень тяжелые, а база весила около 20 Гб. Поэтому запросы работали очень медленно. Причем на центральном компьютере типичный запрос выполнялся 1 минуту, а на компьютерах сети – 5 минут. Нужно было как-то ускорять запросы. И тогда я придумал способ, при котором запросы выполняются на центральном компьютере. Скорость работы нормализовалась до той самой одной минуты.

Запуск сервера

На компьютере, где находится база, запускается сервер менеджера запросов:

Путь – это путь к базе данных, определяется автоматически.

Один менджер может обрабатывать несколько клиентов, формирующих запросы, при этом запросы ставятся в очередь.

Если требуется параллельное выполнение запросов, нужно запустить несколько экземпляров 1с на компьютере с базой, в каждом указать свой номер соединения.

Для запуска менеджера запросов нужно нажать кнопку «Запустить».

При запуске сервера удаляются все предыдущие, старые, запросы по этому номеру соединения, если не установлена Галочка «При запуске не удалять запросы».

Работу сервера можно прервать кнопкой CTRL+Pause.

Запуск клиента

На компьютере в локальной сети нужно запустить менеджер запросов на закладке «Клиент». Включить/ выключить использование менеджера запросов, указать желаемый номер соединения. Затем нажать кнопку «Установить».

Эти настройки запоминаются в настройках базы данных (СохранитьЗначение). Повторно их можно не настраивать.

 

 

Отключение использования менеджера запросов может понадобиться, когда менеджер запросов недоступен, например, сотрудники не имеют доступ к серверу.

Пока клиент ожидает обработки запроса сервером, выдается сообщение «Ждем ответ от менеджера запросов…», выполнение в этом месте можно прервать по CTRL+PAUSE.

Взаимодействие клиента и сервера

Для проверки взаимодействия клиента и сервера:

  1. Запустим сервер на соединении 1.
  2. Установим на клиенте номер соединения 1.
  3. Нажмем на клиенте кнопку «Проверить». При этом будет выполнен тестовый запрос «ВЫБРАТЬ * ИЗ Константы» и выведен его результат:
  4. На сервере можно увидеть протокол обработки запроса:

Особенности работы

Для обмена файлами используется каталог «Queries» в каталоге базы данных. При необходимости он создается.

Запрос передается как сериализированная в файл структура. Ответ выдается как сериализированный результат выполнения запроса.

Файлы запросов и ответов имеют префиксы query и answer соответственно, за которыми следует номер соединения и уникальный GUID запроса. Расширение txt.

Обработка хорошо оттестирована на практике. Были проблемы с блокировкой файлов при редких стечениях обстоятельств, они были выявлены и изолированы специальными условиями. Так что можно смело применять! Они были выявлены и изолированы специальными условиями. Так что можно смело применять!

Методика внедрения

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

Все вызовы запросов, которые вы хотите ускорить нужно заменить с кода вида:

Результат = З.Выполнить();

На следующий код:

Результат = пимМенеджерЗапросов.ВыполнитьЗапрос(З);

 

Скачать