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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.07.2017, 18:11   #1  
Blog bot is offline
Blog bot
Участник
 
25,643 / 848 (80) +++++++
Регистрация: 28.10.2006
axinthefield: SQL Server 2016 CE and Dynamics AX 2012 R3
Источник: https://blogs.msdn.microsoft.com/axi...cs-ax-2012-r3/
==============

Hello, everyone!  As many of you are already aware, SQL Server’s Cardinality Estimator received its first update in SQL Server 2014 (this was its first update since SQL Server 7.0), then again in SQL Server 2016.  Many customers on Dynamics AX 2012 R3 who have upgraded to SQL Server 2016 and have changed the compatibility...

Источник: https://blogs.msdn.microsoft.com/axi...cs-ax-2012-r3/
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору.
За это сообщение автора поблагодарили: Logger (1).
Старый 07.07.2017, 06:40   #2  
trud is offline
trud
Участник
Лучший по профессии 2017
 
1,039 / 1633 (57) ++++++++
Регистрация: 07.06.2003
Записей в блоге: 1
о, вот еще один пример вдумчивого и кропотливого анализа. типа что-то не сработало, отключаем.
т.е. логика того, что новый оптимизатор из 100 запросов может улучшить 90(что скорее всего не заметят пользователи, ибо работает и работает), а 10 станут хуже(что они конечно же заметят) и что эти 10 можно как-то подтюнить даже не рассматривается

Последний раз редактировалось trud; 07.07.2017 в 06:46.
Старый 12.09.2017, 18:54   #3  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от trud Посмотреть сообщение
т.е. логика того, что новый оптимизатор из 100 запросов может улучшить 90(что скорее всего не заметят пользователи, ибо работает и работает), а 10 станут хуже(что они конечно же заметят) и что эти 10 можно как-то подтюнить даже не рассматривается
Все логично. Включаем, тестируем, применяем на продуктиве. Если там что-то идет не так, откручиваем уровень совместимости обратно, тюним. Далее цикл повторяется
__________________
-ТСЯ или -ТЬСЯ ?
Старый 17.01.2025, 11:41   #4  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,957 / 3232 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от trud Посмотреть сообщение
т.е. логика того, что новый оптимизатор из 100 запросов может улучшить 90(что скорее всего не заметят пользователи, ибо работает и работает), а 10 станут хуже(что они конечно же заметят) и что эти 10 можно как-то подтюнить даже не рассматривается
Цитата:
Сообщение от Vadik Посмотреть сообщение
Если там что-то идет не так, откручиваем уровень совместимости обратно, тюним.
А вот интересно, кто-нить пробовал вместо включения LEGACY_CARDINALITY_ESTIMATION как советуют в статье
https://web.archive.org/web/20190112...cs-ax-2012-r3/

Цитата:
Hello, everyone! As many of you are already aware, SQL Server's Cardinality Estimator received its first update in SQL Server 2014 (this was its first update since SQL Server 7.0), then again in SQL Server 2016. Many customers on Dynamics AX 2012 R3 who have upgraded to SQL Server 2016 and have changed the compatibility mode to 130 have experienced performance degradation. This is a result of the new Cardinality Estimator. To resolve this issue, instead of changing the compatibility level down to 110 (SQL Server 2012), you can change several options at the database level while leaving the compatibility level at 130:

< set_options > ::=
{
MAXDOP = {<value>}
| LEGACY_CARDINALITY_ESTIMATION = { ON | OFF | PRIMARY}
| PARAMETER_SNIFFING = { ON | OFF | PRIMARY}
| QUERY_OPTIMIZER_HOTFIXES = { ON | OFF | PRIMARY}
}

Please note that in SQL Server 2016, MAXDOP is now a database-level setting. Setting MAXDOP to 1 is still a recommended setting for Dynamics AX.
использовать
QUERY_OPTIMIZER_HOTFIXES
?

Последний раз редактировалось Logger; 17.01.2025 в 12:04.
Старый 17.01.2025, 11:42   #5  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,957 / 3232 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Спрашиваю потому что столкнулся с похожей проблемой.
Причем в моем случае QUERY_OPTIMIZER_HOTFIXES также помогает.

Но это я смотрел пока только один запрос. Не факт что поможет в других случаях.

Последний раз редактировалось Logger; 17.01.2025 в 11:54.
Старый 17.01.2025, 12:33   #6  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,957 / 3232 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от Masel Посмотреть сообщение
[B]
По поводу расчета кардинальности На сколько я помню там было очень много странных планов, и пришлось много план гайдов сделать, чтобы снять "пожар" начальный. Больше всего такое удивляло. Есть запрос к таблице в 100 тысяч строк с единственным фильтром по полю из некластерного индекса. Тут даже без статистики понятно, что оптимизатор должен сделать index seek по этому полю и далее по результату lookup на кластерный. Но оптимизатор ищет по кластерному. Пересчитываешь статикику фулсканом, ставишь конкретные значения параметров, все равно кластерный индекс. Поведение такое, как будто там 10 строк. При переключении на старый алгоритм все эти странности пропадают.
Похоже там что-то со статистикой не так, а именно с гистограммами значений.

В моем случае в таблице 3 млн записей.
В индексированном поле по которому идет фильтрация всего 20 записей имеют непустое значение (и все разное)

Пробовал смотреть для индекса статистику командой
DBCC SHOW_STATISTICS
в разделе с гистограммами значений только одно значение после обычного обновления статистики командой UPDATE STATISTICS tablename (думает 7 секунд)
А если
UPDATE STATISTICS tablename WITH FULLSCAN (думает 3 минуты)
то в гистограмме видно все 20 значений и план запроса выправляется

аналогичный эффект имеет
UPDATE STATISTICS tablename WITH FULLSCAN, INDEX (думает 20 секунд)
только работает намного быстрее.

Жаль что в 2012-й отключили index hint
Он бы решил проблему.
Теги
ax2012r3, cardinality, cbo, legacy_cardinality_estimation, sql server 2016

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
crminthefield: Podcast and Overview: Microsoft Dynamics CRM 2011 Update Rollup 15 Blog bot Dynamics CRM: Blogs 1 10.02.2016 10:26
crminthefield: Podcast and Overview: Microsoft Dynamics CRM 2013 Update Rollup 2 Blog bot Dynamics CRM: Blogs 0 15.04.2014 01:15
crminthefield: Podcast and Overview: Microsoft Dynamics CRM 2011 Update Rollup 14 Blog bot Dynamics CRM: Blogs 0 12.07.2013 07:13
crminthefield: Podcast and Overview: Microsoft Dynamics CRM 2011 Update Rollup 11 Blog bot Dynamics CRM: Blogs 0 06.10.2012 05:27
crminthefield: Podcast and Overview: Microsoft Dynamics CRM 2011 Update Rollup 4 Blog bot Dynamics CRM: Blogs 0 24.09.2011 01:16
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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