AXForum  
Zurück   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Kennwort vergessen?
Registrieren Forum Rules Hilfe Benutzerliste Heutige Beiträge Suchen

 
 
Themen-Optionen Thema durchsuchen Ansicht
Alt 22.12.2010, 22:06   #21  
ice ist offline
ice
Участник
Benutzerbild von ice
Лучший по профессии 2014
 
1.822 / 402 (17) +++++++
Registriert seit: 23.03.2006
Zitat:
Zitat von _scorp_ Beitrag anzeigen
info выдает одинаковый номер аналитики и в 3.0 и в 4.0.
получается у вас до завершения транзакции вставки строка уже доступна для чтения в другой транзакции? или другая транзакция не может ее прочитать и ждет освобождения?
Alt 23.12.2010, 00:55   #22  
AndyD ist offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2.560 / 2494 (89) +++++++++
Registriert seit: 20.08.2005
Различие в поведении кроется в использовании для базы данных параметра READ_COMMITTED_SNAPSHOT ON и оптимистической модели конкуренции для DAX2009 (не могу сказать про четверку, ее у меня нет)

В тройке при вставке записи в б/д (при вызове операции insert, а не при подтверждении транзакции) накладывается эксклюзивная (X) блокировка как самой записи, так и соответствующих ей строк индексов. Эта блокировка держится до тех пор, пока не будет завершена транзакция
Когда второй клиент производит чтение из таблицы, то сначала он пытается наложить разделяемую (S) блокировку на ключ индекса, соответствующий искомой записию Но так как первый клиент уже установил X блокировку и не завершил транзакцию, то второй попадает в состояние WAIT и будет ждать завершение первой транзакции.
Как только эта транзакция завершится - второй клиент сможет наложить свою блокировку и увидит уже существующую запись, которую и вернет

Для DAX2009 для первого клиента все пройдет также - создастся запись и наложится X блокировка.
А вот для второго с включенной оптимистической конкуренцией будут существенные отличия. Во-первых, при чтении не будет накладываться S блокировка. Во-вторых, ему не видны незакомиченные на момент начала операции изменения в данных, т.е. select вернет пустой курсор.
Ну а дальше будет попытка сделать вставку с наложением X блокировки, которая, в итоге, будет ожидать окончания первой транзакции. И если она подтвердится, то появится ошибка дубликации данных

Если для операции чтения включить пессимистическую блокировку, то select пойдет на сервер с хинтом updlock, что приведет к попытке наложить X блокировку и последующее ожидание завершения первой транзакции. И возврат существующей записи, если она закоммитится
__________________
Axapta v.3.0 sp5 kr2
This post has been rated by: ice (1).
Alt 23.12.2010, 06:59   #23  
otkudao
Гость
 
n/a
вставка ожидает окончания предыдущей транзакции? всегда думал, что вставкам транзакции не помеха, если только таблица не заблокирована эксклюзивно полностью
Alt 23.12.2010, 07:42   #24  
AndyD ist offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2.560 / 2494 (89) +++++++++
Registriert seit: 20.08.2005
Ну, в результате любой операции изменения данных происходит наложение блокировок. Если данные вставляются одни и те же, то и блокировки будут конфликтовать и кто-то попадет в ожидание.

Так же очень сильно зависит от уровня изоляции транзакции (или от хинта при выборке). Если SERIALIZABLE, то запрещается в том числе и вставка. На уровне базы это выражается в X блокировке диапазона ключей, которым оперирует сериализуемая транзакция.
И попытка наложить S или X блокировку со стороны другой транзакции будет отправлять ее в ожидание
__________________
Axapta v.3.0 sp5 kr2
This post has been rated by: S.Kuskov (2).
Alt 23.12.2010, 10:43   #25  
Владимир Максимов ist offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1.720 / 1207 (44) ++++++++
Registriert seit: 13.01.2004
Blog-Einträge: 3
Zitat:
Zitat von ice Beitrag anzeigen
первая транзакция может длиться, например, несколько часов, а если расматривать время отдельной транзакции по вставке inventdim, то это произойдет гораздо быстрее, и к моменту чтения вторым клиентом, запись будет существовать
Ааа, так речь идет о "длинных" транзакциях. Тогда был не прав. Не о том говорил. В этом случае действительно отдельное соединение поможет.

Правда пока не сталкивался с тем, чтобы тормоза вызывал именно процесс вставки одинаковых складских аналитик. Вероятно, это сильно зависит от бизнес-процессов.
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Вопросы по ReleaseUpdate DAX 2009 ansoft DAX: Программирование 7 31.08.2010 12:21
lookup для ItemId iz InventTable + InventDim + InventSum stalker25 DAX: Программирование 6 20.07.2009 15:50
inventUpd_reservation использование inventDim SHiSHok DAX: Программирование 2 31.03.2007 21:32
InventDim.findOrCreateBlank - простое сложно? Pavlo AKA Panok DAX: Программирование 5 25.10.2004 16:50
Работа с InventDim... NJD DAX: Программирование 11 17.06.2004 14:42

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Gehe zu

Рейтинг@Mail.ru
Alle Zeitangaben in WEZ +3. Es ist jetzt 19:38 Uhr.
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.