В процессе эксплуатации системы 1С:Документооборот 1.4 администраторы часто сталкиваются с неконтролируемым ростом базы данных. Когда размер бэкапа достигает десятков гигабайт (например, 48 Гб и выше), это начинает сказываться на производительности, времени создания резервных копий и свободном месте на сервере. Рассмотрим подробно, как проанализировать состав базы, выявить "пожирателей" пространства и эффективно уменьшить объем данных. Для автоматизации регулярного технического обслуживания системы и настройки автоматического архивирования по расписанию применяется Обновлятор 1С для автоматического архивирования и обслуживания баз.
Прежде чем приступать к удалению данных, нам необходимо точно выяснить, какие объекты занимают больше всего места. В среде SQL Server Management Studio (SSMS) существует несколько способов сделать это. Проанализируем самый наглядный из них.
Разберем использование стандартных отчетов SQL. Нажмите правой кнопкой мыши на вашу базу данных в Object Explorer, выберите пункт Reports (Отчеты), затем Standard Reports (Стандартные отчеты) и выберите Disk Usage by Top Tables (Использование диска топ-таблицами). Этот отчет сформирует список таблиц, отсортированный по объему занимаемых данных и индексов. Вы увидите технические имена таблиц, такие как _InfoRg... или _Document....
Если вам удобнее работать со списком через интерфейс Object Explorer, можно воспользоваться функционалом Object Explorer Details. Рассмотрим последовательность действий:
Выясним причину: если в топе находятся таблицы _InfoRg (Регистры сведений) или _DataHistory (История данных), значит, место занимают метаданные или логи. Если лидируют таблицы с именами, содержащими Files, — дело в хранении сканов и документов непосредственно внутри базы.
В конфигурации 1С:Документооборот 1.4 одной из самых быстрорастущих областей является протоколирование работы с почтой. Проанализируем регистр РегистрСведений.ПротоколВыполненияЗадачПоПочте. Если в организации активно используется выполнение задач через электронную почту, этот регистр может содержать миллионы записей, которые не несут исторической ценности.
Посмотрим на пример того, как можно программно или через консоль запросов оценить объем записей в подобных регистрах. Часто администраторы просто очищают такие регистры вручную через встроенные обработки или регламентные задания по удалению устаревших записей (например, старше 30-90 дней).
Одной из самых эффективных мер по уменьшению SQL-базы является использование томов хранения файлов. Если файлы (сканы PDF, документы Word) хранятся в самой базе, ее размер будет расти экспоненциально. Проверим настройки в разделе Настройка и администрирование -> Настройка программы -> Работа с файлами.
Разберем по шагам переход на хранение в томах:
1C:Enterprise.Важный момент: простое включение настройки не переместит старые файлы автоматически. Нужно запустить обработку, которая поочередно извлечет двоичные данные из таблиц 1С и запишет их в виде файлов на диск, оставив в базе только ссылки. Это позволяет радикально сократить размер LDF и MDF файлов.
Еще один скрытый ресурс — История данных (версионирование). В 1С:Документооборот часто включено хранение версий для всех документов. Это означает, что при каждом изменении реквизита создается полная копия объекта в специальных таблицах. Проанализируем ситуацию: если документ весит 5 Мб и у него 20 версий, он может занимать 100 Мб в базе.
Рассмотрим рекомендации по оптимизации версионирования:
Индексы полнотекстового поиска (ПП) могут занимать значительный объем, сопоставимый с размером самих данных. Если база никогда не чистилась, индекс может содержать много "мусора" от уже удаленных объектов. Выясним, как это исправить: в пользовательском режиме перейдите в Управление полнотекстовым поиском, выполните очистку индекса, а затем его полное обновление. Если ПП не используется сотрудниками, его можно полностью отключить, что освободит место и снизит нагрузку на дисковую подсистему.
После того как вы удалили гигабайты ненужных данных (очистили протоколы, перенесли файлы в тома, удалили старые версии), размер файла базы данных на диске .mdf не уменьшится автоматически. SQL Server просто пометит это пространство как свободное внутри файла. Чтобы вернуть место операционной системе, необходимо выполнить процедуру Shrink.
Рассмотрим, как выполнить сжатие через SQL-запрос для базы с простой моделью восстановления (Simple Recovery Model):
USE [Имя_Вашей_Базы];
GO
-- Сжатие файла данных до минимально возможного размера с учетом свободного места
DBCC SHRINKDATABASE ([Имя_Вашей_Базы]);
GO
Внимание: процедура SHRINKDATABASE вызывает сильную фрагментацию индексов. Поэтому сразу после сжатия крайне важно выполнить перестроение индексов (Rebuild). Проанализируем примерный план обслуживания:
SHRINKDATABASE в SSMS.REINDEX или REBUILD для всех таблиц базы.В крупных инсталляциях 1С:Документооборот накапливаются сотни тысяч завершенных бизнес-процессов и задач. Если регламент по их архивации не настроен, таблицы задач (Task) и процессов начинают замедлять систему. Рекомендуется использовать встроенную обработку Очистка ненужных данных, которая позволяет пометить на удаление и физически стереть старые процессы, завершенные несколько лет назад. Помните, что в 1С удаление происходит в два этапа: сначала пометка на удаление, затем — Удаление помеченных объектов с контролем ссылочной целостности.
Соблюдение этого комплексного подхода позволит вам не только уменьшить размер базы с 48 Гб до приемлемых значений, но и значительно ускорить работу всей системы 1С.