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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.01.2014, 19:26   #1  
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   #2  
MikeR is offline
MikeR
MCT
Аватар для MikeR
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
 
1,628 / 627 (24) +++++++
Регистрация: 28.11.2005
Адрес: просто землянин
Цитата:
Сообщение от belugin Посмотреть сообщение
Может быть в данном конкретном случае то никогда не случится, а может быть это случится на следующей неделе - попробуй, например, запустить этот процесс с двух машин одновременно
Правильно ли я тебя понимаю, что когда, допустим в разноске надо обновить два десятка таблиц и вставить в еще пару десятков, то методологически правильно открывать ОДНУ транзакцию, вешать блокировку while select forupdate по обновляемым таблицам? Иначе тоже может произойти пук и мы потеряем целостность, то есть запишем в таблицу налогов одни цифири, а допустим документы не обновим.
__________________
Axapta book for developer
Старый 23.01.2014, 08:12   #3  
macklakov is offline
macklakov
NavAx
Аватар для macklakov
 
2,347 / 996 (38) +++++++
Регистрация: 03.04.2002
Цитата:
Сообщение от MikeR Посмотреть сообщение
Правильно ли я тебя понимаю, что когда, допустим в разноске надо обновить два десятка таблиц и вставить в еще пару десятков, то методологически правильно открывать ОДНУ транзакцию
Насколько я понимаю, именно в этом смысл транзакции и есть.
__________________
Isn't it nice when things just work?
Старый 23.01.2014, 08:47   #4  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,449 / 1792 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от MikeR Посмотреть сообщение
допустим в разноске надо обновить два десятка таблиц и вставить в еще пару десятков, то методологически правильно открывать ОДНУ транзакцию, вешать блокировку while select forupdate по обновляемым таблицам?
Если объемы необходимых изменений столь велики, то методологически правильно сначала вне транзакции выполнить все долгие вычисления и получить "грязные" данные, а потом в одной транзакции минимально затратным способом их применить "на чисто", естественно убедившись что с момента вычисления данные не устарели. Конечно поддержка такого рода механизмов изначально должна быть заложена в архитектуру данных. Например, хорошо когда архитектура данных позволяет вместо полного пересчета устаревших данных, учесть в новом расчете только новые изменения, произошедшие с момента предыдущего расчета.

И даже здесь возникает дилемма, что лучше заблокировать два десятка таблиц на 5 минут и гарантированно выполнить разноску? Или пересчитывать постоянно меняющиеся данные до посинения? Это уже организационный вопрос и решать его нужно организационными методами. Например, если оперативность разноски не критична, то выносить такую разноску в пакетное задание на ночь.
Старый 23.01.2014, 08:57   #5  
MikeR is offline
MikeR
MCT
Аватар для MikeR
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
 
1,628 / 627 (24) +++++++
Регистрация: 28.11.2005
Адрес: просто землянин
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение

И даже здесь возникает дилемма, что лучше заблокировать два десятка таблиц на 5 минут и гарантированно выполнить разноску? Или пересчитывать постоянно меняющиеся данные до посинения? Это уже организационный вопрос и решать его нужно организационными методами. Например, если оперативность разноски не критична, то выносить такую разноску в пакетное задание на ночь.
Вопрос черновика и беловика даже не обсуждается, но и беловик разными процессами обновляется. Если допустим накладную разносить по ночам, то клиенты. которые приехали за товаром, загрузили в машину, а с накладной им говорят -"приходите завтра", просто разбегутся. И получается, что мы сидим и ждем, пока накладная ИП Иванова проведется, далее еще человек сто так же терпиливо ожидает.
__________________
Axapta book for developer
Старый 23.01.2014, 11:14   #6  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от MikeR Посмотреть сообщение
Правильно ли я тебя понимаю, что когда, допустим в разноске надо обновить два десятка таблиц и вставить в еще пару десятков, то методологически правильно открывать ОДНУ транзакцию,
Это зависит от того, какие механизмы используются. Например, каждый документ можно запихать в отдельную транзакцию - так как у него есть свой отдельный статус. В приведенном выше примере ты предлагаешь разбить проведение одного документа на отдельные транзакции - в этом случае надо вводить какую-то новую сущность для контроля разноски частей документа.

См. также давнишнюю статью Fed'а про то, как избегают блокировок в inventory
Теги
базовая информация, транзакции

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Коллеги, что вы думаете о данном коде? 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, время: 04:21.