Имя: Пароль:
1C
 
Взаимосвязь управляемых блокировок 1С и эскалации блокировок СУБД
0 yabes
 
27.04.20
13:46
Подскажите, пожалуйста, нигде не смог найти ответа на свой вопрос. Может ли установка управляемых блокировок 1с повлиять на эскалацию блокировок СУБД? У меня при записи большого набора записей возникает эскалация блокировок СУБД. Существует мнение, что если установить по измерениям управляемую блокировку 1С, это поможет убрать эскалацию блокировок СУБД. У меня избавиться от эскалации таким образом не получилось и статью, в которой бы говорилось о такой взаимосвязи я тоже не нашел. Так можно ли избавится от эскалации блокировок СУБД с помощью управляемых блокировок 1С или нет?)
1 fisher
 
27.04.20
13:51
Можно. Или нельзя. Зависит от причины эскалации.
Прямой взаимосвязи нет никакой.
2 fisher
 
27.04.20
13:55
Вообще, если запись одним набором, то непонятно как помогут управляемые блокировки. СУБД видит тонны блокировок строк и вполне естественно делает эскалацию, чтобы оптимизировать блокировки. А нет вариантов более гранулярно писать?
3 fisher
 
27.04.20
13:59
Возможно, исходное мнение имело в виду, что при параллельной записи можно делать грануляцию по измерениям и использование управляемых блокировок при этом уменьшит количество блокировок СУБД в конфликтных ситуациях.
4 fisher
 
27.04.20
14:00
Потому что конфликт будет разрулен еще на уровне управляемых блокировок, не доводя его до СУБД.
5 fisher
 
27.04.20
14:02
Но если алгоритм параллелизации исключает конфликты, то что в лоб, что по лбу.
6 H A D G E H O G s
 
27.04.20
14:24
(0) Нельзя.
Юзайте ключ трассировки 1211
https://its.1c.ru/db/metod8dev#content:5946:hdoc
7 palsergeich
 
27.04.20
14:30
(0) Нет это не так работает.
8 palsergeich
 
27.04.20
14:33
Грубо из коробки у MSSQL триггер эскаляции 5000, у управляемой блокировки 100000
Если ты пишешь разом более 5000 записей то или юзай ключи трассировки или воспринимай это как неизбежное
9 palsergeich
 
27.04.20
14:33
10 H A D G E H O G s
 
27.04.20
14:40
(8) Откуда дровишки про 100000 строк от сервера 1С?
11 H A D G E H O G s
 
27.04.20
14:41
От сервера 1С есть еще охеренные неявные блокировки при записи НабораЗаписей РС в режиме перезаписи. Но там думать надо, не копать.
12 yabes
 
27.04.20
16:00
Т.е. получается, что если требуется провести документ, который записывает в регистр большой набор записей (> 10 000 строк), то нет никакой возможности избежать эскалации блокировок СУБД, кроме как отключить эскалацию MS SQL для таблицы? В нашем случае мы мучаемся с сохранением документов “Форма ввода бюджета”
13 H A D G E H O G s
 
27.04.20
16:22
(12) Включите флаг 1211 и перезагрузите сервак. Ну написано же.
14 yabes
 
27.04.20
16:27
(13) Так я и спрашиваю в сообщении (12), если другая возможность избавиться от эскалации блокировок СУБД, кроме как отключить эскалацию MS SQL для конкретной таблицы или всего сервера (с помощью флага трассировки 1211)?
15 Вафель
 
27.04.20
16:28
ну можно еще мин размер увеличить
16 fisher
 
27.04.20
16:31
(12) И что они блокируют? Или вы их параллельно проводите?
17 H A D G E H O G s
 
27.04.20
16:38
(14) Можно для таблицы SQL через Alter Table
поставить
LOCK_ESCALATION =disable

Но зачем?
18 yabes
 
27.04.20
16:39
(16) Возникает эскалация блокировок СУБД по регистру накопления, в котором хранятся данные по бюджету. В такие моменты другие документы, которые делают движение по этому регистру периодически вылетают с ошибками превышения ожидания на блокировках
19 yabes
 
27.04.20
16:40
(17) "Но зачем?" - вы имеете в виду зачем устанавливать на таблицу если можно установить на весь сервер или зачем вообще это нужно?
20 fisher
 
27.04.20
16:53
(18) Пытаюсь сообразить, какие еще документы могут двигать бюджет.
21 H A D G E H O G s
 
27.04.20
16:55
(19) Да, если можно установить на весь сервер.
По опыту - никакого особого повышенного потребления памяти или CPU это не вызывает
22 yabes
 
27.04.20
16:58
(20) Хотя бы другие Формы ввода бюджета, например
23 fisher
 
27.04.20
17:13
(22) Вот я и спрашивал - вы их параллельно проводите? Тогда ясно. Неясно только почему такая огромная детализация, если существует еще и дополнительная гранулярность (раз параллельно проводить надо).
Если это какие-то распределения, то их можно попробовать делать отложенно. Таблицы не любят, когда в них пытаются параллельно писать громадными порциями :) Когда это реально надо - там специально заморачиваются. Секционирование таблиц делают или еще чего похлеще.