|
Управляемые блокировки при проведении | ☑ | ||
---|---|---|---|---|
0
Asyc
18.10.23
✎
14:13
|
Всем привет.
Клиент-серверная база, режим блокировок управляемый. Имеется один документ, который сначала читает данные из РН, потом пишет их. Перед чтением устанавливаю исключительную блокировку по диапазону дат (например, предыдущий месяц) + организации. Ставлю точку останова. В другом сеансе открываю документ, который пишет данные в этот же регистр, но текущей датой. Никаких блокировок не устанавливаю. Пытаюсь провести, падаю по дедлоку в момент записи набора. Собственно вопрос: при записи в регистр без установки блокировок он блокируется целиком? Мы этим управлять не можем? |
|||
1
Волшебник
18.10.23
✎
14:18
|
Если режим блокировок управляемый, то его надо устанавливать в каждой транзакции
|
|||
2
Asyc
18.10.23
✎
14:52
|
(1) А если в транзакции проведения ничего не установить, включается какой-то дефолтный режим? И как понять на что именно он блокировки накладывает? На весь регистр целиком? Может кто знает где почитать про это, чет на ИТСе про запись не нашел ничего.
|
|||
3
BDA80
18.10.23
✎
15:55
|
(2) Любое изменение данных устанавливает неявную управляемую исключительную блокировку
|
|||
4
H A D G E H O G s
18.10.23
✎
16:08
|
deadlock от 1С или от СУБД?
Если от 1С - ищи его в ТЖ, все понятно там написано. Если от СУБД (что врядли, но все же бывает) - строй граф deadlock-ов в профайлере и придется полюбиться. |
|||
5
Волшебник
18.10.23
✎
16:10
|
(4) deadlock бывает только от СУБД
|
|||
6
H A D G E H O G s
18.10.23
✎
16:24
|
||||
7
Valdis2007
19.10.23
✎
07:38
|
(6) таки это не дедлок же? это отказ в блокировке, что-бы избежать дедлока?
|
|||
8
H A D G E H O G s
19.10.23
✎
08:52
|
(7) точно также, как и в субд. Но и там это называется deadlock.
|
|||
10
Valdis2007
19.10.23
✎
10:35
|
(8) мне кажется вы говорите про -"Взаимоблокировка", а дедлок несколько другое?
|
|||
11
H A D G E H O G s
19.10.23
✎
10:55
|
(10) Начинаешь понимать, когда женщина говорит "Иногда проще дать"
|
|||
12
H A D G E H O G s
19.10.23
✎
10:55
|
(10)
wiki:Взаимная_блокировка Взаи́мная блокиро́вка (сокращённо взаимоблокировка, англ. deadlock) — ситуация в многозадачной среде или СУБД, при которой несколько процессов находятся в состоянии ожидания ресурсов, занятых друг другом, и ни один из них не может продолжать свое выполнение |
|||
13
Asyc
19.10.23
✎
11:57
|
(3) Любое изменение данных устанавливает неявную управляемую исключительную блокировку
Допустим, а управлять полями блокировки при изменении данных мы можем? |
|||
14
bolobol
19.10.23
✎
12:43
|
Есть подозрение, что какие-то танцы с исключительностью и итогами, либо падает не на записи, либо не по дедлоку.
|
|||
15
Valdis2007
19.10.23
✎
13:00
|
(12) за ссылку на вики конечно спасибо)) в данном конкретном случае, мы дедлок на уровне платформы 1с обсуждаем, а не других абстарктных инфосистем?
|
|||
16
BDA80
19.10.23
✎
13:04
|
(13) Сделать то что хотим? Задачу опишите
|
|||
17
Asyc
19.10.23
✎
13:47
|
(16) Хочу чтобы заблокированные одним документом данные (за предыдущий месяц) не мешали оперативному проведению другого документа (на текущую дату).
Блокировку в первом документе устанавливаю по диапазону дат. Во втором не делаю ничего. Ставлю точку останова в первом документе, сразу после блокировки. Начинаю проводить второй - падаю с конфликтом блокировок при выполнении транзакции. Превышено максимальное время ожидания предоставления блокировки. |
|||
18
H A D G E H O G s
19.10.23
✎
14:04
|
(17) у вас не дедлок, а превышено ожидание на блокировке.
Соберите ТЖ, проанализируйте его ИР, найдите Tlock с продолжительностью 20000, Ир покажет его пересечение с другой блокировкой. По структуре хранения данных, посмотрите, какие поля пересекаются. |
|||
19
Asyc
19.10.23
✎
14:19
|
(18) Спасибо, буду пробовать.
|
|||
20
bolobol
19.10.23
✎
14:25
|
(19) Я так и не понял - в регистре нет итогов? Или итоги есть, но Организации разные в блокировке?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |