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

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С v8.3 Бесплатно (free)

В рамках мастер-класса мы запустим нагрузочный тест на 3К пользователей и посмотрим, как будет вести себя PostgreSQL при такой нагрузке.

11.12.2024    1267    Tantor    1    

6

Администрирование СУБД Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

Много вариантов определения номера собственного процесса самого 1С8. В ходе поиска, опираясь на общедоступную информацию, дополнил алгоритм, но с учетом определения ИД запущенного приложения.

09.12.2024    587    artly2000    6    

4

Администрирование СУБД Системный администратор Программист

В крупных компаниях, где много типовых и сильно доработанных баз с режимом работы 24/7, переход с MS SQL на PostgreSQL затягивается. Получается гетерогенная структура – когда прод уже на PostgreSQL, а разработка и тестирование – пока на MS SQL. О том, какие варианты помогут постепенно перевести прод с несколькими базами MS SQL на PostgreSQL, не сломав среду тестирования и разработки, пойдет речь в статье.

21.11.2024    3562    a.doroshkevich    8    

15

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

Мы исследуем проблему долгого выполнения запросов PostgreSQL при использовании конструкции VALUES: когда она возникает, как на нее можно повлиять, а главное, почему ее продуманная отработка важна для более быстрого функционирования решений на базе 1С

12.11.2024    1365    Tantor    20    

17

HighLoad оптимизация Администрирование СУБД Механизмы платформы 1С Программист Платформа 1С v8.3 ИТ-компания Россия Бесплатно (free)

В данной статье мы рассмотрим, как работает механизм временных таблиц на postgres на платформе 8.3.23 и что изменилось в нем при добавлении новых возможностей в платформе 8.3.25. А также на примере покажу, как понимание работы платформы позволяет оптимизировать СУБД для работы с 1С.

29.10.2024    4481    Tantor    38    

37

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

CDC - очень мощный механизм, который можно использовать во многих сценариях, возможность развернуть его в Docker показывает простоту и лёгкость данной технологии.

08.10.2024    1301    AlexSvoykin    2    

7

Администрирование СУБД Системный администратор Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Анализ и решение ошибок СУБД. Во время реиндексации базы Ошибка СУБД: Microsoft SQL Server Native Client 11.0: Не удалось найти объект "ИмяБазы.dbo._RefSInf21806", так как он не существует, или отсутствуют разрешения. Во время проверки целостности Ошибка СУБД: Microsoft SQL Server Native Client 11.0: Недопустимое имя объекта "dbo._RefSInf21806".

19.09.2024    5764    Xershi    10    

18