IE2017

В версию 8.3.11 «1С:Предприятия» добавят оптимизацию реструктуризации базы данных

Возврат к списку

23.06.2017     
В новой версии платформы «1С:Предприятие» появится механизм реструктуризации базы данных, который позволит ускорить обновление конфигурации в 3-4 раза, а в отдельных случаях – до 20 раз.
 
Ускорение процесса обновления будет достигнуто за счет минимизации манипуляций над данными и их максимального переноса на уровень системы управления базой данных (СУБД).
 
В процессе «традиционной» реструктуризации последовательно анализируются все объекты конфигурации и для каждого объекта выполняется анализ изменений, создается новая таблица в базе данных, соответствующая новой структуре объекта, а также перенос данных. Причем наибольшее количество времени занимает перенос данных, операции которого могут быть как сложными, так и простыми. 
 
В новом же механизме оптимизация реструктуризации достигнута не за счет локальных изменений «традиционного механизма», а за счет создания абсолютно нового механизма. При этом появившийся механизм также обеспечивает транзакционность, но более сложным способом. 
 
Значительное ускорение реструктуризации достигнуто за счет реализации ряда идей:
 
  • Делегирование максимального количество операций на уровень СУБД, поскольку это наиболее близкая к данным часть и она имеет большие возможности изменения данных;
  • Обработка только тех таблиц СУБД, в которых изменения конфигурации могут вызвать изменение данных. В «традиционном» механизме это было не всегда так. Например, при изменении реквизита табличной части документа копировались данные и основной таблицы, и всех табличных частей документа; 
  • Отдельная реструктуризация табличных частей. При этом возможно отдельное «пореквизитное» их изменение. Например, если добавляется реквизит к табличной части, то к таблице просто добавляется новый столбец, без модификации основной таблицы. 
На основе этих идей была достигнута максимальная оптимизация на тех изменениях конфигурации, которые приводят к следующим операциям с данными: 

  • Добавление или удаление столбцов таблиц. Эти операции проводятся теперь на текущих таблицах (раньше создавались новые таблицы и в них переносились данные);
  • Добавление или удаление индексов. Новый индекс создается без формирования новых таблиц и переноса данных. Такие операции могут выполняться, например, при установке индексирования у реквизита. 
  • Изменение существующих индексов. Также выполняется без создания таблиц и переноса данных. Например, кластерный индекс регистра сведений меняется тогда, когда пользователь добавляет измерение. 
В других операциях перенос данных требуется как и раньше, но практически всегда (в большей части операций) он осуществляется на уровне СУБД. Данные переносятся единым запросом. Это может быть INSERT для новых таблиц, или UPDATE существующих таблиц. 

«Помимо ускорения есть и другой положительный момент. Во многих случаях не перестраиваются индексы. Это позволяет сохранить их актуальность, сохранить статистику, сократить место, требуемое для реструктуризации», – пишут в технологическом блоге «1С».
 
Пока реализована реструктуризация не всех объектов, а только основных: 

  • Планов обмена; 
  • Справочников; 
  • Документов; 
  • Журналов документов; 
  • Планов видов характеристик; 
  • Планов счетов;
  • Регистров сведений; 
  • Регистров накопления;
  • Регистров бухгалтерии.
Для перечисленных объектов (кроме) регистров оптимизированы любые их изменения. 

Напомним, что ранее разработчиками была анонсирована доработка механизма расширений, появление настройки объединения состава и типа объектов и другие функции, которые появятся в «1С:Предприятие» версии 8.3.11.



Комментарии
1. Sergey Andreev (starik-2005) 1008 23.06.17 16:11 Сейчас в теме
Ну наконец-то 1С восприняла идеи, которые уже лет под сто используются всеми здоровыми решениями ))) Даже простой скул-запрос копирования данных из одной таблицы в другую выполняется раз в 100 быстрее, чем реструктуризация этой таблицы, при которой данные в таблице не меняются. Одно это могло бы ускорить время реструктуризации на два порядка, Но, полагаю, 1С так и продолжит выводить никому не нужную информацию о количестве скопированных объектов.\ таблицы, копируя из по тысяче штук. Вот откажись они от этой ерунды - и можно было бы вообще не переделывать схему, а просто генерировать запрос с несколькими CAST и WHERE, чтобы очистить данные от типов, которые больше не хранятся в реструктуризируемом поле.
kote; TreeDogNight; Silenser; h00k; coolseo; +5 Ответить 1
2. Егор Иванов (Infactum) 218 23.06.17 16:18 Сейчас в теме
Похоже разрабатывать полностью на C++ 1С больше не выгодно. Для работы этой штуки нужна Java. Для работы сервера взаимодействия, который анонсирован немного ранее - тоже Java.
В 1С вообще очень Java любят, если на их проекты посмотреть.
3. Dr Freeman (Drfreeman) 33 23.06.17 16:54 Сейчас в теме
(2) Платформа 1С это вообще большой стек технологий, и самое прекрасное это сам язык 1с :)
4. sergey makarov (s22) 19 23.06.17 17:28 Сейчас в теме
(3) самое ужасное....
Kosstikk; androgin; cegorach; PerlAmutor; kadild; Solovyeff; +6 1 Ответить
5. sergey makarov (s22) 19 23.06.17 17:28 Сейчас в теме
(1) еще бы код 1с транслировали бы внутрь сервера....
6. Игорь Фелькер (Brawler) 308 24.06.17 11:02 Сейчас в теме
(2) Все очень просто с этой Java.
1С хочет явно перейти на использование 1C:Enterprise Development Tools, который клепается на Java, а писать аналогичный код на C++ под конфигуруратор им не упало.
Ждем полного отмирания конфигуратора как и толстого клиента!
maxopik2; JohnyDeath; kadild; TreeDogNight; +4 Ответить 1
7. Роман Ложкин (webester) 22 25.06.17 04:53 Сейчас в теме
(6)Еще 77 не умер. Про толстого клиента, говорить не приходится. 1C:Enterprise Development Tools в зачаточном состоянии. И развивается очень медленно.
8. Игорь Фелькер (Brawler) 308 25.06.17 09:10 Сейчас в теме
(7) никто и не говорит, что вот все завтра изменится. Работу 1С проводит планомерную. Поглядите как майкрософт винду пилит, все больше и больше переписывает в ней все изнутри, скоро и окошек старых не увидим как типа в панели управления, которая от винды 7 еще живет. Прогресс.
9. Алексей Усов (Natalex95) 26.06.17 04:11 Сейчас в теме
Ура!!!! Дождались.
Я еще хотел бы, что бы в регистрах они сделали запрет на удаление регистратора если по нему есть движения. Так как если движений нет, то можно с таблицей ничего не делать (не реструктуризировать). В общем я считаю, что это задача программиста конвертить данные. Он должен принять решение куда деть движения удаляемого регистратора.
10. Артано Майаров (Артано) 320 26.06.17 06:43 Сейчас в теме
Жить станет лучше, жить станет веселее. Ждем с нетерпением. Сейчас же сложные случаи реструктуризации приходится решать с нарушением лицензионного соглашения
11. Sergey Andreev (starik-2005) 1008 26.06.17 07:47 Сейчас в теме
(10) вот выпиливание этого недоразумения из этого соглашения- было бы неплохим следующим шагом, ибо даже на курсах подготовки к эксперту по тех.вопросам приглашенные преподаватели все чаще говорят о том, что без этого самого нарушения невозможно в ряде случаев работать.

Сдругой стороны, лиц.соглашение всего лмшь лишает какой-то сферической вакуумной гарантии, если было произведено изменение данных ьазы 1с не с помощью 1с или иных инструментов, о которых 1с говорит на многочисленных страницах своего ИТС. При этом совершенно невозможно определить, было ли произведено чтение из базы с помощью иных механизмов, так что формально при доступе на чтение 1с ничего предъявить не сможет. Да и данные таблиц базы за исключением системных - собственность пользователя, поэтому юридически собственник данных не ограничен ни в инструментах чтения этих данных для своих нужд, ни в инструментах их добавления и изменения. При этом 1с просто не гарантирует работу платформы с этими данными и оставляет за собой право модификации схем хранения,а это может вызвать неработоспособность сторонних решений, осуществляющих прямой доступ к субд.
12. user user (inf012) 26.06.17 07:53 Сейчас в теме
(10) А что это за нарушение, использование какого-то стороннего инструмента для реструктуризации/обновления? Что за инструмент?
13. kolya_tlt kolya_tlt (kolya_tlt) 10 26.06.17 09:21 Сейчас в теме
Отдельная реструктуризация табличных частей. При этом возможно отдельное «пореквизитное» их изменение. Например, если добавляется реквизит к табличной части, то к таблице просто добавляется новый столбец, без модификации основной таблицы.

Наконец-то! низкий вам поклон!
14. Артано Майаров (Артано) 320 26.06.17 10:28 Сейчас в теме
(12) Под нарушением понимаю непосредственный доступ к таблицам БД, минуя приложение 1С. Используемый инструмент - консоль сервера SQL, мануал по T-SQL, холодная голова и горячее сердце.
15. Sergey Andreev (starik-2005) 1008 26.06.17 16:05 Сейчас в теме
(14)
Под нарушением понимаю непосредственный доступ к таблицам БД, минуя приложение 1С.
Бредовое, конечно, это самое лиц.соглашение в этом конкретном разделе. Я ж могу к данным с помощью 1С подключиться как ко внешним источникам, а потом 1С с какой-то версии изменит схему и мое решение станет неработоспособным. В итоге я ничего не нарушил, а проблем огреб.

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