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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 24.04.2016, 17:49   #1  
DTD is offline
DTD
Участник
 
183 / 18 (1) ++
Регистрация: 09.08.2005
Улучшение производительности
Подскажите как вы оптимизируете запросы к базе данных.

Есть несколько форм которые используют как источник данных View в которой объединены несколько таблиц, каждая по несколько миллинов записей в каждой.

Открываются вплоть до минуты.

Делаю трейс, нахожу самый тяжелый запрос, загружаю его в SQL, анализирую план выполнения, создаю индексы которые SQL рекомендует. Никаких изменений, иногда даже становится дольше , что еще можно проверить ?

По самим индексам которые рекомендует SQL вопросы:

1. Часто предлагает создать индекс по нескольким полям, но DataAreaId и Partition среди них нет.

2. Предлагает создать некластерный индекс по AccountNum на VendTable, хотя там уже такой кластерный есть.

Что в таких случаях делать ?

Почему точно такой же запрос с параметрами который в Аксапте выполняется за 1 минуту в SQL иногда зависает на почаса+ ? Как надежней тестрировать новые индексы, создавая их в SQL и запуская запросы там же, или через АХ?

Спасибо.
__________________
_databaseTransDelete ... bl@$ !
Старый 25.04.2016, 14:39   #2  
trud is offline
trud
Участник
Лучший по профессии 2017
 
1,038 / 1629 (57) ++++++++
Регистрация: 07.06.2003
Записей в блоге: 1
не смотря на план который предлагает SQL на бумажке делаете делаете собственный план запроса(т.е. как бы вы выбирали данные, если бы вам пришел такой запрос). потом сравниваете с тем что предлагает SQL. по идее вы должны зная свое решение генерить более оптимальные планы, так как обладаете информацией о логической структуре данных - понимаете для чего это вообще нужно(чего нет у SQL)
Старый 25.04.2016, 14:48   #3  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,429 / 1772 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от trud Посмотреть сообщение
по идее вы должны зная свое решение генерить более оптимальные планы, так как обладаете информацией о логической структуре данных - понимаете для чего это вообще нужно(чего нет у SQL)
У SQL вместо этого - статистика, которая может существенно влиять на выбор плана.
За это сообщение автора поблагодарили: mazzy (2).
Старый 25.04.2016, 14:51   #4  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от DTD Посмотреть сообщение
Что в таких случаях делать ?
думать.
далеко не всегда предложения по одному запросу соответствуют типовой нагрузке.

Цитата:
Сообщение от DTD Посмотреть сообщение
Почему точно такой же запрос с параметрами который в Аксапте выполняется за 1 минуту в SQL иногда зависает на почаса+ ?
потому что аксапта работает через курсоры.
бывает и наоборот, запрос, который выполняется в Аксапте полчаса в SQL выполняется за минуту

Цитата:
Сообщение от DTD Посмотреть сообщение
Как надежней тестрировать новые индексы, создавая их в SQL и запуская запросы там же, или через АХ?
если одним словом - статистикой.
Старый 25.04.2016, 14:56   #5  
trud is offline
trud
Участник
Лучший по профессии 2017
 
1,038 / 1629 (57) ++++++++
Регистрация: 07.06.2003
Записей в блоге: 1
Цитата:
Сообщение от mazzy Посмотреть сообщение
потому что аксапта работает через курсоры.
бывает и наоборот, запрос, который выполняется в Аксапте полчаса в SQL выполняется за минуту
А при чем тут курсоры, не курсоры? кардинальное отличие во времени могут дать только разные планы
Старый 25.04.2016, 15:19   #6  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от trud Посмотреть сообщение
А при чем тут курсоры, не курсоры? кардинальное отличие во времени могут дать только разные планы
не будем оффтопить в этой ветке
прошу сюда: А при чем тут курсоры, не курсоры? кардинальное отличие во времени могут дать только разные планы
Старый 26.04.2016, 13:12   #7  
Alex_KD is offline
Alex_KD
Участник
AxAssist
MCBMSS
Соотечественники
 
522 / 362 (14) ++++++
Регистрация: 06.07.2006
Адрес: Melbourne, Down Under
Не создавайте индексы которые SQL рекомендует - он не всегде прав!
Цитата:
Почему точно такой же запрос с параметрами который в Аксапте выполняется за 1 минуту в SQL иногда зависает на почаса+ ?
Возможно, что проблема с Parameter sniffing (и поэтому SQL использует разный план).
Для мониторинга производительности, установите DynamicsPerf.
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0
Теги
ax2012, dynamicsperf, performance

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Анализ производительности tolstjak DAX: Администрирование 4 04.02.2009 16:22
aEremenko: Тестирование производительности в DAX 4.0 Blog bot DAX Blogs 0 12.03.2008 16:05
И снова... о производительности... AKIS-Falcon DAX: Администрирование 53 14.10.2004 16:16
Тест производительности ksenia DAX: Администрирование 0 01.03.2004 23:27
Как использовать Анализ производительности mau DAX: Администрирование 3 17.12.2003 09:44

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

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

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