Кейс: Типовая база Комплексная автоматизация 2.4, доработки только через расширения и внешние обработки, стало очень медленно делаться ночное резервное копирование, СУБД - MS SQL.
Число активных пользователей 3-6 человек, учет ведется около года, общее число создаваемых документов в день 100-300 штук, НСИ почти неизменна, а размер 1С базы довольной большой – 267 Гб.
Первое подозрение на множество картинок в базе, они загружены для обмена с интернет-магазином и маркетплейсами. Но они хранятся в отдельных томах на диске и не влияют на большой размер базы 1С.
Как посмотреть какие таблицы в базе 1С занимают больше всего места на диске
В оснастке управления Management Studio правой кнопкой клик на базе -> Отчеты -> Стандартный отчет -> Использование дисковой памяти таблицами.
Сортируем по колонке Данные. На скрине видно, что одна из таблиц базы 1С очень большая, относительно остальных - около 255Гб, по имени InfoRg понятно что это Регистр сведений, суффикс X говорит что этот регистр в расширении.
Как определить какой таблице в MS SQL соответствует таблица 1С
Запускаем обработку с кодом, получаем на выходе таблицу 1С (регистр, документ, справочник и т.п.) и сводим по названию в данными в оснастке MS SQL
Оказалось что база 1С разрослась и стала такой большой из-за логов обмена с маркетплейсами, обмен с ними раз в несколько минут, POST запрос на обновление остатков содержит порядка 20 тыс строк с остатками номенклатуры и характеристиками. Запрос на получение сборочных заданий приходит строкой длиной в среднем 400-600 тысяч символов, в ответе еще и стикеры-картинки приходят в base64, и все это удовольствие сохраняется в бд.
Логи с маркетплейсами отключили, регистр с логами очистили, но размер базы 1с остался большой, после удаления данных из регистра СУБД оставляет это место резервированным, для уменьшения занимаемого места на диске нужно провести операцию shrink