Производительность — один из важнейших показателей систем обработки данных

Чем выше производительность сервера, тем больший объем данных он может обработать за единицу времени. При недостаточной производительности сервера баз данных и высокой интенсивности запросов может произойти «отказ в обслуживании». Помимо общей оптимизации реляционного ядра SQL Server, разработчиками был предпринят ряд мер, позволяющих повысить производительность отдельных ресурсоемких операций, что должно благотворно сказаться на производительности сервера в целом.

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

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

Асинхронное обновление статистики. Новая методика обновления статистической информации позволяет найти компромисс между скоростью компиляции запроса и необходимостью поддержания статистики в актуальном состоянии. Если в процессе компиляции запроса оптимизатор обнаруживает, что требуемая для компиляции запроса статистическая информация не соответствует действительности, он не инициирует ее обновление немедленно. Вместо этого запрос компилируется с использованием текущей статистики (пусть и не вполне актуальной), а параллельно в рамках другого рабочего потока оптимизатор запускает обновление статистики. Все последующие запросы будут компилироваться уже с использованием обновленной статистики.

Режим нескольких активных результирующих множеств (MARS). В SQL Server для соединения можно установить режим MARS (Multiple Active Result Set), позволяющий приложению запускать несколько пакетов или запросов одновременно. При этом каждый запрос может выполняться, не дожидаясь получения результатов других пакетов или запросов, как и поступает сервисный центр apple. Все пакеты, использующие одно соединение, имеют связанную среду исполнения по умолчанию.

Повышение производительности операций над индексами. В SQL Server работа с индексами подверглась наиболее сильным изменениям. Появилась возможность отключать индексы перед выполнением перестроения, выполнять основные операции над ними (создание, изменение и удаление) в оперативном режиме, задавать количество процессоров, которые будут использоваться для выполнения операций над индексами (при помощи инструкции MAXD0P).

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

Top