Улучшенная масштабируемость и повышенная производительность (компонент Database Engine)

Среди улучшений масштабируемости и производительности в компоненте SQL Server Database Engine — отфильтрованные индексы и статистика, новые табличные подсказки и подсказки запросов, а также новые функции выполнения и обработки запросов.

Новые возможности в SQL Server 2008 R2 с пакетом обновления 2 (SP2)

Новые возможности SQL Server 2008 R2

ПримечаниеПримечание

Поскольку SQL Server 2008 R2 содержит небольшие изменения по сравнению с SQL Server 2008, рекомендуется также просмотреть содержимое раздела по SQL Server 2008.

Сжатие в формате Юникод

Данные в Юникоде, сохраненные в столбцах nvarchar(n) и nchar(n), сжимаются с помощью алгоритма стандартной схемы сжатия для Юникода (SCSU). Дополнительные сведения см. в разделе Реализация сжатия Юникода.

Новые возможности SQL Server 2008

Отфильтрованные индексы и статистика

В SQL Server 2008 с помощью предиката можно создавать отфильтрованные индексы и статистику для подмножества строк таблицы. В предыдущих версиях SQL Server индексы и статистика создавались для всех строк в таблице. Отфильтрованные индексы и статистика особенно хорошо подходят для запросов, которые выбирают из точно определенных подмножеств данных, например столбцов, значение большинства которых равно NULL, столбцов с разнородными категориями и с различными диапазонами значений.

Хорошо спроектированный отфильтрованный индекс позволяет повысить производительность запросов, снизить затраты на обслуживание и хранение индексов по сравнению с полнотабличными индексами. Дополнительные сведения см. в разделе Рекомендации по проектированию отфильтрованных индексов. Отфильтрованная статистика позволяет повысить качество плана запроса, поскольку она охватывает только строки из отфильтрованного индекса. Компонент Database Engine автоматически создает и обслуживает отфильтрованную статистику для отфильтрованных индексов. Также можно создать отфильтрованную статистику для неиндексированного столбца, чтобы повысить качество плана запроса для подмножеств данных, которым не требуется отфильтрованный индекс. Дополнительные сведения см. в разделе Использование статистики для повышения производительности запросов.

Табличные подсказки и подсказки в запросах

Параметр подсказок в запросе OPTIMIZE FOR, включающий переменное значение UNKNOWN

В параметр подсказок в запросе OPTIMIZE FOR добавлен синтаксис UNKNOWN, который указывает компоненту Database Engine использовать статистические данные, а не исходные значения для определения значений для одной или нескольких локальных переменных во время оптимизации запроса. Этот синтаксис может быть указан для всех локальных переменных в запросе либо для одной или нескольких именованных локальных переменных. Дополнительные сведения см. в разделе Подсказки в запросах (Transact-SQL).

Подсказки в запросах

Теперь табличные подсказки можно определить как подсказки в запросах, обеспечивающие дополнительные параметры для настройки производительности выполнения запросов. Табличные подсказки рекомендуется использовать в качестве подсказок в запросах только в контексте структуры плана. Дополнительные сведения см. в разделах Подсказки в запросах (Transact-SQL) и Использование подсказок в запросах INDEX и FORCESEEK в структурах планов.

Табличные подсказки

Табличная подсказка FORCESEEK добавлена для обеспечения дополнительных параметров для настройки производительности выполнения запросов. Эта подсказка указывает, что в качестве пути доступа к данным, определенным в запросе таблиц или представлений, оптимизатор запросов использует только операцию поиска в индексе. Дополнительные сведения см. в разделе Использование табличной подсказки FORCESEEK.

Выполнение и обработка запросов

Параметр укрупнения блокировки

Новый параметр LOCK_ESCALATION инструкции ALTER TABLE позволяет отключать укрупнение блокировки для таблицы. Для секционированных таблиц можно настроить блокировки на укрупнение до уровня секций, а не всей таблицы. Этот параметр позволяет улучшить параллелизм за счет уменьшения числа конфликтов блокировок при использовании секционированных таблиц. Дополнительные сведения см. в разделе ALTER TABLE (Transact-SQL).

Оптимизированная фильтрация по битовым картам

Оптимизатор запросов может размещать фильтры по битовым картам в планах параллельных запросов динамически, чтобы повысить производительность запросов к схеме типа «звезда». Оптимизированная фильтрация по битовым картам может значительно повысить производительность этих запросов к хранилищу данных, удаляя не соответствующие условию строки из таблицы фактов на раннем этапе плана запроса. Дополнительные сведения см. в разделе Оптимизация производительности запросов к хранилищу данных с помощью фильтрации по битовым картам.

Обработка параллельных запросов к секционированным объектам

SQL Server 2008 повышает производительность обработки запросов к секционированным таблицам для многих параллельных планов, изменяет способ представления параллельных и последовательных планов и улучшает информацию о секционировании, содержащуюся в планах времени компиляции и в планах времени выполнения. SQL Server 2008 автоматизирует и улучшает стратегию секционирования потока для планов параллельного выполнения запросов к секционированным объектам. Дополнительные сведения см. в разделе Улучшенные возможности обработки запросов для секционированных таблиц и индексов.

Структуры планов

Хранимая процедура sp_create_plan_guide расширена за счет возможности вывода XML Showplan непосредственно в параметр @hints вместо встраивания выходных данных в подсказку USE PLAN. Это упрощает процесс применения фиксированного плана запроса в качестве подсказки по структуре плана. Помимо этого, новая хранимая процедура sp_create_plan_guide_from_handle позволяет создать одну или несколько структур плана на основе плана запроса из кэша планов.

Можно создать несколько структур планов OBJECT или SQL для одного и того же запроса и пакета либо модуля. Однако только одна из этих структур плана может быть включена в данный момент времени.

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

Новые классы событий Plan Guide Successful и Plan Guide Unsuccessful упрощают проверку того, используются ли структуры планов оптимизатором запросов. Когда SQL Server не может сформировать план выполнения для запроса, который содержит руководство плана, запрос автоматически компилируется без использования структуры плана. Событие Plan Guide Unsuccessful возникает при сбое компиляции исходного руководства плана.

При помощи новых счетчиков Guided Plan Executions/sec и Misguided Plan Executions/sec в SQL Server, объект SQL Statistics можно отслеживать количество выполнений плана, в рамках которых план запроса успешно или неудачно формировался при помощи структуры плана.

Среда Среда SQL Server Management Studio может выполнять такие операции, как создание, удаление, включение, выключение или создание сценариев для структур планов. В обозревателе объектов структуры планов находятся в папке «Возможность программирования».

Значения хэша для поиска и настройки сходных запросов

При поиске запросов с большими потребностями в ресурсах следует принимать во внимание поиск и настройку сходных запросов, которым по отдельности требуются минимальные ресурсы системы, но которые совокупно используют значительную часть ресурсов системы. Динамические представления каталога sys.dm_exec_query_stats и sys.dm_exec_requests предоставляют значения хэширования для запросов и планов запросов, которые можно использовать для выявления агрегированного использования ресурсов сходными запросами и сходными планами выполнения запросов. Дополнительные сведения см. в разделе Поиск и настройка сходных запросов с помощью хэширования запросов и планов запросов.

См. также

Основные понятия