Способ ускорения реструктуризации — замена таблиц большого объема пустыми копиями перед проведением обновления БД и возврат к исходным таблицам после обновления с предварительной корректировкой их структуры.
Полностью автоматизировано создание и выполнение всех требуемых скриптов SQL. Представлены версии обработки для обычных форм (1С:Предприятие 8.2 (8.2.19.130)) и управляемого приложения (1С:Предприятие 8.3 (8.3.9.1818)).
Наверное, каждый специалист, обслуживающий систему на платформе 1С, сталкивался с проблемой изменения структуры объектов 1С, вызванной очень долгой реструктуризации соответствующих таблиц в случае их большого размера.
Начиная с платформы версии 8.3.11.2867 1С оптимизировала типовой алгоритм реструктуризации, поэтому разработка наиболее актуальна для более ранних версий 8.3 и 8.2.
О реструктуризации опубликовано достаточно много информации, но все же кратко опишу, что это и в чем проблема.
Реструктуризация в рамках 1С — это изменение структуры и состава таблиц базы данных и перенос имеющихся данных в изменённые таблицы. Обычно реструктуризация выполняется в тот момент, когда вы нажимаете "Обновить конфигурацию базы данных" в Конфигураторе.
Основная проблема заключается в том, что при типовой реструктуризации (в платформах до версии 8.3.11.2867) создается пустая таблица новой структуры, в которую копируются данные из исходной таблицы. В случае большого размера исходной таблицы реструктуризация может затянуться на несколько часов, а иногда и дней. При этом БД остается недоступной и повышается риск порчи БД вследствие возможных системных сбоев.
Одно из решений — подмена проблемной таблицы пустой копией, обновление базы и приведение структуры исходной таблицы в соответствие с новой структурой таблицы подмены вручную.
Но этот способ связан с необходимостью выполнения ряда рутинных и достаточно нудных, на мой взгляд, действий:
— анализ объектов реструктуризации в 1С;
— получение внутренних имен подменяемых таблиц в 1С;
— генерация скриптов сознания копий подменяемых таблиц в ms management studio;
— создание копий и подмена исходных таблиц в ms management studio;
— обновление базы в 1С;
— анализ новой структуры таблиц подмены в ms management studio;
— подготовка скриптов корректировки структуры исходных таблиц, либо корректировка исходных таблиц в форме мастера в ms management studio;
— подмена пустых копий исходными таблицами в ms management studio;
— удаление пустых копий ms management studio;
Представленная обработка полностью автоматизирует действия до и после обновления базы в 1С.
Ограничения: доступна быстрая реструктуризация только таблиц журналов, документов, справочников и регистров сведений. Обработка не предназначена для ускорения реструктуризации при расширении ссылочного типа до составного ссылочного. Обработка только для клиент-серверных баз 1С, для использования необходим доступ к серверу SQL с правом создания и изменения объектов
Порядок проведения быстрой реструктуризации с помощью обработки "БыстроеОбновлениеБД.epf":
1. Заблокируйте доступ к обновляемой БД.
2. Выполните монопольный вход в программу и запустите обработку "БыстроеОбновлениеБД.epf".
3. Убедитесь в наличии актуальной копии БД с помощью команды "Получить дату последней резервной копии".
4. Выберите в списке объекты, которые необходимо обновить с подменой таблиц.
5. Выполните команду "Подготовить базу к реструктуризации".
6. Закройте монопольную сессию;
7. Выполните обновление БД в конфигураторе.
8. Выполните монопольный вход в программу и запустите обработку "БыстроеОбновлениеБД.epf".
9. Выполните команду "Завершить реструктуризацию".
10. Разблокируйте доступ к обновляемой БД — база готова к работе.
Результаты выполнения всех команд отображаются в поле "Журнал выполнения".
Дополнительные команды обработки:
"Анализ выбранных/подмененных таблиц" — выводит в поле журнала информацию о размере выбранных объектов:
"Показать скрипт подмены таблиц" — выводит в поле журнала текст скрипта SQL для подмены рабочих таблиц пустыми копиями:
"Отмена: откат к исходному состоянию" — команда возвращает базу в состояние до подмены таблиц, пустые копии удаляются;
"Анализ изменения структуры таблиц после обновления базы" — выводит в поле журнала информацию о изменениях внутренней структуры выбранных объектов после обновления конфигурации БД:
"Показать скрипт завершения реструктуризации" — выводит в поле журнала текст скрипта SQL для корректировки структуры исходных таблиц и обратной подмены:
В завершение, обращаю внимание, что данный метод осуществляет изменение структуры данных не типовыми средствами. Используйте его в крайнем случае, когда очень нужно, а по-другому никак. Рекомендую предварительный проверочный запуск реструктуризации с использованием представленной обработки в тестовой базе. И обязательно убедитесь в наличии актуальной резервной копии обновляемой БД.
Всем удачи!
Типовой механизм, в последних версиях платформы, вроде же в этом смысле оптимизировали, не?
(2)я отметил это в тексте публикации. Публикация адресована в большей степени тем, кто реально сталкивается с описанной проблемой.
(1) не вижу проблемы: пункт 65 и предложенная идея не связаны друг с другом.
да и вообще, относитесь к этим пунктам с долей критичности, а не к реально действующему механизму.
поясню: некоторые пункты технически не реализованы, но прописаны. К примеру, при установке доп.лицензии платформа ее определяет как полноценную лицензию и не различает, что основной лицензии нет в локальной сети. То есть на второй компьютер ставите доп.лицензию, и платформа+конфигурация запустится, не проверив наличие лицензии основной поставки.
(2) » в последних версиях платформы»? интересно посмотреть на человека, который работает с последними версиями платформы. Я так привык, что последнюю версию на сегодняшний день я начинаю тестить не ранее чем через год-два…. и то благодаря типовой БП 3.0, и то «не испытываю», а просто ставлю…
(3) да, интересная идея и реализация!
(5) 8.3.11.2867 когда вышла?
Да и работая c ERP 2.4/БУХ 3/ЗУП 3/УТ11/Розница 2.2 требования к наличию «свежей» версии платформы жесткие.
(7) при чем здесь 8.3.11?
вы написали «последние версии платформы» — последняя на сегодня 8.3.15.1747.
(8)При том, что 1с оптимизировала процесс реструктуризации в этой версии.
(9) ок.
(1) там же:
(2) Попробуйте таблицу в 100Гб реструктуризировать. Отпишитесь, как пройдет
(4)
Ну как же не связаны, если в явном виде написано, что нельзя обращаться к данным таблиц СУБД и их структурам прямыми запросами и необходимо использовать только штатные средства платформы 1С, лукавите 😉
(11) Вы между строк читаете?
Читая и изменяя таблицы СУБД напрямую тот, кто использует сей механизм нарушает лицензионное соглашение. Об этом как минимум надо предупреждать, чтобы те, кто не хочет, чтобы 1С отказалась от поддержки их компаний при их следующем обращении в саппорт, подумали, перед тем как использовать такие манипуляции.
Хотите быструю реструктуризацию средствами СУБД? Перейдите на последнюю версию платформы и настройте.https://wonderland.v8.1c.ru/blog/optimizatsiya-restrukturizatsii-bazy-dannykh/
(14)
1. Вы обращались в саппорт 1С? Если да, то как часто и по каким вопросам? И каков результат?
2. Чем плоха реструктуризация средствами SQL, если после нее все работает?
3. Вы пробовали большие таблицы(>50Гб хотя бы) реструктуризировать новым механизмом? Думаю, что нет.
Представьте себе компанию, которая работает 24/7 и как Вы думаете, позволит бизнес технологическое окно часов в 8? Сколько будет стоить такое окно?
И да, судя по отзывам коллег, которые пробовали новый механизм, остались недовольны. Приплюсуйте сюда стоимость потери базы и восстановления ее из бэкапа
(14)Зачастую, конфигурации, с которыми приходится работать — существенно измененные под нужды предприятия типовые, либо вовсе самописные. Их перевод на новую платформу, как правило, достаточно длительный и трудоемкий процесс. Запускать многомесячный проект переезда на другую платформу ради ускорения возможной реструктуризации — не самое рациональное решение.
(15)
https://its.1c.ru/db/v8316doc#bookmark:dev:TI000000063
1. Конечно. Крайне положительно. Особенно КОРП поддержка.
2. Работает и работает с гарантией вендора — это разные вещи.
3. Конечно, в т.ч. террабайтные базы.
4. 8 часов — это очень много. Фоновая реструктуризация столько не требует, потому что на то она и фоновая, что не прерывает работу пользователей в процессе реструктуризации базы. См. документацию
Фоновая реструктуризация выполняется в несколько фаз:
1. Фаза обработки (пользователи могут работать с информационной базой)
2. Фаза актуализации (пользователи могут работать с информационной базой)
3. Фаза принятия изменений (пользователи не могут работать с информационной базой)
Фоновое обновление может выполняться с закрытым конфигуратором.
Можно даже сервер погасить и поставить обновление на паузу, а потом продолжить.
(17)Хочется верить, но почему то не покидает ощущение, что Вы теоретик.
Особенно: «Крайне положительно»
И особенно, что Вы реструктуризировали не только большие базы, но в первую очередь большие таблицы новой методикой. Вот коллеги мне рассказали, что новые веяния крайне сырые. И я им верю, потому что а) обманывать им незачем б) мы периодически обмениваемся новыми знаниями
Ну да ладно, спор бесполезен, удачи и целых таблиц.
(18)
Я так понял, автор (17) — работник техподдержки 🙂
(19) А вы пробовали выключить и снова включить? 🙂
Фоновая реструктуризация в старых версиях платформы часто (более одного раза точно) приводила к очистке таблиц. Вот была таблица с примерно лярдом файлов (может даже два лярда — да, и такое бывает), а потом она внезапно оказалась пустой. Реструктуризация этого всего (файлы не хранятся в базе — они отдельно, а реструктуризация из-за того, что тип владельца меняется — новый справочник появился или документ, к которому можно крепить файлы) — две недели. Что он там делает — хрен положить, но для бизнеса, который работает 24/7 на 1С (да, это ошибка — ежу понятно) ждать доступность таблицы с файлами в районе 2-х недель — это как-то бредово звучит, ч учетом того, что абсолютно ничего не меняется в таблице — тупая 1С читает, удаляет и записывает ровно одно и то же.
Так вот после такого ни один здоровый умственно человек не будет даже смотреть в сторону идиотского 65-го пункта соглашения с непонятно какими санкциями, а просто возьмет и сделает как настоящий мужик — переименует таблицу, создаст пустую, запустит реструктуризацию, после чего переименует таблицу назад.
То, что 1С-неги в последних версиях платформы с этим что-то сделали — это радует. Давно пора.
(21) и документы гораздо прогнозируемее реструктуризировать отбросив табличные части. Никогда не понимал фишки, зачем трогать табличные части, если изменения только в шапке
(22) это не в понимании дело — это в трактовке согласованности из ACID: читаем объекты целиком, меняем из в соответствии со схемой миграции (изменений) и записываем целиком в транзакции взад. Но, видимо, прхитехтор букву закона про согласованность выучил, тест сдал, а подумать забыл — вот и реализуется подобная схема целиком (чтобы не нарушать
отчетностипринципа ACID). Думать на курсах, к сожалению не учат.(13) идея предложенного метода заключена в том, чтобы делать копию типовых таблиц, например, типовой таблицы «Файлы». Типовую таблицу «Файлы» после копирования в другую таблицу надо очистить, чтобы она осталась пустой.
Далее провести обновление и далее скопировать (вернуть) данные в типовую таблицу.
Это вот такая идея.
Сама идея никаких правил лицензирования не нарушает.
А вот способы реализации — пусть каждый сам выбирает — на свой страх и риск поломать базу — тут фирма -разработчик ответственности не несет и предупреждает, что все что не документировано, то использовать нельзя.
Уж не знаю какие мотивы были так написать: то ли перестраховать себя от нежелательных возможных дальнейших разбирательств со стороны клиентов, то ли реально будут наказывать (хотя это процессуально сделать не реально)…
Относитесь к этим пунктам лицензирования критично — то есть с долей скепсиса, а вот к проблемам обновления из-за подобных типовых таблиц «Файлы», когда они наполнены данными — более серьезно. Я сталкивался с подобным. Но только с файловой базой.
(17) хорошо, что мнения разные. картина мира тоже у всех своя. напишите, пож-та , в каком городе вы работаете, какие конфигурации на ИТС-сопровождении? Какой франчайзи 1с вас обслуживает?
(17) К сожалению, на собственном опыте сталкивался с нестабильной работой фонового обновления (8.3.13).
Думаю, ещё сыроват механизм…
(24) Ну Вы же понимаете, что очистка и копирование данных в таблицы — это чтение и изменение данных таблиц БД, о которых и идет речь в этом пункте лицензирования, поэтому это есть нарушение этих правил, но я ни в коем случае не говорю о том, что их следует придерживаться в убыток бизнесу или же тем более в случае отсутствия какого-либо другого альтернативного решения возникшей проблемы, приводящей к невозможности нормального ведения бизнеса.
(27) в пункте написано хитро «что не задокументировано, то использовать нельзя»…
есть пункты (про доп.лицензии например), которые задокументированы, но на уровне платформы технически не доработаны…
значит ли это, что остальные пункты (в том числе ваш) утрачивают силу?
речь идет о том, что платформа не доработана таким образом, что часть функций нельзя сейчас задокументировать, поэтому это использовать сейчас нельзя, но в будущем обязательно все задокументируют, когда платформу доработают….
и тогда можно будет использовать …. так может и сейчас можно?!
(28) Там написано не хитро, а довольно прямо указано следующим текстом:
То бишь работать с ИБ 1С при помощи прямых SQL-запросов правилами запрещается, другое дело на сколько эти правила соответствуют реалиям
Можно и сейчас использовать, только не факт, что это использование в будущем не приведет к негативным последствиям, допустим, при переходе на новую версию платформы или изменений в используемых конфигурациях
(29)ок.
(18),(19) представьте себе, что автор (17) — до недавнего времени один из разработчиков БСП и умеет не только в 1С.
(31) Причем тут БСП? Вы знаете что такое реструктуризация и для чего она нужна? Реструктуризация в штатном варианте делается средствами платформы.
(32) знаю. навряд ли разработчик бсп этого не знает)
(33)только вот разработчик платформы может и не знать БСП. Да и я так и не понял, причем тут БСП? При обновлении/реструктуризации код 1С вообще не исполняется. Работают только платформенные механизмы, которые шлют СУБД запросы для изменения структуры таблиц