02.03.2018, 16:45 | #1 |
Участник
|
А зачем здесь транзакция
Всем привет.
Ковыряю код для HH девайсов в advanced warehouse solution. Наткнулся на вот такую штуку в классе WHSControlData X++: boolean validateLicensePlateQty(WHSLicensePlateId _licensePlateId) { InventSum inventSum; InventDim inventDim; ttsbegin; select firstonly RecId from inventSum where inventSum.Closed == NoYes::No && (inventSum.PhysicalInvent != 0 || inventSum.Picked != 0) exists join inventDim where inventSum.InventDimId == inventDim.InventDimId && inventDim.LicensePlateId == _licensePlateId; ttscommit; return inventSum.RecId == 0; } AX2012 R3 CU10 |
|
02.03.2018, 19:04 | #2 |
Участник
|
Вот здесь ответ на ваш вопрос Проблемы с кэшированием inventSum в DAX2012
|
|
|
За это сообщение автора поблагодарили: greench (1), Logger (3), EVGL (1), gl00mie (1). |
02.03.2018, 19:12 | #3 |
Участник
|
Цитата:
Сообщение от ice321i
Вот здесь ответ на ваш вопрос Проблемы с кэшированием inventSum в DAX2012
|
|
02.03.2018, 19:34 | #4 |
Участник
|
Кстати, в связи с темой. А кто-то на реальных проектах у себя менял CacheLookup в InventSum?
|
|
02.03.2018, 21:27 | #5 |
Участник
|
Я менял. Вреда не заметил.
|
|
02.03.2018, 21:52 | #6 |
Участник
|
|
|
03.03.2018, 08:12 | #7 |
Участник
|
Разницы не заметил.
У нас практически не было ситуаций когда шел запрос без группировок. Т.е. кеш не мог проявиться. |
|
|
За это сообщение автора поблагодарили: gl00mie (2). |
03.03.2018, 15:03 | #8 |
Участник
|
Цитата:
Класс InventUpdateOnhand появился еще в DAX4. С тех пор обновление InventSum прямым SQL запросом является основным способом (за исключением ситуации, когда обновляем только одну запись во всей транзакции). Даже если обновляем только одну запись, то мне сложно представить ситуацию, когда после обновления записи InventSum нашим кодом, тут же запрашиваем её опять из базы данных, надеясь, что получим запись из кэша (ну, если это не обработка конфликта обновления, но даже в этом случае нам нужно явно не значение из кэша, да и транзакция в таком случае открыта). В общем, смысла кэширования записей такой часто изменяющейся таблицы просто не вижу. Экспериментов не проводил, но подсознательно чувствую, что в таких случаях в недрах DAX часть времени тратится на то, чтобы определить не устарел ли кэш, не нужно ли его сбросить и т.п. Последний раз редактировалось Raven Melancholic; 03.03.2018 в 15:08. |
|
|
За это сообщение автора поблагодарили: Logger (3), gl00mie (2). |
|
|