Мазмұнға өту
Tez Base

Свертка базы 1С 2,3 ТБ за одно ночное окно: −75 % объёма, 0 расхождений

10 лет истории, 46+ млн документов, договоры залога, которые живут годами и обязаны сохраниться полностью. Типовая свертка на таких объёмах работала бы месяцы - мы уложились в одну ночь.

Крупная сеть ломбардов Казахстана: сотни отделений, отраслевая конфигурация 1С · 2026, ~1 месяц от аудита до продуктива

2 341 → 573 ГБфайл данных (−75 %)
~570 → 74 ГБполный бэкап (−87 %)
0расхождений остатков "до/после"
~2 часана 1,4 млрд обработанных строк
2 341 → 573 ГБ

Исходная ситуация

Операционная база крупной сети ломбардов накопила ~10 лет истории: 46+ млн документов, крупнейшие таблицы по 300-430 млн строк, файл данных 2,3 ТБ на MS SQL Server 2019 Enterprise. Бэкап и восстановление занимали часы, тестовые контуры стало практически невозможно разворачивать, обслуживание перестало помещаться в технологические окна, а дисковые ресурсы подошли к пределу - дальше только закупка СХД.

Ключевое ограничение, из-за которого типовая свертка не подходила: договор залога живёт годами. Договор, открытый много лет назад и до сих пор действующий, обязан сохраниться полностью - сам документ, пролонгации, частичные гашения, начисления процентов, кассовые документы и вся история движений. При этом прямого признака “активности” договора в данных нет - его пришлось конструировать.

Почему это нетривиально

  1. Масштаб. Контрольный замер удаления штатными средствами показал: только каскад занял бы месяцы.
  2. Критерий активности. Признак “действующий договор” собирался из трёх независимых источников (остатки задолженности, операционные регистры, срез состояний) - вышло ~296 тыс. защищаемых договоров из 46 млн документов. Ошибка в любую сторону недопустима.
  3. Ссылочная целостность. 8 500+ ссылочных колонок в схеме: наивное удаление гарантированно оставляет битые ссылки, которые всплывают в отчётах месяцами.
  4. Живой контур. Интеграции, отложенное проведение и обмены во время свертки способны “дописать” данные и развалить сверку - контур замораживался на окно.

Решение: гибрид “логика в 1С - массовые операции в SQL”

Бизнес-логика (расчёт защищаемого множества, генерация документов ввода остатков, бухгалтерская свертка) выполнялась кодом 1С - корректно с точки зрения платформы. Массовые операции (удаление сотен миллионов строк, пересчёт итогов) - оптимизированным T-SQL с верификацией против эталонных механизмов 1С.

Основные этапы:

  • Аудит: классификация всех регистров, разбор аномалий (найдены “фантомные” договоры - след давнего бага проведения), автоматическая валидация бухучёта по 78 тыс. проблемных договоров - баланс сошёлся в ноль у 100 %.
  • Расчёт защиты: ~1,5 млн “меток защиты” - активные договоры плюс все связанные документы транзитивно, включая цепочки перезалогов.
  • Срез остатков: идемпотентный генератор документов-носителей по всем регистрам - повторный запуск не задваивает срез.
  • Жёсткие пред-чеки: автоматика сверяет срез с остатками учёта по каждому регистру; расхождение - стоп.
  • Массовый каскад: 4 параллельных потока; ключевая техника - table swap (выжившие данные переносятся в новую таблицу с пересозданием индексов - в 5-9 раз быстрее DELETE). Итог: ~1,4 млрд строк за ~2 часа.
  • Пересчёт итогов напрямую в SQL - в 5 раз быстрее платформенного, с побитовой сверкой против эталона.
  • Онлайн-хвост: некритичные зачистки выполнялись уже на работающей базе - чанками с автотроттлингом (контроль журнала транзакций, блокировок и места; при превышении порогов процесс сам приостанавливается).

Контроль качества: три гейта приёмки

ГейтЧто проверяет
Гейт 1Остатки на дату среза “до” == “после” бит-в-бит: операционные регистры + бухгалтерия + бизнес-метрики
Гейт 2Целостность цепочек перезалогов: ни одна ссылка истории не потеряна
Гейт 3Полный скан базы на битые ссылки: 0 нарушений

Все три гейта на продуктиве - зелёные с первого прогона.

Надёжность исполнения

  • 7+ полных репетиций на копии продуктива; каждая ускоряла пайплайн (каскад: 10 ч → 2 ч; пересчёт итогов: 112 → 21 мин).
  • Отказоустойчивый оркестратор собственной разработки: 22 фазы по графу зависимостей, heartbeat-контроль, возобновление с любой точки. Финальные прогоны - без единого аварийного рестарта.
  • Идемпотентность каждого шага и числовые гейты перед необратимыми фазами.
  • Точки отката перед каждой деструктивной фазой; аудит потребителей данных - включая автоматический разбор кода всех 204 внешних обработок заказчика.

Итог

Одно ночное окно (~5 часов простоя), учёт сошёлся копейка в копейку, все активные договоры сохранены с полной историей. Восстановление тестовых контуров теперь занимает минуты вместо часов. Сотрудничество с заказчиком продолжается и после проекта.

Методика тиражируема: она применима к базам 1С любых конфигураций объёмом от сотен гигабайт - там, где типовые механизмы свертки не укладываются в окна простоя или не дают требуемых гарантий сохранности. Прикинуть эффект на своей базе можно до разговора с подрядчиком: Калькулятор свёртки базы 1С за 15-45 минут считает по статистике СУБД, сколько занимают старые периоды и что ещё раздувает базу. А если в вашей базе нет долгоживущих объектов вроде договоров залога и граница честно проходит по дате, проект может оказаться лишним: где справляется купленная обработка свертки 1С, разобрали отдельно.

Полный технический разбор методики - с псевдокодом критерия активности, схемой table swap и деталями всех трёх гейтов приёмки - опубликован в нашей статье на Инфостарте: “Свертка базы 2,3 ТБ за одно ночное окно: методика, когда типовая обработка бессильна”.

МетрикаБұрынКейін
Файл данных на диске2 341 ГБ573 ГБ
Полный бэкап (со сжатием)~570 ГБ74 ГБ
Файл журнала транзакций119 ГБ8 ГБ
Расхождения остатков "до/после"-0 (сверка бит-в-бит по всем регистрам)
Битые ссылки после свертки-0 (скан по 8 500+ ссылочным колонкам)
Активные договоры залога-100 % сохранены с полной историей

1С жүйеңізге тегін экспресс-аудит

1-2 күнде базаңызды қарап, өнімділік қайда жоғалып жатқанын табамыз және не істеу керегін айтамыз. Міндеттемесіз.

Тегін экспресс-аудит алу

Ұқсас қызметтер

Тапсырманы талқылайық

Ең жылдамы WhatsApp: тапсырма туралы бірер жол жазыңыз, жұмыс күні ішінде жауап береміз.

[email protected]

Өтінімді формамен қалдыру ыңғайлырақ