|
06.07.2017, 18:11 | #1 |
Участник
|
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 |
Участник
|
о, вот еще один пример вдумчивого и кропотливого анализа. типа что-то не сработало, отключаем.
т.е. логика того, что новый оптимизатор из 100 запросов может улучшить 90(что скорее всего не заметят пользователи, ибо работает и работает), а 10 станут хуже(что они конечно же заметят) и что эти 10 можно как-то подтюнить даже не рассматривается Последний раз редактировалось trud; 07.07.2017 в 06:46. |
|
12.09.2017, 18:54 | #3 |
Модератор
|
Все логично. Включаем, тестируем, применяем на продуктиве. Если там что-то идет не так, откручиваем уровень совместимости обратно, тюним. Далее цикл повторяется
__________________
-ТСЯ или -ТЬСЯ ? |
|
17.01.2025, 11:41 | #4 |
Участник
|
Цитата:
Цитата:
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 |
Участник
|
Спрашиваю потому что столкнулся с похожей проблемой.
Причем в моем случае QUERY_OPTIMIZER_HOTFIXES также помогает. Но это я смотрел пока только один запрос. Не факт что поможет в других случаях. Последний раз редактировалось Logger; 17.01.2025 в 11:54. |
|
17.01.2025, 12:33 | #6 |
Участник
|
Цитата:
Сообщение от 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 |
|
|