Ускорение реструктуризации больших таблиц. Мой вариант

28.04.21

База данных - Администрирование СУБД

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

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

Для реструктуризации тех же 100 Гб может банально не хватить технологического окна, особенно в режиме работы предприятия 24/7 и, как следствие, такие компании предпринимают все меры, чтобы это окно уменьшить. Вплоть до нарушения(?) лицензионного соглашения. 

В своей практике я предпочитаю использовать скрипт, который позволяет производить все манипуляции непосредственно в SSMS,  и оперативно отреагировать, если что то пошло не так.

 
Текст скрипта

-- !!!
--      ВНИМАНИЕ!!! КАЖДЫЙ БЛОК ВЫПОЛНЯЕТСЯ ОТДЕЛЬНО!!!
-- !!!
-- !!!
-- 0) Переходим в область рабочей базы
use Ch 
go
-- 0

-- 1) Переименовываем рабочую таблицу в резерв (табличные части)
exec sp_rename '_Document33_VT36','_Document33_VT36_data','OBJECT'
-- 1 /конец блока/

-- 2) Создаем  пустые таблицы  =  табличные части для ее реструктуризации (проверка на существование)

if OBJECT_ID('_Document33_VT36','U') IS NULL begin
    select TOP 1 * into _Document33_VT36 from _Document33_VT36_data 
end
-- 2 /конец блока/

-- 3) НА СТОРОНЕ 1С ВЫПОЛНЯЕТСЯ РЕСТРУКТУРИЗАЦИЯ  (создается нужный индекс в шапке средствами 1С)

-- 4) Удаляются фиктивные таблицы (табличные части) после реструктуризации (есть проверка на нулевой размер)

--if (select count(*) from _Document33_VT36) > 0 begin 
    drop table _Document33_VT36  
--end
-- 4 /конец блока/

-- 5) Переименовываем назад из резерва (табличные части)
exec sp_rename '_Document33_VT36_data','_Document33_VT36','OBJECT'
 -- 5 /конец блока/
 

 

На примере выше необходимо реструктуризировать документ Document33, у которого всего лишь одна табличная часть _Document33_VT36. Если табличных частей больше, то и добавлять лучше все табличные части, чтобы ничего не забыть.

Имена можно посмотреть с помощью метода ПолучитьСтруктуруХраненияБазыДанных().

ВНИМАНИЕ! Каждый блок исполнять отдельно! 0 - 2 в SSMS, потом перейти в конфигуратор, обновить и далее оставшиеся пункты в SSMS. 

 

Картинки с тестовой убрал под спойлер:

 

 

 

Тесты проводились на тележке 8.2.19

Все манипуляции с БД вне среды 1С делаются на свой страх и риск. Если нет понимания, что происходит, то лучше изучить вопрос

Вступайте в нашу телеграмм-группу Инфостарт

реструктуризация обновление BigData

См. также

HighLoad оптимизация Администрирование СУБД 1С:Предприятие 8 1С:ERP Управление предприятием 2 Бесплатно (free)

Завершаем цикл статей по совместному докладу Алены Генераловой и Александра Симонова на INFOSTART TECH EVENT 2025 о нагрузочном тестировании (НТ) на 30 000 АРМ на машине баз данных Tantor XData. В заключительной части расскажем о том, что нас ждало при запусках теста, и какие доработки СУБД Tantor Postgres были сделаны, чтобы его пройти с высоким результатом.

27.11.2025    540    Tantor    3    

9

HighLoad оптимизация Администрирование СУБД Программист Бесплатно (free)

Продолжаем знакомить вас с улучшениями СУБД Tantor Postgres для работы с продуктами 1С. В рамках предыдущей статьи мы разобрали арсенал специализированных функций, призванных существенно ускорить выполнение типичных для 1С операций, снизить нагрузку на инфраструктуру и упростить администрирование. Сегодня мы рассмотрим, с какими проблемами можно столкнуться при высоких значениях default_statistics_target, расскажем о новых оптимизациях для ускорения выполнения запросов, и, конечно, коснемся временных таблиц.

11.11.2025    847    Tantor    10    

5

Администрирование СУБД 1С:Элемент Системный администратор Программист Бесплатно (free)

1С:Управление ландшафтом – это инструмент, способный объединить десятки разрозненных систем, серверов и баз данных в единое управляемое пространство, где установка, обновление, администрирование и контроль за инфраструктурой 1С происходят из одной точки, а рутинные задачи решаются за пару минут. Расскажем о том, как сделать свой ИТ-ландшафт управляемым.

23.10.2025    3342    user2169944    1    

13

Администрирование СУБД Программист 1С:Предприятие 8 Россия Бесплатно (free)

Ошибка реструктуризации: "Запись не найдена в менеджере имен баз данных". Диагностика и решение проблемы.

22.08.2025    2428    a13k55    0    

17

Информационная безопасность Администрирование СУБД Системный администратор Бесплатно (free)

Рассказываем о безопасной и удобной организации доступа к кластеру 1С для всей ИТ-команды с помощью централизованного приложения управления. Автор показывает, как настроить разграничение прав, избежать типичных уязвимостей и эффективно управлять сеансами, не рискуя целостностью системы. Особое внимание уделено работе с объектной моделью 1С, прерыванию тяжелых запросов и диагностике проблем через технологический журнал.

11.08.2025    3700    evvakra    4    

9

Администрирование СУБД Программист 1С:Предприятие 8 1C:ERP Бесплатно (free)

Небольшая инструкция, откуда взять функциональную модель для системы 1С: СППР и как её загрузить.

06.08.2025    2346    Senator_I    2    

5

HighLoad оптимизация Администрирование СУБД Системный администратор Программист 1С:Предприятие 8 Бесплатно (free)

Сегодня мы проведем обзор изменений, касающихся работы с высоконагруженными системами 1С. Новый релиз предлагает не просто несколько точечных исправлений, а целый арсенал специализированных функций, призванных существенно ускорить выполнение типичных для 1С операций, снизить нагрузку на инфраструктуру и упростить администрирование. Спектр улучшений распространился на многие ключевые узлы производительности от оптимизации работы с временными таблицами и сложными запросами RLS (row-level security) до ускорения критически важных процессов наподобие «Закрытия месяца». Обо всем этом и пойдет речь в статье.

22.07.2025    5015    Tantor    9    

10