Вопрос: почему отчеты формируются долго?
Одной из причин долгого выполнения запросов и формирования отчетов может быть такое состояние регистров накопления, при котором нужно выполнить полный пересчет их итогов. Это обязательное действие зачастую остается вне поля зрения администраторов 1С и баз данных, как следствие, скорость выборки данных может снизиться на порядок.
Как определить, какие регистры требуют пересчета? Чем полный пересчет отличается от типового регламентного задания «Установка периода рассчитанных итогов»? Почему после пересчета скорость работы не вырастет автоматически? Давайте проанализируем все ключевые аспекты этой в действительности непростой задачи.
Зачем нужен полный пересчет итогов?
Но есть проблема.
Платформа добавляет запись в таблицу итогов при появлении движения по новой комбинации измерений (организации, складу, номенклатуре), но не удаляет их, когда значения по всем ресурсам (количеству, сумме) становятся равными нулю. Например, организация оприходовала 10 ед. товара и отгрузила его покупателю в полном объеме. Остатка нет, но запись в таблице итогов останется.
Со временем количество лишних записей может превысить количество значимых в 10 раз, соответственно, скорость чтения данных может снизиться на порядок. Отчет, который ранее формировался 5 минут, теперь будет формироваться час.
Полный пересчет итогов – это способ удалить из таблицы итогов лишние записи и вернуть регистр в исходное состояние. В результате мы получим не только быстрое формирование отчетов, но и ускорение проведения с контролем отрицательных остатков, а также снижение количества блокировок.
Как определить, какие регистры требуют пересчета?
А вот на практике сделать это непросто, поскольку в базах большого объема провести такой подсчет средствами 1С попросту не получится.
Необходима разработка скрипта для СУБД, который решит поставленную задачу.
А чем тогда занимается регламентное задание «Установка периода рассчитанных итогов»?
Как мы выяснили, полный пересчет итогов – это операция, при которой платформа заново формирует таблицу итогов на основе движений регистра.
Установка периода рассчитанных итогов – это изменение границы, до которой платформа считает итоги актуальными и готовыми к быстрому использованию. При этом в таблицу итогов будут лишь добавлены записи за очередной истекший месяц.
Почему после пересчета скорость работы не вырастет автоматически?
Почему так?
Потому что есть момент, о котором часто забывают. Полный пересчет итогов сам по себе фрагментирует индексы и сбрасывает статистику, по этой причине СУБД начинает строить неоптимальные планы запросов, что и приводит к замедлению работы.
После пересчета итогов необходимо выполнить обслуживание базы данных в СУБД.
Как автоматизировать решение этой проблемы?
- СУБД определит список регистров, требующих пересчета (порог процента лишних записей задается), и поставит 1С задачу на пересчет;
- 1С выполнит эту задачу (расписание задается) и вернет информацию о завершении пересчета определенных регистров;
- СУБД выполнит обслуживание таблиц для восстановления производительности.
После этого будет наблюдаться заметное повышение скорости работы системы.