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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 10.02.2021, 17:11   #11  
kgksoft is offline
kgksoft
Участник
 
37 / 107 (4) +++++
Регистрация: 24.12.2003
Post Заметки о BatchRun
2012 R3. Внесены все изменения по мьютексам в BatchRun и даже больше (ускоряющие хинты), но неожиданно всплыла очень медленная вставка в таблицу BatchConstraintsHistory. Из-за этого другие пакетники нарываются на блокировку мьютекса и ничего не стартует и не двигается десятками минут. Переиндексации и обновление статистик тут особо не работают, так как таблички часто меняются, а структура запроса не позволяла применить стандартные мантры хинтов из 2012 (forceSelectOrder forceNestedLoop). Но удалось переписать и этот запрос. Может кому-то пригодится.

BatchRun.serverProcessFinishedJobs


Оригинальный код:
X++:
        insert_recordset batchConstraintsHistory
            (BatchId, ExpectedStatus, DependsOnBatchId)
        select RecId from batchHistory
            join ExpectedStatus from batchConstraints
                where batchHistory.BatchId == batchConstraints.BatchId
            join RecId from batchHistoryDepends
                where batchHistoryDepends.BatchId == batchConstraints.DependsOnBatchId
            exists join batchJobHistory
                where batchJobHistory.Finishing == 1 && batchJobHistory.RecId == batchHistory.BatchJobHistoryId
                && batchJobHistory.RecId == batchHistoryDepends.BatchJobHistoryId;
Заменил на:
X++:
        insert_recordset batchConstraintsHistory
            (DependsOnBatchId, ExpectedStatus, BatchId)
        select forcePlaceholders forceSelectOrder forceNestedLoop batchJobHistory
            where batchJobHistory.Finishing == 1
        join RecId
        from batchHistoryDepends
            where batchHistoryDepends.BatchJobHistoryId == batchJobHistory.RecId
        join ExpectedStatus
        from batchConstraints
            where batchConstraints.DependsOnBatchId == batchHistoryDepends.BatchId
        join RecId
        from batchHistory
            where batchHistory.BatchJobHistoryId == batchJobHistory.RecId
                && batchHistory.BatchId == batchConstraints.BatchId;
За это сообщение автора поблагодарили: Logger (3), A_BAS (2).
Теги
ax2012, batch, batchrun, reqreaderwriterlock, баг, блокировки, закрытие склада

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
emeadaxsupport: AX Performance - Analyzing key SQL Server configuration and database settings Blog bot DAX Blogs 0 28.09.2015 14:11
emeadaxsupport: AX for Retail 2012 R2: Run-down on Log Files Blog bot DAX Blogs 0 21.06.2013 08:11
emeadaxsupport: AX for Retail 2012 R2: Installing the Real-time Service Blog bot DAX Blogs 0 19.12.2012 11:11
dynamicsaxtraining: Purchase Blog bot DAX Blogs 0 11.03.2012 05:25
dynamics-ax: Interview with Microsoft's Lachlan Cash on his new role, AX 2012 and more Blog bot DAX Blogs 6 22.04.2011 14:55

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

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

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