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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 09.09.2019, 10:14   #1  
kgksoft is offline
kgksoft
Участник
 
37 / 107 (4) +++++
Регистрация: 24.12.2003
:) AX 2012 R3. Ускорение sp_WHSOnHand и sp_WHSOnHandWithDelta
Существенное ускорение процедур получения остатков в штатных WHS процедурах в базе MSSQL. Штатные крутили цикл и могли выполнять до 11 вызовов (на моих аналитиках) select на один остаток.

На старых процедурах на моих данных видел клинические случаи получения остатков 1 час 45 минут на один вызов. Новые менее 1 секунды. При большом объеме InventDim и WHSInventReserve это действительно проблема.

Конечно, у каждого в базе складские аналитики могут немного отличаться, но при этом меняется только число параметров в процедуре и условия в выражении WHERE. При полной синхронизации базы хранимые процедуры естественно слетят. Нужно править код X++. У себя не запускаю давно.

sp_WHSOnHand.txt
sp_WHSOnHandWithDelta.txt
За это сообщение автора поблагодарили: KiselevSA (5), Vadik (1), trud (5), raz (5), sukhanchik (5), Logger (5), gl00mie (5), SRF (5), AnGor (2), imir (2).
Старый 09.09.2019, 21:43   #2  
kgksoft is offline
kgksoft
Участник
 
37 / 107 (4) +++++
Регистрация: 24.12.2003
Спросили про сбои. Сбоев не было. Процедуры вызываются при запросе по "дырявым аналитикам" когда между соседними аналитиками по иерархии резервирования есть пропуски.
У меня в продакшене уже недели 3 крутиться. Никто разницы не заметил (кроме веб-сервисов) которые штатно проседали до 6-8 секунд на один запрос остатков (склад + ячейка), а теперь все это в прошлом. Работает мгновенно.

По началу весь механизм остатков в исполнении WHS сплошная боль и печаль. Но если разобраться с хранением данных по уровням в WHSInventReserve + с этими процедурами, то местами даже лучше модели InventSum + InventDim.
Старый 10.09.2019, 02:36   #3  
trud is offline
trud
Участник
Лучший по профессии 2017
 
1,039 / 1633 (57) ++++++++
Регистрация: 07.06.2003
Записей в блоге: 1
Спасибо что поделились, но хотелось бы подробностей
Делаете ли вы очистку складских остатков? т.е. вот это время 6-8 секунд - это время после очистки остатков или она не используется?
https://cloudblogs.microsoft.com/dyn...eserve-tables/
Цитата:
Large number of records in WHSINVENTRESERVE that have all Qty fields = 0 – A new clean up job called “Warehouse management on-hand entries cleanup” has been added under the Inventory management module under Periodic > Clean up. The clean-up job will delete the records in the InventSum and WHSInventReserve table for closed on-hand entries. The impact of running this clean up on a regular basis is significant performance improvements of On-hand related inquiries.*
Также MS выпустил какой-то фикс для этой процедуры - он у вас был установлен?
Цитата:
KB 3112873 This fix optimizes the sp_WHSOnHand stored procedure to use better query plans and make sure it is only called when absolutely necessary.
Старый 10.09.2019, 06:55   #4  
kgksoft is offline
kgksoft
Участник
 
37 / 107 (4) +++++
Регистрация: 24.12.2003
Чисткой WHSInventReserve занимался, но занятие неблагодарное. Что-то в районе 22 млн -> 20 млн превратилось. И работало дня 2. Сейчас 38 млн. (InventDim 97 млн)

У меня установлен CU11 (29 Jun 2016), так что все фиксы микрософт на тот момент уже вышли. Смотрел на реализацию в CU13 она не изменилась.
Там проблема в реализации самой процедуры. Не может цикл с селектами работать быстро, а у меня веб-сервисы по получению остатков. И ответ должен быть быстрым.
Старый 10.09.2019, 08:41   #5  
trud is offline
trud
Участник
Лучший по профессии 2017
 
1,039 / 1633 (57) ++++++++
Регистрация: 07.06.2003
Записей в блоге: 1
Цитата:
Сообщение от kgksoft Посмотреть сообщение
20 млн превратилось
20 млн ненулевых записей?
это конечно очень много, на типичном складе если я правильно понимаю это будет число порядка числа ячеек(т.е. несколько десятков тысяч).
В целом неудивительно что стандарт перестал работать

Последний раз редактировалось trud; 10.09.2019 в 08:46.
Старый 11.09.2019, 08:21   #6  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
647 / 350 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Цитата:
Сообщение от trud Посмотреть сообщение
20 млн ненулевых записей?
это конечно очень много, на типичном складе если я правильно понимаю это будет число порядка числа ячеек(т.е. несколько десятков тысяч).
В целом неудивительно что стандарт перестал работать
На производстве это нормально. В зависимости от того, как быстро идет производство, в день может генерироваться около тысячи серийников. У нас в АХ 4.0 в какой-то момент начались сбои стандартного функционала, и стал дублироваться InventDimId. Проблему пофиксили и сейчас у нас 50 млн записей в InventDim.
__________________
// no comments
Старый 11.09.2019, 10:08   #7  
trud is offline
trud
Участник
Лучший по профессии 2017
 
1,039 / 1633 (57) ++++++++
Регистрация: 07.06.2003
Записей в блоге: 1
Цитата:
Сообщение от dech Посмотреть сообщение
На производстве это нормально. у нас 50 млн записей в InventDim.
Ну тут разговор о WHSInventReserve и InventSum.
Если у вас 20 млн ненулевых записей в этих таблицах, то думаю что это не нормально даже для производства. По сути же это незакрытый товар на балансе
Старый 11.09.2019, 14:12   #8  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от trud Посмотреть сообщение
Ну тут разговор о WHSInventReserve и InventSum.
Если у вас 20 млн ненулевых записей в этих таблицах, то думаю что это не нормально даже для производства
сильно зависит от сетапа - у нас к примеру есть клиент у которого стабильное распределение данных это 90-95% склада "закрыто" физически но все еще "открыто" финансово (остатки чистятся и пересчитываются регулярно)
__________________
-ТСЯ или -ТЬСЯ ?
Старый 11.09.2019, 17:02   #9  
trud is offline
trud
Участник
Лучший по профессии 2017
 
1,039 / 1633 (57) ++++++++
Регистрация: 07.06.2003
Записей в блоге: 1
А этот фикс не пробовали ставить-запускать? Похоже на ваше описание

Цитата:
The On-hand entries aggregation by financial dimensions is introduced with KB 3007375 around December 2014. https://fix.lcs.dynamics.com/Issue/R...&bugId=2816224.

This is basically extending the previously mentioned cleanup tool by also cleaning up records which have field Closed set to True!

The reason why this is needed is basically because in certain scenarios, you might have no more quantities in InventSum for a certain combination of inventory dimensions, but there is still a value. In some cases, these values will disappear, but current design does allow values to remain from time to time.
Старый 11.09.2019, 17:16   #10  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от trud Посмотреть сообщение
А этот фикс не пробовали ставить-запускать? Похоже на ваше описание
примеряемся
__________________
-ТСЯ или -ТЬСЯ ?
Старый 11.09.2019, 17:16   #11  
kgksoft is offline
kgksoft
Участник
 
37 / 107 (4) +++++
Регистрация: 24.12.2003
Цитата:
Сообщение от trud Посмотреть сообщение
А этот фикс не пробовали ставить-запускать? Похоже на ваше описание
запускал, но он только с InventSum работает, а у нас по складам включен новый функционал WHS. Резервы в InventSum не отражены. Сам функционал WHS не особо нужен, но приходится работать с тем что имеем.
Старый 12.09.2019, 07:11   #12  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
647 / 350 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Цитата:
Сообщение от trud Посмотреть сообщение
Ну тут разговор о WHSInventReserve и InventSum.
Если у вас 20 млн ненулевых записей в этих таблицах, то думаю что это не нормально даже для производства. По сути же это незакрытый товар на балансе
InventDim - сопутствующая таблица, и в большинстве случаев InventSum выбираем именно с ней. Поэтому объем записей в ней для нас также критичен. Регулярно подчищаем, чтобы не было неиспользованных записей. Нулевые записи в InventSum тоже убираем (ну там 1 млн из 30 удалится - и то хорошо).
__________________
// no comments
Теги
ax 2012 r3, ax2012r3, performance, sp_whsonhand, sp_whsonhandwithdelta, whs, полезное, производительность

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
dynamicsaxse: March release – Dynamics AX 2012 R3 Blog bot DAX Blogs 3 24.07.2017 13:55
emeadaxsupport: How to slip-stream AX 2012 R3 Cu 8 Blog bot DAX Blogs 0 21.04.2015 11:11
emeadaxsupport: AX Content: Deploy AX 2012 R3 on Azure Blog bot DAX Blogs 0 12.05.2014 06:17
amer-ax: It was a great day! Blog bot DAX Blogs 3 29.12.2012 01:02
emeadaxsupport: New Content for Microsoft Dynamics AX 2012 : October 2011 Blog bot DAX Blogs 0 27.10.2011 17:11

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

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

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