|
Режим блокировок при выполнении транзакции | ☑ | ||
---|---|---|---|---|
0
pavig
18.07.12
✎
17:34
|
Камрады, подкиньте инфу:
как узнать в каком режиме выполняется текущая транзакция: автоматический или управляемый? например, есть некая процедура в общем модуле, и я знаю что она может вызываться из нескольких документов, причем эти документы имеют разный режим блокировок, и мне надо в этой процедуре установить или не установить управлемую блокировку в зависимости от режима выполнения текущей транзакции? или хотя бы вообще узнать, выполняется ли в данный момент транзакция записи? |
|||
1
gosn1ck
18.07.12
✎
17:44
|
флажочек = истина передавай из документов с упр блокировками
|
|||
2
pavig
18.07.12
✎
17:59
|
(1) это уже костыли, согласись
меня интересуют методы платформы |
|||
3
gosn1ck
18.07.12
✎
18:03
|
имхо, костыли сейчас у вас и вы их прибавляете. упр блокировки обычно устанавливается в самом документе обработкой проведения результатом запроса к самому документу.
|
|||
4
pavig
18.07.12
✎
18:05
|
(3) вопрос в (0) это не раскрывает
|
|||
5
Jstunner
18.07.12
✎
18:10
|
Попробуй начать транзакцию с управляемым режимом блокировок, думаю, если транзакция в автоматическом режиме, то кинет исключение
|
|||
6
Jstunner
18.07.12
✎
18:18
|
А вообще верно, смысл управляемых блокировок в том, что надо заблокировать все и сразу, иначе могут быть жертвы :)
|
|||
7
pavig
18.07.12
✎
22:48
|
(6) блокировать все и сразу надо только для контроля остатков чтобы после их чтения и перед записью остатки по набору измерений не изменились, да и то не все и далеко не сразу, а именно ПЕРЕД чтением чтобы не лочить записи до последнего момента чтобы другие транзакции могли и читать и изменять записи
а в (5) - опять костыли, причем куда более жесткие чем в (1) |
|||
8
Jstunner
19.07.12
✎
02:56
|
(7) ты, видимо, не совсем понимаешь принцип блокировки. Скажем, ты блокируешь ресурсы двумя порциями. Первая порция - свободна и спокойно блокируется. Ты что-то делаешь. В это же время начинается другая транзакция, которая блокирует первую порцию, но других данных. Все хорошо пока. Но вторая порция в обеих транзакциях пытается заблокировать одни и те же данные. Возникает, правильно, взаимная блокировка.
Отсюда правило, нужно сначала заблокировать все и сразу, а потом работать дальше. В этом случае все проходит гладко, вторая транзакция со своими блокировками просто встанет в очередь, и продолжится лишь тогда, когда первая транзакция отработает. |
|||
9
zladenuw
19.07.12
✎
02:57
|
а если нет ? то 2 транзакция вылетит ?
|
|||
10
zladenuw
19.07.12
✎
02:59
|
и это еще может зависит от сервера базы мс или постгрес? мс блокируют строку записи,а постгрес таблицу. то по твоим словам лучше юзать постгрес или я заблуждаюсь ?
|
|||
11
zladenuw
19.07.12
✎
03:04
|
или тут все 1с думает как и куда ?
|
|||
12
Jolly Roger
19.07.12
✎
05:33
|
(0) а если ставить УБ в любом случае?
|
|||
13
gosn1ck
19.07.12
✎
09:40
|
(7) приведите пример своего кода и поучимся у вас не костыликодить
(5) если открыть упр транзакцию, а попадётся док или регистр и автоматическим управлением то транзакция перейдет в автоматический режим |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |