При работе с крупными базами данных 1С, особенно в связке с MS SQL Server, администраторы часто сталкиваются с ситуацией, когда стандартная процедура Тестирования и исправления (ТиИ) затягивается на несколько суток. Проблема становится особенно острой, когда база разрастается из-за интеграций с государственными системами, такими как ВетИС (Меркурий), или из-за хранения большого количества прикрепленных файлов. В этой статье мы разберем по шагам, почему процесс идет медленно, и как правильно подготовить базу, чтобы сократить время обслуживания и реально уменьшить ее объем.
Одной из главных причин «раздувания» базы и замедления ТиИ является хранение двоичных данных непосредственно в таблицах SQL. Проанализируем ситуацию: если база весит 35 ГБ, а значительная часть этого объема — файлы, то при выполнении проверки логической целостности система вынуждена пересчитывать и проверять огромные массивы данных. Рассмотрим правильный алгоритм действий для оптимизации:
ДвоичныеДанныеФайлов. Как отмечалось в обсуждении, перед запуском долгого ТиИ может потребоваться очистка этого регистра, если файлы уже гарантированно находятся в томах.ЭкспортФайловВТома. Пока оно не завершит свою работу, данные будут дублироваться и в базе, и на диске.Важный нюанс: Простое удаление файлов или перенос их в тома не уменьшит размер файла .mdf в SQL автоматически. SQL Server лишь пометит это место как свободное внутри файла, но не вернет его операционной системе.
В современных конфигурациях (например, 1С:Управление торговлей 11 или ERP) огромный объем занимают данные ВетИС. Это могут быть миллионы записей в регистре ХранимыеДанныеВетИС. Проанализируем, почему ТиИ здесь бессильно:
Стандартное тестирование лишь проверяет ссылки и целостность, но оно не «знает», что эти данные вам больше не нужны. Если база медленно работает из-за ВетИС, выполнение ТиИ в течение 2 суток не даст эффекта ускорения. Рассмотрим, как поступить правильно:
Выясним причину, по которой ТиИ на SQL идет дольше, чем на файловой базе. Основным «бутылочным горлышком» часто выступает Журнал транзакций (LDF). При массовом изменении или проверке данных SQL записывает каждое действие в этот лог.
Чтобы ускорить процесс, выполним следующие настройки:
Simple (Простая). Это предотвратит бесконечный рост файла .ldf и снизит нагрузку на дисковую подсистему.TempDB расположена на быстром SSD-накопителе. ТиИ активно использует временные таблицы для перестроения индексов.Многие пользователи ошибочно ожидают, что после переноса 13 ГБ файлов в тома и запуска ТиИ размер базы сразу уменьшится. Однако ТиИ никогда не уменьшало размер базы в клиент-серверном варианте. Рассмотрим правильную последовательность действий для сжатия:
После удаления лишних данных (файлов или записей ВетИС) необходимо выполнить команду SHRINK DATABASE или SHRINK FILE средствами SQL Management Studio. Это «сожмет» базу, отдав свободное место операционной системе.
Внимание: Выполняйте Shrink строго ДО финальной реиндексации. Если сделать сжатие после, вы получите фрагментацию индексов близкую к 100%, что приведет к катастрофическому падению производительности.
Проанализируем ситуацию: стоит ли запускать все пункты ТиИ сразу? Если база «крутится» двое суток, скорее всего, она зависла на этапе «Проверка логической целостности». Для ускорения работы базы в большинстве случаев достаточно выполнить только один пункт:
Реиндексация таблиц. Это пересоберет индексы, обновит статистики и значительно ускорит повседневную работу. Проверку ссылочной целостности (пустые ссылки) стоит запускать только тогда, когда в базе реально наблюдаются программные ошибки («Объект не найден»).
Simple.Shrink (сжатие) базы, чтобы освободить место на диске.Такой подход позволит сократить время обслуживания с нескольких суток до нескольких часов, а база начнет работать ощутимо быстрее за счет актуальных индексов и уменьшения физического объема таблиц.