Работа с базами данных объемом более 700 Гб в среде 1С:Предприятие на базе MS SQL Server накладывает особые требования к обслуживанию. Часто администраторы и разработчики задаются вопросом: поможет ли выгрузка базы в формат .dt и последующая загрузка «взбодрить» систему, уменьшить размер и ускорить работу? Разберем этот процесс подробно, основываясь на практическом опыте и системном подходе к оптимизации.
Рассмотрим ситуацию, когда база объемом около 700 Гб начинает «подтормаживать». Существует мнение, что пересоздание базы через логический бэкап (формат .dt) может очистить мусор и перестроить индексы. Проанализируем реальные цифры: для базы такого объема выгрузка может занять около 3 часов, а загрузка — около 6 часов. Хотя размер может уменьшиться (в некоторых случаях на 100 Гб и более), производительность от самой этой операции растет редко.
Важно понимать, что формат .dt — это логическая структура данных 1С. При загрузке SQL Server заново создает индексы с коэффициентом заполнения (Fill Factor) 100%. Это временно убирает фрагментацию, но при активной работе пользователей индексы быстро фрагментируются снова. Поэтому рассматривать .dt как основной метод ускорения базы нецелесообразно. Более того, для баз объемом свыше 1 Тб этот метод становится рискованным из-за возможных ошибок нехватки памяти или логической целостности.
Перед тем как предпринимать радикальные действия, выясним, чем именно занято место в SQL. Для этого проанализируем свободное место внутри файлов базы данных. Воспользуемся следующим запросом в SQL Management Studio:
USE [ИмяВашейБазыДанных]
SELECT
DB_NAME(database_id) AS ИмяБазыДанных,
file_id,
name AS ИмяФайла,
type_desc,
size * 8. / 1024 AS ТекущийРазмер_MB,
size * 8. / 1024 - CAST(FILEPROPERTY(name, 'SpaceUsed') AS INT) * 8. / 1024 AS СвободноеПространство_MB
FROM sys.master_files
WHERE database_id = DB_ID();
Если свободного места внутри файлов много (десятки гигабайт), процедура shrink (сжатие) может помочь уменьшить физический размер файла, но она крайне негативно влияет на фрагментацию индексов. Рассмотрим альтернативный путь — поиск «мусорных» таблиц. Часто огромный объем занимают:
Проанализируем размеры таблиц через стандартные отчеты SQL или запросы к sys.tables. Очистка таких «хвостов» может высвободить сотни гигабайт без использования .dt.
Одной из самых частых причин тормозов в крупных базах является раздутая таблица итогов. Выясним причину на примере регистра ЗаказыПокупателей. Если в базе висят незакрытые заказы с 2016 года, таблица актуальных итогов будет содержать миллионы записей. При проведении любого документа система будет пытаться рассчитать остатки, просматривая этот огромный объем данных.
Разберем шаги по оптимизации регистров:
Для базы объемом 700 Гб обычного обновления статистики может быть недостаточно. Рассмотрим правильный регламент обслуживания:
REBUILD. Для Enterprise-версий SQL используйте ONLINE = ON, чтобы не блокировать работу пользователей.FULLSCAN. Это даст оптимизатору SQL максимально точную информацию для построения планов запросов.Проанализируем настройки самого сервера. Часто «из коробки» SQL Server настроен неоптимально для работы с 1С:
1. Max Degree of Parallelism (MAXDOP). Для 1С рекомендуется ограничивать параллелизм. Установим значение 1 (в редких случаях 2 или 4 для мощных многоядерных систем), чтобы тяжелые запросы не монополизировали процессорные ресурсы.
2. Настройка TempDB. Это «черновик» SQL сервера, через который проходят все временные таблицы 1С. Разместим файлы tempdb на самом быстром диске (NVMe/SSD). Количество файлов tempdb должно соответствовать количеству ядер (но обычно не более 8), и все они должны иметь строго одинаковый размер и шаг прироста.
3. Модель восстановления (Recovery Model). Если база не требует восстановления на конкретный момент времени (Point-in-time recovery), используем Simple. Если же выбрана модель Full, обязательно настроим частый бэкап транзакционного лога, иначе файл .ldf разрастется до терабайтных размеров.
Когда в базе работают более 100 пользователей, блокировки становятся неизбежными. Разберем, как их минимизировать:
Заключение: Перенос базы на более производительный сервер и SSD-диски — это эффективный, но «силовой» метод. Истинная причина тормозов больших баз обычно кроется в архитектурных излишках (старые итоги) и отсутствии регулярного глубокого обслуживания SQL. Выгрузка в .dt может быть полезна только как разовый метод переезда или проверки базы на логическую целостность.