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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.09.2019, 10:12   #1  
AnGor is offline
AnGor
Участник
Аватар для AnGor
 
97 / 46 (2) +++
Регистрация: 30.08.2007
Адрес: Ulm
Записей в блоге: 6
(D365FO) огромная разница времени выполнения запроса на SQL консоли и на AOS
Всем привет!
Вопрос по производительности.
Есть одна кастомная вьюха, на консоли выполняется за секунду, на AOS (в коде дата-провайдера, на первом вызове qr.next()) почти минута.
Почему такая большая разница?
D365FO, Update26 (7.0.5257.35417)
Забыл сказать - всё выполняется на OneBox VM

Последний раз редактировалось AnGor; 16.09.2019 в 10:57.
Старый 16.09.2019, 10:33   #2  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,490 / 1060 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
В тему https://denistrunin.com/devvm-perfv10/
За это сообщение автора поблагодарили: Logger (1), Ivanhoe (5).
Старый 16.09.2019, 11:02   #3  
AnGor is offline
AnGor
Участник
Аватар для AnGor
 
97 / 46 (2) +++
Регистрация: 30.08.2007
Адрес: Ulm
Записей в блоге: 6
Цитата:
Сообщение от raz Посмотреть сообщение
ни слова о запросах
почему в тему?
Старый 16.09.2019, 12:26   #4  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,490 / 1060 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
Цитата:
Сообщение от AnGor Посмотреть сообщение
ни слова о запросах
почему в тему?
Потому что скорость может зависить от конфигурации "железа".
Старый 16.09.2019, 12:41   #5  
AnGor is offline
AnGor
Участник
Аватар для AnGor
 
97 / 46 (2) +++
Регистрация: 30.08.2007
Адрес: Ulm
Записей в блоге: 6
Цитата:
Сообщение от raz Посмотреть сообщение
Потому что скорость может зависить от конфигурации "железа".
OneBox VM, железо одно и тоже.
Выполняю запрос в консоли этой же VM - 1с
Алгоритм выполняет такой же запрос (посмотрено в Trace parser) - время выполнения 1 минута.
Старый 16.09.2019, 12:49   #6  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,867 / 3123 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Вот хорошая статья по вашей проблеме.
http://www.queryprocessor.ru/fast-in...-in-app-part1/
А при чем тут курсоры, не курсоры? кардинальное отличие во времени могут дать только разные планы

Последний раз редактировалось Logger; 16.09.2019 в 12:52.
За это сообщение автора поблагодарили: raz (5), AnGor (2).
Старый 16.09.2019, 12:50   #7  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,490 / 1060 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
Цитата:
Сообщение от AnGor Посмотреть сообщение
OneBox VM, железо одно и тоже.
Выполняю запрос в консоли этой же VM - 1с
OK. Не понял этого.
Старый 16.09.2019, 13:58   #8  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,890 / 5647 (194) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Еще в SQL Server 2016 появилась очень медитативная тулза - Live Query Statistics Можно во время исполнения длинного запроса посмотреть, на какой части плана исполнения сейчас находится SQL Server.
За это сообщение автора поблагодарили: raz (5), Logger (3), AnGor (2).
Старый 16.09.2019, 20:35   #9  
AnGor is offline
AnGor
Участник
Аватар для AnGor
 
97 / 46 (2) +++
Регистрация: 30.08.2007
Адрес: Ulm
Записей в блоге: 6
получается, что sp_cursoropen берёт очень не оптимальный план.
пробовал через sp_executesql, как в статье советовали - всё быстро и с оптимальным планом
можно курсору как-то хороший план подсунуть?
Старый 17.09.2019, 05:06   #10  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
После
X++:
DBCC FREEPROCCACHE
время выполнения прежнее / лучше / хуже ? Навязать исполнение с ForceLiterals (в X++, свойствах Query, еще как-то) - пробовали? У нас же отчет, оверхед от рекомпиляции минимальный
__________________
-ТСЯ или -ТЬСЯ ?

Последний раз редактировалось Vadik; 17.09.2019 в 10:04.
Старый 17.09.2019, 09:47   #11  
online
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,651 / 1158 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от AnGor Посмотреть сообщение
получается, что sp_cursoropen берёт очень не оптимальный план.
Оптимальный. Но для курсора. А для курсора принципиально важно быстро вынуть одну (первую) запись, а не весь список. Как следствие, и план запроса по другому строится. Просто "побочная" цель немного отличается

Как уже неоднократно упоминал, очень сильно исказить план выполнения может использование Exists в запросе. Если такая связка в запросе есть, то лучше ее заменить на Inner Join, если это возможно по логике запроса

Собственно, если Вы тестируете план выполнения напрямую в SQL Manager, то для запросов Axapta надо тестировать примерно такую конструкцию

X++:
declare MyCursor for select ... from ...
open MyCursor
fetch next from MyCursor
Это вернет только первую запись, но для анализа плана выполнения этого вполне достаточно, поскольку как раз на выборке первой записи курсора и "спотыкаемся"

В некоторых случаях может помочь обновление статистики. Но обновление статистики вещь "сиюминутная". Если эта вьюха будет выполняться относительно редко, то оптимальная для нее статистика будет "похоронена" под статистикой более часто выполняемых запросов
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
За это сообщение автора поблагодарили: Vadik (1), trud (3), Logger (3), AnGor (2).
Старый 17.09.2019, 16:23   #12  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,867 / 3123 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
https://habr.com/ru/post/313998/
За это сообщение автора поблагодарили: raz (5), sukhanchik (5).
Старый 18.09.2019, 10:07   #13  
AnGor is offline
AnGor
Участник
Аватар для AnGor
 
97 / 46 (2) +++
Регистрация: 30.08.2007
Адрес: Ulm
Записей в блоге: 6
Цитата:
Сообщение от Logger Посмотреть сообщение
В моём случае DBCC FREEPROCCACHE не помогла, та и не хотел прибегать к этой процедуре.
Денис, вот, не советует злоупотреблять DBCC FREEPROCCACHE
https://denistrunin.com/performance-audit/
Старый 18.09.2019, 18:01   #14  
AlexeyS is offline
AlexeyS
Участник
 
404 / 339 (12) ++++++
Регистрация: 15.06.2004
Адрес: москва
Цитата:
Сообщение от AnGor Посмотреть сообщение
получается, что sp_cursoropen берёт очень не оптимальный план.
пробовал через sp_executesql, как в статье советовали - всё быстро и с оптимальным планом
можно курсору как-то хороший план подсунуть?
Сегодня столкнулся с подобным плохим подбором плана.
Один хороший человек подсказал использовать на DS firstFast(false), помогло.
За это сообщение автора поблагодарили: Logger (3).
Старый 20.09.2019, 14:43   #15  
AnGor is offline
AnGor
Участник
Аватар для AnGor
 
97 / 46 (2) +++
Регистрация: 30.08.2007
Адрес: Ulm
Записей в блоге: 6
Цитата:
Сообщение от AlexeyS Посмотреть сообщение
Сегодня столкнулся с подобным плохим подбором плана.
Один хороший человек подсказал использовать на DS firstFast(false), помогло.
попробовал - не помогло
Теги
performance, sql server, оптимизация, план запроса, производительность

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
emeadaxsupport: Check AOS event logs and SQL Server error logs for key messages using DynamicsPerf Blog bot DAX Blogs 0 28.09.2016 16:11
Протокол SQL для AOS Maxim Gorbunov DAX: Администрирование 24 16.10.2013 18:00
Журнал трассировки операторов SQL - План запроса в "вопросах" vesna dba DAX: Администрирование 4 26.06.2007 11:59
Ускорение выполнения запроса Oracle + MS Axapta Горбунов Дмитрий DAX: Программирование 17 15.11.2005 18:13
В журнале трассировки операторов sql нету времени выполнения.. MironovI DAX: Программирование 3 31.08.2005 16:13
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 18:34.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.