В процессе длительной эксплуатации конфигурации 1С:Управление торговлей ред. 10.3 (особенно доработанной) администраторы и разработчики часто сталкиваются с ситуацией, когда размер базы данных на MS SQL Server начинает расти с огромной скоростью. При этом файл выгрузки .dt может занимать всего 2–3 ГБ, тогда как физический размер базы данных в СУБД превышает 80–100 ГБ. Разберем основные причины такого поведения платформы и СУБД, а также рассмотрим пошаговые методы восстановления оптимального объема базы.
Проанализируем ситуацию, чтобы понять, из-за чего раздувается база данных и какие таблицы занимают больше всего места:
Индексировать у новых или существующих реквизитов в регистрах накопления и сведений (например, в регистре Продажи). В результате размер индексов таблицы может в 3–4 раза превышать объем самих данных. Если таблица данных занимает 1.6 ГБ, то ее индексы при сплошном индексировании реквизитов могут разрастаться до 8 ГБ и более._AccumRegTotals). Если по аналитической записи образовался плюс по одному измерению (например, номенклатуре или документу партии) и минус по другому, итоговый остаток в ресурсе равен нулю. Однако платформа считает такие комбинации измерений не закрытыми и вынуждена ежемесячно дублировать их в таблице итогов за каждый последующий период. Со временем это приводит к геометрическому росту таблицы итогов.НДСРасчетыСПокупателями, НДСНачисленный и аналогичные содержат данные, необходимые для проведения регламентных документов по НДС. Если в компании не регулярно или некорректно формируются документы Формирование книги покупок и Формирование книги продаж, то движения по этим регистрам не закрываются в ноль, образуя гигантские таблицы остатков за многие годы..mdf (High Water Mark) и не возвращается ОС автоматически без выполнения операции сжатия.Посмотрим на структуру индексов в конфигураторе. Проанализируем реквизиты наиболее «тяжелых» регистров накопления и сведений:
Индексировать. Если у реквизита установлено значение Индексировать или Индексировать с доп. упорядочиванием, а данный реквизит редко используется в качестве фильтра в запросах, снимем этот флаг.Если проблема заключаются в «повисших» остатках и пересортице по измерениям, необходимо закрыть их в абсолютный ноль:
Корректировка записей регистров. Спишем минусовые остатки по одной аналитике и начислим по другой, чтобы закрыть ключи аналитики в ноль.
TRUNCATE TABLE _AccumReg12345; -- где _AccumReg12345 - имя физической таблицы регистра
Разберем по шагам последовательность обслуживания базы данных после очистки и выравнивания остатков:
1С:Предприятие или через конфигуратор запустим процедуру Тестирование и исправление (меню Администрирование -> Тестирование и исправление). Обязательно установим флаги Пересчет итогов и Сжатие таблиц.
Обратите внимание: При процедуре реструктуризации платформа может создавать временные таблицы _v8tmp, поэтому убедитесь, что на диске сервера есть свободное место, превышающее размер базы данных минимум в 1.5–2 раза.
REBUILD) или реорганизацию (REORGANIZE) индексов с коэффициентом заполнения страниц FILLFACTOR от 80% до 90%.
DBCC SHRINKFILE (N'Имя_Файла_Данных', TARGET_SIZE_MB);
Для полного пересоздания структуры таблиц и освобождения неиспользуемых страниц СУБД можно использовать стандартный механизм выгрузки и загрузки базы:
.dt из конфигуратора..dt в созданную чистую базу данных 1С. При выгрузке в .dt попадают только первичные данные без вторичных системных таблиц и итогов, которые платформой создаются заново в оптимальном объеме.Предупреждение: Данный способ подходит для баз некрупного размера. Для баз размером более 20–30 ГБ стандартный механизм выгрузки в .dt официально не рекомендуется 1С для регулярного использования в качестве резервного копирования из-за повышенных рисков сбоя по памяти.
Аномальное «разбухание» базы 1С:Управление торговлей 10.3 чаще всего связано со слабым контролем за индексированием добавленных реквизитов и «зависшими» остатками в регистрах накопления НДС и продаж. Проведение аудита конфигуратора на предмет индексов, регулярная корректировка незакрытых итогов и выполнение регламентных работ на MS SQL Server позволяют уменьшить размер базы в несколько раз без потери рабочих данных.