2015-08-21 2 views
2

В нашей производственной среде у нас было несколько серверов с 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.SQL Server 2014 - некоторые запросы очень медленные (оценка мощности)

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

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

ответ

4

SQL Server 2014 вводит new cardinality estimator

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

Флаги трассировки 9481 и 2312 могут быть использованы для контроля версии по мощности оценщика используются.

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

Cardinality Estimates in Microsoft SQL Server 2014


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

ALTER DATABASE SCOPED CONFIGURATION

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

LEGACY_CARDINALITY_ESTIMATION = {ON | ВЫКЛ | PRIMARY}

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

НА

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

OFF

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

ALTER DATABASE SCOPED CONFIGURATION SET LEGACY_CARDINALITY_ESTIMATION = ON;