Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Эта статья поможет устранить проблему, возникающую при обновлении уровня совместимости базы данных с 120 до 130.
Исходная версия продукта: SQL Server 2016, SQL Server 2017 в Windows (все выпуски)
Исходный номер базы знаний: 3212023
Итоги
Рассмотрим следующий сценарий:
- Пространственный запрос выполняется с помощью фильтра с функцией, например
STIntersects
в SQL Server 2016 или SQL Server 2017 в Windows. - Уровень совместимости базы данных — 120.
- Запрос использует параллельный план выполнения.
- Вы обновляете уровень совместимости базы данных до 130, а план выполнения изменился с параллельного на последовательный.
В этом сценарии происходит снижение производительности, если запрос возвращает большой результирующий набор.
Решение
Чтобы устранить эту проблему, попробуйте один из следующих методов:
Восстановление уровня совместимости базы данных до 120. При этом вы не сможете воспользоваться некоторыми функциями, доступными в SQL Server 2016 или SQL Server 2017 в Windows на уровне совместимости базы данных 130. Однако вы по-прежнему сможете реализовать множество улучшений, которые не привязаны к уровню совместимости базы данных, например, общее улучшение производительности операций запросов с пространственными типами данных.
Список улучшений SQL Server 2016, требующих уровня совместимости базы данных 130, см. в разделе ALTER DATABASE (Transact-SQL).
Принудить план, созданный с уровнем совместимости базы данных 120, если он обеспечивает более высокую производительность. Этот план можно принудительно запустить с уровнем совместимости базы данных 130 с помощью
USE PLAN
указания запроса. Дополнительные сведения об использовании подсказок см. в разделе "Подсказки" (Transact-SQL) — запрос.Кроме того, используйте хранилище запросов для выявления и исправления определенных вариантов плана. Дополнительные сведения об использовании хранилище запросов для этой цели см. в хранилище запросов сценариях использования.
Дополнительная информация
Уровни совместимости базы данных SQL Server 120 и 130 используют различные подходы к оценке кратности предикатов, где скалярная определяемая пользователем функция или определенная функция T-SQL (например, STIntersects) сравнивается с константой.
Хотя модель затрат, используемая уровнем совместимости базы данных 130, повышает производительность для многих рабочих нагрузок по сравнению с уровнем 120, для некоторых запросов (в зависимости от используемых данных и функций) производительность планов запросов может на самом деле снизиться на уровне 130.
Применяется к
- SQL Server 2017 on Windows (все выпуски)
- SQL Server 2016 с пакетом обновления 1 (SP1)
- SQL Server 2016 Developer
- SQL Server 2016 Enterprise
- SQL Server 2016 Express
- SQL Server 2016 Standard
- SQL Server 2016 Web