20.01.2022, 15:23 | #1 |
Участник
|
Кэширование данных на форме (DAX2012)
Добрый день!
Так как в данном вопросе полный нуль, хотел уточнить есть ли возможность произвести аудит кэширования данных на форме с целью оптимизации? Первичный анализ показал, что форма заказа на покупку: 1) при открытии затрачивает 10 секунд 2) при первом executeQuery 2 мин 3) при последующих 10-15 секунд. Хотелось бы детально понять что происходит на 2 этапе. |
|
20.01.2022, 15:37 | #2 |
Участник
|
Добрый день.
Для проведения аудита быстродействия используйте: - Microsoft Dynamics AX Trace Parser (https://docs.microsoft.com/en-us/dyn...traceparser_34), поиск проблемных мест в коде; - SQL Profiler (https://docs.microsoft.com/en-us/sql...l-server-ver15), поиск проблемных мест в бд. Разумеется эти инструменты не являются единственными... |
|
|
За это сообщение автора поблагодарили: vmoskalenko (6), DesparioN (1). |
21.01.2022, 12:02 | #3 |
Участник
|
|
|
21.01.2022, 13:08 | #4 |
Участник
|
Цитата:
Ну а понимание бизнес-процессов, оно как коньяк - всегда полезно |
|
28.01.2022, 12:05 | #5 |
Участник
|
Если возможно, нужна консультация.
Я воспользовался trace parser. Удалил тяжелые дисплейные методы. Теперь из тяжелого это строка servernext. Если я правильно понял это и есть непосредственный select в БД. Однако почему то только на первом обновлении формы данный процесс занимает 93к ms. В остальных случаях 1.1к ms. Я правильно понимаю, что в скуле где то кэшируется запрос, поэтому при повторном обращении все работает так быстро и тут ничего не исправишь, или же есть какие то способы ускорить? |
|
28.01.2022, 12:18 | #6 |
Участник
|
Смотрите, какой конкретно запрос выполняется - можно со стороны аксапты пытаться добавить индексов, например. Ну и со стороны SQL играться со статистикой, выбором планов и пр. стандартными методами.
Ну и в Аксапте, опять же, посмотреть что именно в запросе тормозит больше всего - не исключено, что если из запроса что-то убрать, заменив на дисплей-метод или вьюшку, это в результате даст прирост производительности. |
|
28.01.2022, 14:31 | #7 |
Участник
|
Есть собственно выборка (запрос) и есть просмотр результатов этой выборки. Очевидно, что когда данные получены перемещение от одной записи выборки к другой происходит "мгновенно"
Именно по этой причине, как правило, открытие формы - относительно медленный процесс, а вот перемещение по записям в уже открытой форме происходит быстро. Ну, если не тормозят разные дисплейные методы и разные операции, выполняемые при перемещении по строкам. Физически, на уровне SQL это оформлено как работа с курсорами. Т.е. выборка Axapta формирует SQL-курсор (CREATE ... CURSOR FOR ...), а потом перемещается по этому курсору. Эту особенность следует иметь в виду, если будете делать отладку запроса напрямую в SQL Manager. Надо оптимизировать не прямой запрос, а вот этот курсор. Там разные планы выполнения могут быть.
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
28.01.2022, 14:38 | #8 |
Banned
|
Цитата:
Сообщение от Logger
Возможно я неточно выразился тогда, но задачка явно была на какие то узкие математические упражнения. В ERP задачах такое точно никогда бы не потребовалось. Может в каких-нить микроконтроллерах или системах реального времени - допускаю, да.
Ну а понимание бизнес-процессов, оно как коньяк - всегда полезно Это вода без которой никак. ERP программисту якобы важнее знания бизнес-процессов |
|
28.01.2022, 14:55 | #9 |
Banned
|
Цитата:
Сообщение от DesparioN
Добрый день!
Так как в данном вопросе полный нуль, хотел уточнить есть ли возможность произвести аудит кэширования данных на форме с целью оптимизации? Первичный анализ показал, что форма заказа на покупку: 1) при открытии затрачивает 10 секунд 2) при первом executeQuery 2 мин 3) при последующих 10-15 секунд. Хотелось бы детально понять что происходит на 2 этапе. Если на форме нет кастомизаций требующих ревью и полагая что с табличными индексами все OK то есть стандартные рекомендации для стандарта Configure client performance options https://docs.microsoft.com/en-us/dyn...rmance-options Цитата:
To improve performance, you can reduce the use of FactBoxes and preview panes, or set forms to preload in your environment.
the check box "Execute Business Process in CIL". То есть в условном продакшн таких задержек может и не быть или могут быть только первый раз после деплоймента. P.S. Даже если не ответил на вопрос, то так или иначе близко к теме. Последний раз редактировалось ax_mct; 28.01.2022 в 15:00. |
|
28.01.2022, 15:07 | #10 |
Участник
|
Результат оказался неожиданным (для меня)
Как оказалось форма наследует query с вызываемого listpage. Как только привел query к стандарту, то действия над формой начали занимать 2-3 секунды. Остается открытым вопрос почему тогда открытие формы происходит быстро. Получается кэш запроса с listpage изначально наследуется, а при первом обновлении кэш уже создается для нового объекта... |
|
28.01.2022, 18:04 | #11 |
Участник
|
В менюитеме вроде было свойство copyquery
Можно им поиграть. |
|
|
|