Необходимо было срезать базу «Комплексная автоматизация, редакция 1.1» с 2015 по 2024 год(~9 лет) в максимально короткие сроки.
Под такую ресурсоемкую операцию был предоставлен сервер с характеристиками:
Вес database до срезки 820 гб. После срезки и сжатия 436 гб. Общее время остановки работы базы составило 19 ч.
Порядок действий: Блокировка базы/Бекап/Настройка SQL/Отключение ЖР/Изменения в общих модулях 1С/Ввод остатков/Бекап/Срезка данных регистров/Бекап/Тестирование и исправление/Отмена изменений в общих модулях 1С/Бекап/Разблокировка базы/Фоновое удаление документов.
Опытным путем были проработаны все нюансы и в итоге весь процесс срезки можно разделить на следующие этапы:
- Настройка SQL и ЖР на время срезки.
- Ввод остатков регистров и отключение итогов.
- Удаление записей регистров и включение итогов.
- Реиндексация таблиц информационной базы и пересчет итогов через тестирование и исправление.
- Удаление документов.
Настройка SQL и ЖР на время срезки.
Для устранения проблемы нехватки места на системном диске отключаем журнал регистрации.
И устанавливаем ротацию логов с ограничением по размеру в настройках SQL.
+ я устанавливал такую настройку, чтобы ускорить выполнение фоновых заданий в режиме многопоточности.
SQL использовал 20 ядер процессора. Я установил 20 потоков для выполнения операций срезки и с такой настройкой SQL получил прирост скорости в пару часов.
Ввод остатков регистров и отключение итогов
Для начала необходимо протестировать формирование итогов регистров.
Для этого установим дату срезки, выберем необходимые типы регистров и выполним команду чтения остатков.
Во время выполнения команды ошибок быть не должно т.к. все нюансы были проработаны на очень сильно переписанной конфигурации КА 1.1.
Если формирование ввода остатков успешно протестировано, то эту операцию во время срезки боевой базы выполнять не нужно.
Для ввода остатков по всем регистрам необходимо установить соответствующие галочки на форме обработки и выполнить команду ввода остатков.
Значительного прироста скорости удалось добиться с помощью ввода остатков для каждого регистра в отдельном фоновом задании. Сколько регистров вводится – столько фоновых заданий и запустим.
Документы ввода остатков – это:
«ОперацияБух» - для регистров бухгалтерии.
«КорректировкаЗаписейРегистров» - для регистров накопления и сведений
«Иной документ пустышка» - для регистров, у которых нет среди регистраторов документа корректировки записей регистров.
Для формирования каждого документа ввода остатков по регистрам накопления и сведений установлено ограничение в 100000 записей. Если количество записей больше, то и документов ввода остатков по одному регистру будет больше, которые различаются комментарием.
Документы ввода остатков по регистрам бухгалтерии формируются отдельно по каждой организации и счету.
Удаление записей регистров и включение итогов
Операция удаления записей регистров самая долгая, поэтому после успешного выполнения каждого фонового задания по вводу остатков – отключается использование итогов для регистра, что позволяет значительно быстрее удалять записи регистров в режиме многопоточности. После удаления записей регистров – использование итогов включается обратно.
Реиндексация таблиц информационной базы и пересчет итогов через тестирование и исправление.
После выполнения операции удаления записей регистров необходимо выполнить реиндексацию и пересчет итогов. Я делал через тестирование и исправление.
После нажатия команды «Выполнить» - конфигуратор завис без признаков жизни на 3 часа, но в итоге все завершилось без ошибок.
Далее уже можно закрывать период и пускать пользователей в базу т.к. оставшаяся операция удаления документов может выполняться в фоне, не мешая работе пользователей.
Удаление документов
Удаление документов выполняем многопоточно. Возможно при параллельной работе пользователей.
Проверено на следующих конфигурациях и релизах:
- Комплексная автоматизация, редакция 1.1, релизы 1.1.11.2