SQL Server 2014 — некоторые запросы очень медленные (оценщик мощности)

В нашей производственной среде у нас было несколько серверов с SQL server 2012 SP2+Windows Server 2008R2. 3 месяца назад мы мигрировали все серверы на SQL Server 2014 SP1+Windows Server 2012 R1. Мы создали новые серверы с новой конфигурацией (больше оперативной памяти, больше процессора, больше места на диске) и сделали резервную копию наших баз данных с SQL Server 2012 --> восстановление на новые SQL Server 2014 серверы. После восстановления мы изменили уровень совместимости со 110 на 120+Rebuild Index+Update статистику.

Но теперь у нас есть проблемы с несколькими запросами, которые выполняются очень медленно при уровне совместимости 120. Если мы изменим уровень совместимости на старый 110, он будет работать очень быстро.

Я много искал по этой проблеме, но ничего не нашел.


person Yusif Yusifov    schedule 21.08.2015    source источник


Ответы (1)


SQL Server 2014 представляет новый оценщик кардинальности

Одним из улучшений производительности в SQL Server 2014 является переработка оценки кардинальности. Компонент, выполняющий оценку кардинальности (CE), называется оценщиком кардинальности. Это важный компонент процессора запросов SQL для создания плана запроса. Оценки кардинальности — это прогнозы конечного количества строк и количества строк промежуточных результатов (таких как соединения, фильтрация и агрегирование). Эти оценки напрямую влияют на выбор плана, например порядок соединения, тип соединения и т. д. До SQL Server 2014 средство оценки количества элементов в значительной степени основывалось на кодовой базе SQL Server 7.0. В SQL Server 2014 представлен новый дизайн, а новый оценщик количества элементов основан на исследованиях современных рабочих нагрузок и изучении прошлого опыта.

Флаги трассировки 9481 и 2312 можно использовать для управления используемой версией Оценщика количества элементов.

Проверьте запросы, которые вызывают проблемы, и сравните значения свойств плана выполнения расчетное количество строк и фактическое количество строк в 2008 и 2014 годах.

Оценки количества элементов в Microsoft SQL Server 2014


Начиная с SQL Server 2016+ можно было установить старую оценку количества элементов для каждой базы данных без использования флагов трассировки или изменения уровня совместимости БД на 110.

ИЗМЕНИТЬ КОНФИГУРАЦИЮ ОБЛАСТИ БАЗЫ ДАННЫХ

Этот оператор позволяет настроить ряд параметров конфигурации базы данных на уровне отдельной базы данных, независимо от этих параметров для любой другой базы данных.

LEGACY_CARDINALITY_ESTIMATION = { ВКЛ | ВЫКЛ | ОСНОВНОЙ

Позволяет задать для модели оценки количества элементов оптимизатора запросов версию SQL Server 2012 и более ранние версии независимо от уровня совместимости базы данных. Это эквивалентно Trace Flag 9481. Чтобы установить это на уровне экземпляра, см. Флаги трассировки (Transact-SQL). Чтобы выполнить это на уровне запроса, добавьте подсказку запроса QUERYTRACEON.

ВКЛ

Задает модель оценки количества элементов оптимизатора запросов для SQL Server 2012 и более ранней версии модели оценки количества элементов.

ВЫКЛ

Задает модель оценки кардинальности оптимизатора запросов на основе уровня совместимости базы данных.

ALTER DATABASE SCOPED CONFIGURATION SET LEGACY_CARDINALITY_ESTIMATION = ON;
person Lukasz Szozda    schedule 21.08.2015