При эксплуатации системы 1С:Зарплата и Управление Персоналом 3.1 системные администраторы и программисты часто сталкиваются с ситуацией, когда размер файла выгрузки (.dt) начинает расти в геометрической прогрессии после обновления релиза. В этой статье мы подробно разберем, почему это происходит, как найти «тяжелые» таблицы и какие шаги предпринять для оптимизации дискового пространства без вреда для учета.
Первым делом нам необходимо выяснить, какая именно часть базы данных начала занимать аномально много места. Если база клиент-серверная (на базе MS SQL Server или PostgreSQL), мы можем проанализировать размер таблиц напрямую через средства СУБД. Рассмотрим пример запроса для поиска самых больших таблиц. Если вы используете PostgreSQL, можно применить следующий скрипт:
SELECT table_name,
pg_size_pretty(table_size) AS table_size,
pg_size_pretty(indexes_size) AS indexes_size,
pg_size_pretty(total_size) AS total_size
FROM (
SELECT table_name,
pg_table_size(table_name) AS table_size,
pg_indexes_size(table_name) AS indexes_size,
pg_total_relation_size(table_name) AS total_size
FROM (
SELECT ('"' || table_schema || '"."' || table_name || '"') AS table_name
FROM information_schema.tables
) AS all_tables
ORDER BY total_size DESC
) AS pretty_sizes
Для пользователей MS SQL Server аналогичную информацию можно получить через стандартный отчет "Disk Usage by Top Tables" (в SQL Server Management Studio — правой кнопкой на базу данных -> Reports -> Standard Reports). Нас интересуют таблицы с наибольшим объемом в колонке Data.
В современных релизах ЗУП 3.1 (особенно в ветках 3.1.27, 3.1.30 и выше) основной причиной роста часто становится справочник ХранилищеДвоичныхДанных (в SQL он может называться Reference45158 или иметь другой номер, в зависимости от конфигурации).
Почему это происходит? Проанализируем изменения в архитектуре программы:
Самый эффективный способ уменьшить размер .dt и самой базы данных — это перенос хранения двоичных данных из базы на диск (в тома). Разберем этот процесс по шагам:
Проанализируем текущие настройки в разделе Администрирование — Настройки работы с файлами. Установим переключатель в положение «В томах на диске». Создадим новый том, указав путь к сетевой папке или локальному диску на сервере. При необходимости упорядочить данные по филиалам пригодится инструмент для переноса присоединенных файлов отдельных организаций в томах.
Важный нюанс: Простое включение этой опции не затронет уже накопленные гигабайты. Нам необходимо запустить обработку «Перенос файлов в тома». Рассмотрим, как это работает: система будет поочередно считывать файлы из базы, записывать их на диск и очищать поле с двоичными данными в справочнике ХранилищеДвоичныхДанных.
Рассмотрим штатные средства очистки, которые предоставляет БСП (Библиотека стандартных подсистем). Перейдем в Администрирование — Обслуживание — Очистка ненужных файлов.
Здесь мы можем увидеть распределение объема файлов по различным объектам (например, СведенияОЗастрахованныхЛицахФСС, Ответ на запрос ФСС и т.д.). Проанализируем возможность настройки автоматической очистки:
Часто причиной роста базы является человеческий фактор. Выясним, как кадровики загружают документы. Если сканирование происходит с разрешением 600 dpi в формате BMP или TIFF, один файл может весить 20–30 МБ.
Проверим настройки сканирования прямо в интерфейсе 1С. Рекомендуется установить формат JPG и разрешение 150–200 dpi. Этого достаточно для читаемости текста, при этом размер файла сокращается в десятки раз. Для уже загруженных огромных файлов поможет только выгрузка, сжатие и повторная загрузка (либо использование специализированных обработок с Инфостарта). Для выгрузки данных на диск подойдёт обработка для пакетного сохранения приложенных файлов в папку.
Проанализируем технический аспект: после того как мы перенесли файлы в тома или удалили лишние записи, размер базы в SQL (файл .mdf) и размер выгрузки .dt могут не уменьшиться сразу. Это связано с тем, что SQL резервирует свободное место внутри таблиц.
Чтобы физически уменьшить базу, выполним следующие операции:
Реиндексация таблиц и Сжатие таблиц.Помните: Перед любыми манипуляциями по удалению или сжатию данных обязательно создавайте резервную копию базы данных! Для автоматизации регулярного бэкапа перед обслуживанием можно использовать автоматическое архивирование баз 1С.
Если ваша база ЗУП 3.1 начала «пухнуть», не спешите паниковать. В большинстве случаев это штатное поведение системы, связанное с новыми механизмами взаимодействия с СФР. Перенос данных в тома хранения файлов и настройка регламентной очистки протоколов СЭДО позволяют стабилизировать размер базы и значительно ускорить процесс создания ежедневных бэкапов.