Size: a a a

1С, БСП, DevOps и Архитектура

2019 December 31

AO

Andrey Ovsiankin in 1С, БСП, DevOps и Архитектура
Dmitriy
В смысле никаких блокировок? Блокировки при любой записи есть и на уровне платформы (управляемые) и на уровне СУБД (страница индекса). Но если писать по одной записи, то время блокировки минимальное и время пересечения с другими сеансами маленькое или нулевое.
Для сведения: менеджер записи медленный потому, что выполняет всегда 2 записи - сначала удаление (пишет пустой набор с отборами по всем измерениям), потом добавление (пишет набор с теми же отборами и записью). И это избыточно, т.е. лучше писать один набор с теми же отборами с одной записью/пустой, но в режиме перезаписи.
Набор записей тоже делает сначала удаление. Менеджер записи просто обертка над НаборомЗаписей
источник

D

Dmitriy in 1С, БСП, DevOps и Архитектура
Andrey Ovsiankin
Набор записей тоже делает сначала удаление. Менеджер записи просто обертка над НаборомЗаписей
Набор записей делает операции за 1 "прикладной" раз, а менеджер записи за 2. Поэтому срабатывают все прикладные подписки на события и платформенные. Кроме того, и менеджер управляемых блокировок вызывается дважды. По сравнению с этим всем 2 команды СУБД delete+insert для одной строки отнимают лишь немного больше, чем одна из этих команд СУБД.
источник

VN

Vladimir Nadulich in 1С, БСП, DevOps и Архитектура
Dmitriy
В смысле никаких блокировок? Блокировки при любой записи есть и на уровне платформы (управляемые) и на уровне СУБД (страница индекса). Но если писать по одной записи, то время блокировки минимальное и время пересечения с другими сеансами маленькое или нулевое.
Для сведения: менеджер записи медленный потому, что выполняет всегда 2 записи - сначала удаление (пишет пустой набор с отборами по всем измерениям), потом добавление (пишет набор с теми же отборами и записью). И это избыточно, т.е. лучше писать один набор с теми же отборами с одной записью/пустой, но в режиме перезаписи.
Понятно же что в исходном посте имелись ввиду конфликты блокировок.
При 2000 usr можно в одно место засунуть скорость, если будут конфликты.
По 1000 записей писать - это ой как много. Подбирается эмпирически. Иногда больше 50-200 уже нет прироста скорости, а ожидания на блокировках огромны.
Вообще, прежде чем разгружать о скорости, нужно решить задачу в разделении пространств чуть менее варварским способом, чем все измерения (хотя и этого не всегда хватает)
источник

VN

Vladimir Nadulich in 1С, БСП, DevOps и Архитектура
Dmitriy
В смысле никаких блокировок? Блокировки при любой записи есть и на уровне платформы (управляемые) и на уровне СУБД (страница индекса). Но если писать по одной записи, то время блокировки минимальное и время пересечения с другими сеансами маленькое или нулевое.
Для сведения: менеджер записи медленный потому, что выполняет всегда 2 записи - сначала удаление (пишет пустой набор с отборами по всем измерениям), потом добавление (пишет набор с теми же отборами и записью). И это избыточно, т.е. лучше писать один набор с теми же отборами с одной записью/пустой, но в режиме перезаписи.
И что такое режим перезаписи? Набор или добавляет записи, или удаляет+добавляет. Апдейтов нет.
Менеджер записи - это тот же набор. А медленный из-за количества транзакций, а не из-за чего-то ещё.
источник

D

Dmitriy in 1С, БСП, DevOps и Архитектура
Vladimir Nadulich
И что такое режим перезаписи? Набор или добавляет записи, или удаляет+добавляет. Апдейтов нет.
Менеджер записи - это тот же набор. А медленный из-за количества транзакций, а не из-за чего-то ещё.
Транзакция одна в любом случае.
Менеджер записи - не набор, а объект который создает и записывает 2 набора.
Да, перезапись - это удаление+добавление, где удаление не всегда вносит изменение (строки может не быть).
Из-за чего менеджер записи работает медленно я уже написал.
источник

D

Dmitriy in 1С, БСП, DevOps и Архитектура
Vladimir Nadulich
Понятно же что в исходном посте имелись ввиду конфликты блокировок.
При 2000 usr можно в одно место засунуть скорость, если будут конфликты.
По 1000 записей писать - это ой как много. Подбирается эмпирически. Иногда больше 50-200 уже нет прироста скорости, а ожидания на блокировках огромны.
Вообще, прежде чем разгружать о скорости, нужно решить задачу в разделении пространств чуть менее варварским способом, чем все измерения (хотя и этого не всегда хватает)
Конфликты блокировок сложная тема. Тут нет тривиального решения.
С точки зрения ожиданий на блокировках 1000 записей это не много, если блокируется 1 страница индекса и много, если блокируется 1000 страниц индекса.
источник

VN

Vladimir Nadulich in 1С, БСП, DevOps и Архитектура
Dmitriy
Конфликты блокировок сложная тема. Тут нет тривиального решения.
С точки зрения ожиданий на блокировках 1000 записей это не много, если блокируется 1 страница индекса и много, если блокируется 1000 страниц индекса.
Ничего сложного, если работать с ними, а не рассуждать.
ПС: можете провести пример когда 1000 записей заблокирует 1000 страниц? Кроме случаев когда запись занимает страницу.
источник

VN

Vladimir Nadulich in 1С, БСП, DevOps и Архитектура
Dmitriy
Транзакция одна в любом случае.
Менеджер записи - не набор, а объект который создает и записывает 2 набора.
Да, перезапись - это удаление+добавление, где удаление не всегда вносит изменение (строки может не быть).
Из-за чего менеджер записи работает медленно я уже написал.
Без комментариев. Тогда набор тоже пишет два набора.
источник

D

Dmitriy in 1С, БСП, DevOps и Архитектура
Vladimir Nadulich
Без комментариев. Тогда набор тоже пишет два набора.
Закончили.
источник

VP

Vassily Poupkine in 1С, БСП, DevOps и Архитектура
Dmitriy
Набор записей делает операции за 1 "прикладной" раз, а менеджер записи за 2. Поэтому срабатывают все прикладные подписки на события и платформенные. Кроме того, и менеджер управляемых блокировок вызывается дважды. По сравнению с этим всем 2 команды СУБД delete+insert для одной строки отнимают лишь немного больше, чем одна из этих команд СУБД.
"Набор записей делает операции за 1 "прикладной" раз, а менеджер записи за 2. Поэтому срабатывают все прикладные подписки на события и платформенные" // Ошибаешься
источник

Г

Г🐈рри in 1С, БСП, DevOps и Архитектура
Слушьте, люди - а вот в вашем эпичном споре про "наборы записей" и пр. по тексту - все таки, итог то какой прикладной? Подведет кто-то может, а то дискасс знатный, а я чот не понял - в итоге к чему уважаемое сообщество пришло то?
источник

VP

Vassily Poupkine in 1С, БСП, DevOps и Архитектура
Г🐈рри
Слушьте, люди - а вот в вашем эпичном споре про "наборы записей" и пр. по тексту - все таки, итог то какой прикладной? Подведет кто-то может, а то дискасс знатный, а я чот не понял - в итоге к чему уважаемое сообщество пришло то?
Ничего нового от того, что уже написано в букварях, нет: "технически" МЗ в лучшем случае такой же как НЗ, в худшем - медленнее.
источник

D

Dmitriy in 1С, БСП, DevOps и Архитектура
Vassily Poupkine
"Набор записей делает операции за 1 "прикладной" раз, а менеджер записи за 2. Поэтому срабатывают все прикладные подписки на события и платформенные" // Ошибаешься
Да ошибся. Описанное поведение относится к записи из формы при перезаписи (похоже особенность поведения формы). При перезаписи из кода поведение такое же, как запись набора записей со всеми измерениями.
источник

VP

Vassily Poupkine in 1С, БСП, DevOps и Архитектура
Dmitriy
Да ошибся. Описанное поведение относится к записи из формы при перезаписи (похоже особенность поведения формы). При перезаписи из кода поведение такое же, как запись набора записей со всеми измерениями.
Да, из формы записи там старый ключ записи есть как системное свойство формы
источник

Г

Г🐈рри in 1С, БСП, DevOps и Архитектура
Vassily Poupkine
Ничего нового от того, что уже написано в букварях, нет: "технически" МЗ в лучшем случае такой же как НЗ, в худшем - медленнее.
Спасибо, сохраню себе в закладках сухой вывод, а то из дискасса непонятно - все таки, кто ж прав, кто виноват :)
источник

VP

Vassily Poupkine in 1С, БСП, DevOps и Архитектура
Г🐈рри
Спасибо, сохраню себе в закладках сухой вывод, а то из дискасса непонятно - все таки, кто ж прав, кто виноват :)
Не забываем, что краткость / понятность кода тоже дорогого стоит, поэтому слепо отвергать МЗ не стоит)
источник

D

Dmitriy in 1С, БСП, DevOps и Архитектура
Vassily Poupkine
Не забываем, что краткость / понятность кода тоже дорогого стоит, поэтому слепо отвергать МЗ не стоит)
Я не применяю обычно менеджер записи. Так сложилось на практике, когда нужно обновлять порциями, в том числе многопоточно. Сейчас уже точно не помню почему был сделан отказ от менеджера записи в сторону набора записей, но причина точно была. Исследовались оба варианта решения.
Вообще, когда на прикладном уровне возникает проблема производительности, понятность это то, чем обычно приходится жертвовать.
источник

AS

Anton Selin in 1С, БСП, DevOps и Архитектура
https://its.1c.ru/db/metod8dev/content/2722/hdoc
вот тут все расписано про МЗ и НЗ

При этом:
1. для МЗ нельзя применять ОбменДанными.Загрузка
2. Для МЗ нельзя добавить ничего в ДополнительныеСвойства, потому что такого свойства просто нет.
источник

AS

Anton Selin in 1С, БСП, DevOps и Архитектура
Dmitriy
Я не применяю обычно менеджер записи. Так сложилось на практике, когда нужно обновлять порциями, в том числе многопоточно. Сейчас уже точно не помню почему был сделан отказ от менеджера записи в сторону набора записей, но причина точно была. Исследовались оба варианта решения.
Вообще, когда на прикладном уровне возникает проблема производительности, понятность это то, чем обычно приходится жертвовать.
С менеджером удобно с одной записью работать, и когда для этой записи меняются измерения..
для набора записей в "одну" строку такое не прокатит...
Но че-то тоже отказался от МЗ
источник

AS

Anton Selin in 1С, БСП, DevOps и Архитектура
Кстате, недавно же на партнерке дали ответ по поводу холивара "ПредопределенноеЗначение" или Менеджер объекта:
https://its.1c.ru/db/v8std#content:443:hdoc

Раньше был явный запрет на использование ПредопределенноеЗначение в серверных методах.. мол, одно - на клиенте, другое - на сервере.. Без объяснения причин... Теперь запрета такого нет -)
источник