Предлагается простая для внедрения в любую конфигурацию методика ускорения выполнения запросов в файловых базах 1с8. Суть идеи – выполнять запросы в специально запущенном клиенте на том же компьютере, где находится база. За счет этого удается существенно, в 5-10 раз ускорить выполнение запросов.
Предыстория: Ко мне обратились складские работники. Т.к. количество пользователей базы 1с8 было небольшое, то им поставили файловую базу. Но запросы выполнялись очень тяжелые, а база весила около 20 Гб. Поэтому запросы работали очень медленно. Причем на центральном компьютере типичный запрос выполнялся 1 минуту, а на компьютерах сети – 5 минут. Нужно было как-то ускорять запросы. И тогда я придумал способ, при котором запросы выполняются на центральном компьютере. Скорость работы нормализовалась до той самой одной минуты.
На компьютере, где находится база, запускается сервер менеджера запросов:
Путь – это путь к базе данных, определяется автоматически.
Один менджер может обрабатывать несколько клиентов, формирующих запросы, при этом запросы ставятся в очередь.
Если требуется параллельное выполнение запросов, нужно запустить несколько экземпляров 1с на компьютере с базой, в каждом указать свой номер соединения.
Для запуска менеджера запросов нужно нажать кнопку «Запустить».
При запуске сервера удаляются все предыдущие, старые, запросы по этому номеру соединения, если не установлена Галочка «При запуске не удалять запросы».
Работу сервера можно прервать кнопкой CTRL+Pause.
На компьютере в локальной сети нужно запустить менеджер запросов на закладке «Клиент». Включить/ выключить использование менеджера запросов, указать желаемый номер соединения. Затем нажать кнопку «Установить».
Эти настройки запоминаются в настройках базы данных (СохранитьЗначение). Повторно их можно не настраивать.
Отключение использования менеджера запросов может понадобиться, когда менеджер запросов недоступен, например, сотрудники не имеют доступ к серверу.
Пока клиент ожидает обработки запроса сервером, выдается сообщение «Ждем ответ от менеджера запросов…», выполнение в этом месте можно прервать по CTRL+PAUSE.
Для проверки взаимодействия клиента и сервера:
Для обмена файлами используется каталог «Queries» в каталоге базы данных. При необходимости он создается.
Запрос передается как сериализированная в файл структура. Ответ выдается как сериализированный результат выполнения запроса.
Файлы запросов и ответов имеют префиксы query и answer соответственно, за которыми следует номер соединения и уникальный GUID запроса. Расширение txt.
Обработка хорошо оттестирована на практике. Были проблемы с блокировкой файлов при редких стечениях обстоятельств, они были выявлены и изолированы специальными условиями. Так что можно смело применять! Они были выявлены и изолированы специальными условиями. Так что можно смело применять!
Помимо обработки, добавьте в конфигурацию клиентский не глобальный модуль пимМенеджерЗапросов (текст прилагается в архиве).
Все вызовы запросов, которые вы хотите ускорить нужно заменить с кода вида:
Результат = З.Выполнить();
На следующий код:
Результат = пимМенеджерЗапросов.ВыполнитьЗапрос(З);