AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.01.2014, 13:51   #1  
MikeR is offline
MikeR
MCT
Аватар для MikeR
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
 
1,628 / 627 (24) +++++++
Регистрация: 28.11.2005
Адрес: просто землянин
Собственно написал, что бы было понятно ищущим знаний коллегам.
__________________
Axapta book for developer
Старый 22.01.2014, 14:00   #2  
ackid is offline
ackid
Участник
 
34 / 12 (1) ++
Регистрация: 21.10.2013
Я считаю что при необходимости вполне можно транзакцию вне цикла открывать... но вот потенциально бесконечный цикл....блин...как вижу этот true так в дрожь))))
За это сообщение автора поблагодарили: MikeR (2).
Старый 22.01.2014, 14:13   #3  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
MikeR, в ваших примерах из п. 4 и 5 идет обработка плоских данных, для которых отмена части транзакций не критична, ибо они могут быть выполнены позже простым повторным запуском того же кода. А в исходном алгоритме (п. 1) идет обход узлов дерева, причем выполняется операция +=. Если такой обход раздробить на мелкие транзакции, то при их частичном откате восстановить целостность данных будет невозможно физически (если явно не хранить историю обновления).
Ну а пример из п. 2 (while select...) неприменим для обхода дерева при заданной в п.1 структуре данных.
Наверное это вам и пытаются сказать...
PS: С тем, что п.5 более корректен в общем случае, чем п.4 - согласен.
__________________
Старый 22.01.2014, 16:34   #4  
MikeR is offline
MikeR
MCT
Аватар для MikeR
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
 
1,628 / 627 (24) +++++++
Регистрация: 28.11.2005
Адрес: просто землянин
Цитата:
Сообщение от Ruff Посмотреть сообщение
Наверное это вам и пытаются сказать...
.
Что сказали, то сказали, бумага все стерпит.
С плоскими разобрались, так понимаю. НО ДАЖЕ в иерархической реализации это дает результат. Представляете если это достаточно большой пул проводок. Все напрочь блокируется, а какова вероятность, что произойдет исключительная ситуация? На практике это менее 5 процентов. Что стоит каждый раз терпеть блокировки или тупо следовать надуманной целостности, которая даже еще и не думала нарушаться...
Не говоря о том, что по мелочам
1)
X++:
        SELECT FIRSTONLY current WHERE current.InvGuid == InvGUID;
        InvGUID = current.ParentInvGUID;

        SELECT FIRSTONLY parent WHERE current.ParentInvGUID == parent.InvGUID;
спокойно сливается в одни запрос
2)
X++:
parentDistr.AMOUNTCUR += inventoryGuidInvoice.AmountCur;//слияние к предку
легко используется агрегатная функция.
__________________
Axapta book for developer
Старый 22.01.2014, 16:56   #5  
Link is offline
Link
Британский учённый
Аватар для Link
Соотечественники
 
568 / 523 (19) +++++++
Регистрация: 25.11.2005
Адрес: UK
Записей в блоге: 9
Цитата:
Сообщение от MikeR Посмотреть сообщение
Все напрочь блокируется, а какова вероятность, что произойдет исключительная ситуация? На практике это менее 5 процентов. Что стоит каждый раз терпеть блокировки или тупо следовать надуманной целостности, которая даже еще и не думала нарушаться...
По аналогии: Зачем делать бэкапы? Винчестеры довольно надежные, ломаются очень редко, вероятность отказа меньше 5%. А так экономия времени, места и админу проще
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще.
За это сообщение автора поблагодарили: S.Kuskov (2).
Старый 22.01.2014, 17:00   #6  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от MikeR Посмотреть сообщение
На практике это менее 5 процентов.
То есть каждая 20 транзакция ломает данные и это ок?
Старый 22.01.2014, 17:10   #7  
MikeR is offline
MikeR
MCT
Аватар для MikeR
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
 
1,628 / 627 (24) +++++++
Регистрация: 28.11.2005
Адрес: просто землянин
Скажем так, я переделал - работать стало ЗНАЧИТЕЛЬНО быстрее, сбоев не было вообще, проценты - это оценочное суждение
__________________
Axapta book for developer
Старый 22.01.2014, 19:26   #8  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от MikeR Посмотреть сообщение
Скажем так, я переделал - работать стало ЗНАЧИТЕЛЬНО быстрее, сбоев не было вообще, проценты - это оценочное суждение
Может быть в данном конкретном случае то никогда не случится, а может быть это случится на следующей неделе - попробуй, например, запустить этот процесс с двух машин одновременно
Старый 22.01.2014, 22:12   #9  
MikeR is offline
MikeR
MCT
Аватар для MikeR
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
 
1,628 / 627 (24) +++++++
Регистрация: 28.11.2005
Адрес: просто землянин
Цитата:
Сообщение от belugin Посмотреть сообщение
Может быть в данном конкретном случае то никогда не случится, а может быть это случится на следующей неделе - попробуй, например, запустить этот процесс с двух машин одновременно
Правильно ли я тебя понимаю, что когда, допустим в разноске надо обновить два десятка таблиц и вставить в еще пару десятков, то методологически правильно открывать ОДНУ транзакцию, вешать блокировку while select forupdate по обновляемым таблицам? Иначе тоже может произойти пук и мы потеряем целостность, то есть запишем в таблицу налогов одни цифири, а допустим документы не обновим.
__________________
Axapta book for developer
Теги
базовая информация, транзакции

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Коллеги, что вы думаете о данном коде? MikeR DAX: Программирование 36 21.01.2014 19:38
Странное поведение при закрытии склада-ошибка в коде? Aquarius DAX: Программирование 11 27.06.2013 13:37
.NET business connector не видит изменений в коде Аксапты rkorchagin DAX: Программирование 2 22.01.2010 11:43
Нужно сделать выборку из нескольких таблиц (в данном случае из четырех). niktata DAX: Программирование 10 30.09.2008 09:42
Можно ли в коде управлять свойством Mandatory? kostas DAX: Программирование 5 10.03.2004 11:14

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 22:54.