Почему Тестирование и исправление (ТиИ) длится слишком долго и как ускорить очистку базы 1С на SQL

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

При работе с крупными базами данных 1С, особенно в связке с MS SQL Server, администраторы часто сталкиваются с ситуацией, когда стандартная процедура Тестирования и исправления (ТиИ) затягивается на несколько суток. Проблема становится особенно острой, когда база разрастается из-за интеграций с государственными системами, такими как ВетИС (Меркурий), или из-за хранения большого количества прикрепленных файлов. В этой статье мы разберем по шагам, почему процесс идет медленно, и как правильно подготовить базу, чтобы сократить время обслуживания и реально уменьшить ее объем.

Проблема хранения файлов в базе данных

Одной из главных причин «раздувания» базы и замедления ТиИ является хранение двоичных данных непосредственно в таблицах SQL. Проанализируем ситуацию: если база весит 35 ГБ, а значительная часть этого объема — файлы, то при выполнении проверки логической целостности система вынуждена пересчитывать и проверять огромные массивы данных. Рассмотрим правильный алгоритм действий для оптимизации:

  1. Перенос файлов в тома: Первым делом необходимо настроить хранение файлов не в базе данных, а в томах на диске. Это разгрузит таблицы 1С и SQL.
  2. Очистка «хвостов»: После того как файлы физически перенесены на диск, в базе могут остаться записи в регистре ДвоичныеДанныеФайлов. Как отмечалось в обсуждении, перед запуском долгого ТиИ может потребоваться очистка этого регистра, если файлы уже гарантированно находятся в томах.
  3. Регламентные задания: Важно проконтролировать работу задания ЭкспортФайловВТома. Пока оно не завершит свою работу, данные будут дублироваться и в базе, и на диске.

Важный нюанс: Простое удаление файлов или перенос их в тома не уменьшит размер файла .mdf в SQL автоматически. SQL Server лишь пометит это место как свободное внутри файла, но не вернет его операционной системе.

Специфика данных ВетИС (ИС Меркурий)

В современных конфигурациях (например, 1С:Управление торговлей 11 или ERP) огромный объем занимают данные ВетИС. Это могут быть миллионы записей в регистре ХранимыеДанныеВетИС. Проанализируем, почему ТиИ здесь бессильно:

Стандартное тестирование лишь проверяет ссылки и целостность, но оно не «знает», что эти данные вам больше не нужны. Если база медленно работает из-за ВетИС, выполнение ТиИ в течение 2 суток не даст эффекта ускорения. Рассмотрим, как поступить правильно:

Настройка SQL-сервера перед обслуживанием

Выясним причину, по которой ТиИ на SQL идет дольше, чем на файловой базе. Основным «бутылочным горлышком» часто выступает Журнал транзакций (LDF). При массовом изменении или проверке данных SQL записывает каждое действие в этот лог.

Чтобы ускорить процесс, выполним следующие настройки:

  1. Модель восстановления: Перед началом ТиИ переведите базу данных в модель восстановления Simple (Простая). Это предотвратит бесконечный рост файла .ldf и снизит нагрузку на дисковую подсистему.
  2. TempDB: Убедитесь, что временная база TempDB расположена на быстром SSD-накопителе. ТиИ активно использует временные таблицы для перестроения индексов.
  3. Отключение регламентных заданий: Перед запуском ТиИ обязательно отключите все фоновые и регламентные задания в консоли администрирования 1С. Параллельная работа планировщика и ТиИ создает конфликты блокировок.

Как реально уменьшить размер базы (Shrink)

Многие пользователи ошибочно ожидают, что после переноса 13 ГБ файлов в тома и запуска ТиИ размер базы сразу уменьшится. Однако ТиИ никогда не уменьшало размер базы в клиент-серверном варианте. Рассмотрим правильную последовательность действий для сжатия:

После удаления лишних данных (файлов или записей ВетИС) необходимо выполнить команду SHRINK DATABASE или SHRINK FILE средствами SQL Management Studio. Это «сожмет» базу, отдав свободное место операционной системе.

Внимание: Выполняйте Shrink строго ДО финальной реиндексации. Если сделать сжатие после, вы получите фрагментацию индексов близкую к 100%, что приведет к катастрофическому падению производительности.

Оптимизация самого процесса Тестирования и исправления

Проанализируем ситуацию: стоит ли запускать все пункты ТиИ сразу? Если база «крутится» двое суток, скорее всего, она зависла на этапе «Проверка логической целостности». Для ускорения работы базы в большинстве случаев достаточно выполнить только один пункт:

Реиндексация таблиц. Это пересоберет индексы, обновит статистики и значительно ускорит повседневную работу. Проверку ссылочной целостности (пустые ссылки) стоит запускать только тогда, когда в базе реально наблюдаются программные ошибки («Объект не найден»).

Резюме по шагам для администратора:

  1. Выполним перенос файлов в тома и дождемся завершения регламентного задания.
  2. Проанализируем объем регистров ВетИС и выполним их очистку специализированной обработкой.
  3. В консоли SQL Server переведем базу в режим Simple.
  4. Выполним Shrink (сжатие) базы, чтобы освободить место на диске.
  5. Запустим ТиИ, выбрав только «Реиндексация таблиц» и «Обновление статистик».

Такой подход позволит сократить время обслуживания с нескольких суток до нескольких часов, а база начнет работать ощутимо быстрее за счет актуальных индексов и уменьшения физического объема таблиц.

← На главную