Как выяснить причину резкого роста базы 1С:ERP и определить назначение тяжелой таблицы в MS SQL

Системный администратор 1С v8.3 (Управляемые формы) 1С:ERP Управление предприятием IT и автоматизация бизнеса
← На главную

При сопровождении высоконагруженных баз данных на платформе 1С:Предприятие системные администраторы нередко сталкиваются с ситуацией, когда размер базы данных в СУБД резко возрастает в разы за короткий промежуток времени. Подобный скачок приводит к падению производительности дисковой подсистемы, замедлению формирования отчетов и существенному увеличению времени резервного копирования. Разберем по шагам, как выявить объект метаданных 1С по имени физической таблицы в MS SQL Server, почему размер таблиц с файлами продолжает расти даже при настроенном хранении на сетевом диске и как корректно устранить раздувание базы.

Определение объекта метаданных 1С по имени таблицы в СУБД

Внутренняя архитектура платформы 1С транслирует объекты конфигурации в физические таблицы базы данных со специфическими системными именами (например, _InfoRg35777 для регистра сведений или _Document1234 для документа). Если анализ свободного места в среде SQL Server Management Studio показал, что подавляющую часть дискового пространства занимает конкретная таблица, выясним, какому объекту конфигурации она принадлежит.

Для сопоставления физических имен СУБД с логической структурой 1С платформа предоставляет встроенный метод ПолучитьСтруктуруХраненияБазыДанных(). Выполним программную выгрузку структуры с помощью следующего фрагмента кода во внешней обработке или консоли кода:


ТаблицаСтруктуры = ПолучитьСтруктуруХраненияБазыДанных(, Истина);
Для Каждого СтрокаТаблицы Из ТаблицаСтруктуры Цикл
    Если СтрокаТаблицы.ИмяТаблицыХранения = "_InfoRg35777" Тогда
        Сообщить("Имя объекта 1С: " + СтрокаТаблицы.Имя);
        Сообщить("Метаданные: " + СтрокаТаблицы.Метаданные);
        Сообщить("Назначение: " + СтрокаТаблицы.Назначение);
    КонецЕсли;
КонецЦикла;

Если при открытии внешней обработки платформа выдает ошибку Нарушение прав доступа, проверим права учетной записи. В современных версиях платформы 1С:Предприятие 8.3 помимо роли АдминистраторСистемы и полных прав требуется наличие отдельного права ИнтерактивноеОткрытиеВнешнихОбработок. Назначим эту роль в профиле групп доступа текущего пользователя.

В рассматриваемом сценарии таблица _InfoRg35777 соответствует регистру РегистрСведений.ПрисоединенныеФайлы, содержащему реквизиты ПрисоединенныйФайл и ХранимыйФайл. Тип данных поля ХранимыйФайл представляет собой ХранилищеЗначения, которое на уровне MS SQL хранится как массив бинарных данных (BLOB). Именно накопление двоичных данных внутри таблицы приводит к лавинообразному росту файла данных .mdf.

Почему файлы попадают в базу данных при включенном хранении в томах

Часто в настройках конфигурации 1С:ERP режим Хранить файлы в томах на диске уже активирован, однако регистрация файлов продолжает раздувать СУБД. Проанализируем основные причины такого поведения платформы:

  1. Файлы, добавленные до включения томов, не переносятся автоматически. Включение флажка хранения в томах распространяет свое действие только на вновь создаваемые файлы. Старые данные остаются в СУБД в виде бинарных объектов до принудительного запуска миграции.
  2. Недостаток прав доступа учетной записи службы 1С к сетевому ресурсу. Проверка подключения к папке в пользовательском интерфейсе выполняется в контексте текущего пользователя Windows. Однако запись бинарных данных на диск при выполнении фоновых и регламентных заданий производит серверная служба 1C:Enterprise Server (по умолчанию работающая под учетной записью usr1cv8 или NETWORK SERVICE). Если у этой службы отсутствуют права на чтение и запись в сетевую папку (UNC-путь), платформа не прерывает работу с ошибкой, а автоматически переключается на резервный механизм сохранения файла внутрь таблицы базы данных.
  3. Исчерпание лимитов тома. Для каждого тома в настройках задается параметр максимального объема. Если предел достигнут, а резервный том не подключен или недоступен, файлы снова перенаправляются в СУБД.
  4. Активная загрузка почтовых вложений. Если в базе настроена интеграция по протоколу IMAP, встроенный почтовый клиент автоматически регистрирует каждое вложение входящих писем (включая спам, логотипы подписей и тяжелые скан-копии документов в формате TIFF) в качестве отдельных элементов присоединенных файлов.
  5. Версионирование файлов. При многократном редактировании или повторной синхронизации документов механизм версионирования сохраняет полную копию файла на каждую модификацию, что умножает объем занимаемого дискового пространства в геометрической прогрессии.

Пошаговый план решения проблемы и очистки дискового пространства

Разберем последовательность действий, которая позволит перенести двоичные данные из СУБД на файловый сервер и стабилизировать объем базы данных.

  1. Настроим права сетевого каталога. Откроем доступ к сетевой папке томов для учетной записи, от имени которой стартует служба сервера 1С:Предприятие. Предоставим полные права на уровне общего сетевого доступа (Share Permissions) и на уровне файловой системы (NTFS Permissions).
  2. Запустим перенос данных в тома. Перейдем в раздел НСИ и администрирование — Настройки работы с файлами — Тома хранения файлов. Воспользуемся типовой командой Перенос в тома. Регламентная процедура считает бинарные данные из поля ХранимыйФайл регистра сведений, запишет их в файлы на сетевой шаре и очистит поле внутри СУБД, оставив в базе только путь к физическому файлу.
  3. Настроим очистку устаревших данных. В разделе администрирования запустим регламентное задание Очистка устаревших версий файлов и укажем срок хранения версий. С помощью типовой обработки Очистка ненужных файлов проанализируем и удалим неактуальные почтовые вложения и временные файлы обмена.
  4. Диагностируем источники поступления данных. Чтобы точно определить, какой справочник или документ генерирует основной объем файлов, выполним группировку по владельцам файлов через консоль запросов 1С:

ВЫБРАТЬ
    ТипЗнч(Файлы.ВладелецФайла) КАК ТипВладельца,
    КОЛИЧЕСТВО(Файлы.Ссылка) КАК КоличествоФайлов
ИЗ
    Справочник.НоменклатураПрисоединенныеФайлы КАК Файлы
СГРУППИРОВАТЬ ПО
    ТипЗнч(Файлы.ВладелецФайла)

Аналогичным образом проанализируем справочники ЭлектронноеПисьмоВходящееПрисоединенныеФайлы и присоединенные файлы к первичным документам.

Особенности обслуживания MS SQL Server после удаления BLOB-данных

Обратим особое внимание на специфику освобождения дискового пространства в Microsoft SQL Server. После успешного переноса файлов в тома объем таблицы _InfoRg35777 не уменьшится в операционной системе моментально. СУБД помечает страницы LOB-данных как свободные, но оставляет файл базы данных .mdf прежнего физического размера для будущих операций вставки.

Важное замечание по регламентным планам обслуживания: ежедневное выполнение операции сжатия базы данных (SHRINKDATABASE или SHRINKFILE) в связке с реиндексацией является критической ошибкой администрирования. Сжатие приводит к полной фрагментации индексов и лавинообразному росту журнала транзакций. Процедуру сжатия допустимо выполнять только однократно после массового удаления или переноса гигабайтов бинарных данных, после чего обязательно необходимо выполнить перестроение индексов (ALTER INDEX ... REBUILD) и обновление статистик базы данных.

← На главную