Управляемые взаимоблокировки. Подготовка к сдаче экзамена 1С:Эксперт.

Вспоминаем природу возникновения взаимоблокировок, расследуем и устраняем два реальных конфликта управляемых блокировок.
Запишитесь на курс «1С:ЭКСПЕРТ по технологическим вопросам», чтобы:
* Разрабатывать, внедрять, сопровождать 1С системы уровня High Load и 24/7;
* Обслуживать базы больших объемов;
* Решать задачи производительности так же легко, как обычные ошибки в коде;
* Достичь высшей ступени квалификации технического специалиста 1С.
Записаться на курс - amp.gs/jTLwx
Логи, на которых можно повторить примеры из видео, здесь:
drive.google.com/drive/folder...

Пікірлер: 12

  • @fbulkin
    @fbulkin2 жыл бұрын

    Елена, отличные видео, большое спасибо, очень жду следующих. Есть огромная просьба, прикладывать архив с ТЖ, что бы можно было самостоятельно провести анализ. Вопрос по первой блокировке, почему не взаимоблокируется еще и поле "ИмяФайла", которое тоже есть измерение и вроде как должно попадать всеми значениями в блок, как неуказанное?

  • @elenaskvortsova4478

    @elenaskvortsova4478

    2 жыл бұрын

    Большое спасибо, рады, что видео показались полезными. По поводу логов с воспроизведением демо-примера - думаю, что чуть позже сможем их выложить. По вопросу: ИмяФайла - ресурс, а не измерение.

  • @modelist6971
    @modelist69712 жыл бұрын

    А почему в конце ролика при установке ручной блокировки в качестве значения указывается ссылка, а не значение поля «Документ» из строки табличной части? Сам РС независимый, движения в нем создаются вне зависимости от контекста модуля проведения документа поступления на расчетный счет. Не совсем понял этот момент.

  • @elenaskvortsova4478

    @elenaskvortsova4478

    2 жыл бұрын

    Да, вы совершенно правы, спасибо за внимательность. Должно быть так: ЭлементБлокировки.УстановитьЗначение("Документ", стр.Документ); К сожалению, в видео допущена ошибка. Но основная цель - показать, что перед чтением набора записей необходимо устанавливать исключительную блокировку, мы старались проиллюстрировать именно это.

  • @user-sj8em7bm6e

    @user-sj8em7bm6e

    Жыл бұрын

    @@elenaskvortsova4478 Спасибо за наглядные примеры. Кстати кажется можно было без проверки на статус и без блокировки всегда писать статус "оплачен".

  • @MrElInfinito

    @MrElInfinito

    21 күн бұрын

    @@user-sj8em7bm6e Набор записей регистра сведений всегда считывается в НЕЯВНОЙ транзакции с наложением S-блокировки, поэтому без X-блокировки нельзя. Статус "оплачен" нельзя всегда ставить, так как записи в наборе может и не быть, что должно быть понятно по коду.

  • @unichkin
    @unichkin2 жыл бұрын

    Добрый день. А можно в каком-то виде воспроизведение выкладывать? Хотя бы только ТЖ в архиве + файл выгрузки .bak из SQL, где будет только пустая база?

  • @user-mq9hs6wp5s

    @user-mq9hs6wp5s

    2 жыл бұрын

    Здравствуйте. В ближайшее время добавим в описание.

  • @Nerich83
    @Nerich832 жыл бұрын

    Спасибо за видео! Очень жду следующие части. Жаль, что так редко выходят. Поясните, пожалуйста, момент, озвученный в 13:53. У меня не получается проследить связь указанной взаимоблокировки с захватом ресурсов в разном порядке. По идее, второе соединение не смогло бы установить эксклюзивную блокировку на всё пространство "часть файлов = *", т.к. на это же пространство уже наложена блокировка первым соединением? Напрашивается вывод, что на пространство "часть файлов = *" оба соединения устанавливают разделяемую блокировку. А затем оба пытаются наложить явную эксклюзивную блокировку на конкретные значения: "часть файлов = 1" и "часть файлов = 2", что приводит к взаимоблокировке из-за взаимной попытки повышения уровня изоляции на общий ресурс.

  • @capitan_nemo

    @capitan_nemo

    Жыл бұрын

    В видео все верно. Разделяемых блокировок нигде не накладывается. Если обе транзакции начались примерно одновременно, то они накладывают сначала успешно перед запросом непересекающиеся эксклюзивные блокировки в первом пространстве, потом при записи нз они на первое пространство пытаются наложить эксклюзивную блокировку целиком на все, первая начинает ждать вторую, как только вторая делает то же самое возникает дедлок.

  • @alexaliferov6901
    @alexaliferov69012 жыл бұрын

    Блокировка в цикле это норм? 21:43

  • @elenaskvortsova4478

    @elenaskvortsova4478

    2 жыл бұрын

    Смутить скорее должно чтение набора записей в цикле, потому что это не что иное, как запрос. Но и это зависит от кейса, точнее, от количества итераций, в данном случае по смыслу их должно быть очень мало.

Келесі