AXForum  
Go Back   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Forgotten Your Password?
Register Forum Rules FAQ Members List Today's Posts Search

 
 
Thread Tools Search this Thread Display Modes
Old 16.09.2019, 10:12   #1  
AnGor is offline
AnGor
Участник
AnGor's Avatar
 
97 / 46 (2) +++
Join Date: 30.08.2007
Location: Ulm
Blog Entries: 6
(D365FO) огромная разница времени выполнения запроса на SQL консоли и на AOS
Всем привет!
Вопрос по производительности.
Есть одна кастомная вьюха, на консоли выполняется за секунду, на AOS (в коде дата-провайдера, на первом вызове qr.next()) почти минута.
Почему такая большая разница?
D365FO, Update26 (7.0.5257.35417)
Забыл сказать - всё выполняется на OneBox VM

Last edited by AnGor; 16.09.2019 at 10:57.
Old 16.09.2019, 10:33   #2  
raz is offline
raz
NavAx
raz's Avatar
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,497 / 1096 (39) ++++++++
Join Date: 22.07.2003
Location: МО
В тему https://denistrunin.com/devvm-perfv10/
This post has been rated by: Logger (1), Ivanhoe (5).
Old 16.09.2019, 11:02   #3  
AnGor is offline
AnGor
Участник
AnGor's Avatar
 
97 / 46 (2) +++
Join Date: 30.08.2007
Location: Ulm
Blog Entries: 6
Quote:
Originally Posted by raz View Post
ни слова о запросах
почему в тему?
Old 16.09.2019, 12:26   #4  
raz is offline
raz
NavAx
raz's Avatar
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,497 / 1096 (39) ++++++++
Join Date: 22.07.2003
Location: МО
Quote:
Originally Posted by AnGor View Post
ни слова о запросах
почему в тему?
Потому что скорость может зависить от конфигурации "железа".
Old 16.09.2019, 12:41   #5  
AnGor is offline
AnGor
Участник
AnGor's Avatar
 
97 / 46 (2) +++
Join Date: 30.08.2007
Location: Ulm
Blog Entries: 6
Quote:
Originally Posted by raz View Post
Потому что скорость может зависить от конфигурации "железа".
OneBox VM, железо одно и тоже.
Выполняю запрос в консоли этой же VM - 1с
Алгоритм выполняет такой же запрос (посмотрено в Trace parser) - время выполнения 1 минута.
Old 16.09.2019, 12:49   #6  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,985 / 3273 (117) ++++++++++
Join Date: 12.10.2004
Location: Москва
Blog Entries: 2
Вот хорошая статья по вашей проблеме.
http://www.queryprocessor.ru/fast-in...-in-app-part1/
А при чем тут курсоры, не курсоры? кардинальное отличие во времени могут дать только разные планы

Last edited by Logger; 16.09.2019 at 12:52.
This post has been rated by: raz (5), AnGor (2).
Old 16.09.2019, 12:50   #7  
raz is offline
raz
NavAx
raz's Avatar
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,497 / 1096 (39) ++++++++
Join Date: 22.07.2003
Location: МО
Quote:
Originally Posted by AnGor View Post
OneBox VM, железо одно и тоже.
Выполняю запрос в консоли этой же VM - 1с
OK. Не понял этого.
Old 16.09.2019, 13:58   #8  
fed is offline
fed
Moderator
fed's Avatar
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,913 / 5736 (197) ++++++++++
Join Date: 13.03.2002
Location: Hüfingen,DE
Еще в SQL Server 2016 появилась очень медитативная тулза - Live Query Statistics Можно во время исполнения длинного запроса посмотреть, на какой части плана исполнения сейчас находится SQL Server.
This post has been rated by: raz (5), Logger (3), AnGor (2).
Old 16.09.2019, 20:35   #9  
AnGor is offline
AnGor
Участник
AnGor's Avatar
 
97 / 46 (2) +++
Join Date: 30.08.2007
Location: Ulm
Blog Entries: 6
получается, что sp_cursoropen берёт очень не оптимальный план.
пробовал через sp_executesql, как в статье советовали - всё быстро и с оптимальным планом
можно курсору как-то хороший план подсунуть?
Old 17.09.2019, 05:06   #10  
Vadik is offline
Vadik
Модератор
Vadik's Avatar
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1853 (69) ++++++++
Join Date: 18.11.2002
Location: гражданин Москвы
После
X++:
DBCC FREEPROCCACHE
время выполнения прежнее / лучше / хуже ? Навязать исполнение с ForceLiterals (в X++, свойствах Query, еще как-то) - пробовали? У нас же отчет, оверхед от рекомпиляции минимальный
__________________
-ТСЯ или -ТЬСЯ ?

Last edited by Vadik; 17.09.2019 at 10:04.
Old 17.09.2019, 09:47   #11  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,715 / 1204 (44) ++++++++
Join Date: 13.01.2004
Blog Entries: 3
Quote:
Originally Posted by AnGor View Post
получается, что sp_cursoropen берёт очень не оптимальный план.
Оптимальный. Но для курсора. А для курсора принципиально важно быстро вынуть одну (первую) запись, а не весь список. Как следствие, и план запроса по другому строится. Просто "побочная" цель немного отличается

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

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

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

В некоторых случаях может помочь обновление статистики. Но обновление статистики вещь "сиюминутная". Если эта вьюха будет выполняться относительно редко, то оптимальная для нее статистика будет "похоронена" под статистикой более часто выполняемых запросов
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
This post has been rated by: Vadik (1), trud (3), Logger (3), AnGor (2).
Old 17.09.2019, 16:23   #12  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,985 / 3273 (117) ++++++++++
Join Date: 12.10.2004
Location: Москва
Blog Entries: 2
https://habr.com/ru/post/313998/
This post has been rated by: raz (5), sukhanchik (5).
Old 18.09.2019, 10:07   #13  
AnGor is offline
AnGor
Участник
AnGor's Avatar
 
97 / 46 (2) +++
Join Date: 30.08.2007
Location: Ulm
Blog Entries: 6
Quote:
Originally Posted by Logger View Post
В моём случае DBCC FREEPROCCACHE не помогла, та и не хотел прибегать к этой процедуре.
Денис, вот, не советует злоупотреблять DBCC FREEPROCCACHE
https://denistrunin.com/performance-audit/
Old 18.09.2019, 18:01   #14  
AlexeyS is offline
AlexeyS
Участник
 
404 / 339 (12) ++++++
Join Date: 15.06.2004
Location: москва
Quote:
Originally Posted by AnGor View Post
получается, что sp_cursoropen берёт очень не оптимальный план.
пробовал через sp_executesql, как в статье советовали - всё быстро и с оптимальным планом
можно курсору как-то хороший план подсунуть?
Сегодня столкнулся с подобным плохим подбором плана.
Один хороший человек подсказал использовать на DS firstFast(false), помогло.
This post has been rated by: Logger (3).
Old 20.09.2019, 14:43   #15  
AnGor is offline
AnGor
Участник
AnGor's Avatar
 
97 / 46 (2) +++
Join Date: 30.08.2007
Location: Ulm
Blog Entries: 6
Quote:
Originally Posted by AlexeyS View Post
Сегодня столкнулся с подобным плохим подбором плана.
Один хороший человек подсказал использовать на DS firstFast(false), помогло.
попробовал - не помогло
Tags
performance, sql server, оптимизация, план запроса, производительность

 

Similar Threads
Thread Thread Starter Forum Replies Last Post
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

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Рейтинг@Mail.ru
All times are GMT +3. The time now is 10:20.
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Contacts E-mail, Advertising.