Новость из категории: Информация

SQL Server: тест производительности и пакетная обработка

Содержание:
1. Задача и отсутствующий синтаксис;
2. Решение 1. Использование сгруппированных запросов;
3. Решение 2. Использование ROW_NUMBER;
4. Решение 3 и Решение 4;
5. Тест производительности и пакетная обработка (Вы читаете данный раздел).
SQL Server: тест производительности и пакетная обработка

Тест производительности

SQL Server: тест производительности и пакетная обработка
Заполнение таблиц Sales.OrdersBig и Sales.OrderDetailsBig

В этом разделе приведены тестовые данные и переработанные запросы, использованные мною для тестирования производительности решений с более объемными таблицами, нежели таблицы в тестовой базе данных. Используйте программный код выше для создания и заполнения таблиц Sales.OrdersBig (примерно 1 млн строк) и Sales.OrderDetailsBig (приблизительно 3 млн строк).

SQL Server: тест производительности и пакетная обработка
Переработанные запросы для четырех решений

Используйте переработанные запросы, приведенные в коде выше, для тестирования четырех описанных решений с более объемными таблицами.

Пакетная обработка

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

Это также позволит оптимизатору задействовать пакетный режим, даже если данные организованы с использованием формата rowstore, — достаточно, чтобы создать такой индекс для одной из участвующих таблиц. Например, примените следующий программный код, чтобы создать такой фиктивный индекс для Sales. OrdersBig (предполагается, что используется версия SQL Server 2016 или более новая):
CREATE NONCLUSTERED COLUMNSTORE INDEX idx_cs_dummy ON Sales.OrdersBig (orderid) WHERE orderid = -1 AND orderid = -2; 

Теперь выполним все четыре решения повторно.

SQL Server: тест производительности и пакетная обработка
План для Решения 1 в пакетном режиме

План для Решения 1 показан на рисунке выше.

Основные действия, в том числе объединение, группирование и статистические операции, вы полняются операторами хеширования пакетного режима. На моем компьютере это решение было выполнено за 1,825 секунды — треть времени, необходимого для обработки только в построчном режиме. Естественно, производительность этого решения повышается благодаря использованию настоящих, а не фиктивных индексов columnstore. Удивительно, что если необходимо задействовать представление rowstore по другим причинам и нельзя обосновать дублированное представление, то этот прием не связан ни с какими затратами, но дает огромные преимущества.


Досконально изучите пакетную обработку в SQL Server с Distinct, но после того, как выберете качественный купальник для танцев для своей дочери? В этом случае, обязательно посетите страничку https://www.redmega.ru/info/kupalnik-dlya-tantsev. Здесь представлен широкий ассортимент таких изделий по самым приятным ценам.


Читать дальше...

Рейтинг статьи

Оценка
0/5
голосов: 0
Ваша оценка статье по пятибальной шкале:
 
 
   

Поделиться

Перевести статью:

Похожие новости

Комментарии

Информация

^ Наверх