Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Предимства на производителността на SQL Server 2016 Enterprise Edition

На 16 ноември 2016 г. Microsoft обяви някои много значителни промени за SQL Server 2016 Standard Edition, които бяха внедрени в SQL Server 2016 Service Pack 1 (Build 13.0.4001.0). Много много полезни функции, свързани с програмирането, които преди бяха налични само в Enterprise Edition, сега ще бъдат налични в Standard Edition (а също и в Web Edition и дори Express Edition).

След като имате приложение за база данни, използващо SQL Server 2016 Standard Edition Service Pack 1 (или дори по-ниско издание), можете просто да извършите надстройка на изданието до Enterprise Edition, за да получите още повече мащабируемост и производителност, като се възползвате от по-високите лицензионни ограничения за сокети , ядра и памет в Enterprise Edition, както е описано подробно тук.

Ще получите и много други присъщи предимства на производителността, които присъстват в Enterprise Edition, заедно с множество подобрения в управляемостта, които правят живота ви много по-лесен като DBA.

Индекси на Columnstore

Ако използвате индекси на Columnstore, получавате автоматично следните предимства на производителността, когато използвате Enterprise Edition:

  • Агрегатно избутване: Тази функция за производителност често дава 2X-4X увеличение на производителността на заявката чрез избутване на квалифицирани агрегати към възела SCAN, което намалява броя на редовете, излизащи от този итератор.
  • Изграждане/преизграждане на индекс: Enterprise Edition може да изгражда/преизгражда индекси за columnstore с множество процесорни ядра, докато Standard Edition използва само едно процесорно ядро. Това има доста значителен ефект върху изминалото време за тези операции, в зависимост от вашия хардуер.
  • Локални агрегати: Enterprise Edition може да използва локални агрегации, за да филтрира броя на редовете, излизащи от SCAN възел, намалявайки количеството работа, която трябва да бъде извършена от следващите възли на заявка. Можете да потвърдите това, като потърсите атрибута „ActualLocallyAggregatedRows“ в XML на плана за изпълнение на заявката.
  • Оптимизации с една инструкция с множество данни (SIMD): Тази функция използва набор от хардуерни инструкции, които са в състояние да обработват масив от данни в една инструкция, като драстично ускоряват обобщените операции. Тези хардуерни инструкции присъстват на всички съвременни процесори (които поддържат AVX), но се използват само от Enterprise Edition.
  • Избутване на предикат на низ: Тази функция за производителност може да подобри производителността на заявки, използващи предикат(и) в колони с низове, като избута тези предикати към възела SCAN. Това може значително да намали количеството работа, която трябва да бъде извършена от следващите възли.
  • Степен на паралелизъм: Заявките за пакетен режим са ограничени до MAXDOP =2 в стандартното издание. Enterprise Edition може да използва всички ядра, които са налични за екземпляра. Това може да бъде много важно при по-големи заявки за типичен, модерен хардуер на сървъра.
  • Ограничения на паметта: Пулът от обекти Columnstore е ограничен до 32 GB на екземпляр в Standard Edition. Enterprise Edition няма ограничение на паметта за пула от обекти Columnstore.

За да тествам тези твърдения за производителност, проведох някои сравнително прости тестове в базата данни на Microsoft ContosoRetailDW на моята работна станция Intel Core i7-6700K. Имам инсталирани два наименувани екземпляра на SQL Server 2016 SP1, единият използва Standard Edition, а другият използва Developer Edition (което е еквивалентно на Enterprise Edition).

Всички конфигурации и свойства на ниво екземпляр и база данни са идентични между двата екземпляра и местоположенията на потребителския файл и файла на базата данни tempdb са в отделни директории на едно и също, отделно флаш устройство за съхранение за всеки екземпляр. Нивото на съвместимост на базата данни беше променено на 130 и в двата случая, а основната конфигурация и хардуер на Windows са еднакви и за двата екземпляра. Единствената разлика тук е изданието на всеки екземпляр.

Първият тест е проста заявка (адаптирана от Нико Нойгебауер), която позволява на SQL Server 2016 да използва обобщено избутване на таблицата FactOnlineSales. Резултатите са показани в Таблица 1.

Издание Изминало време (ms)
Стандартно издание 30
Издание за програмисти 1
Разлика във времето 29
% подобрение 96,7%

Таблица 1:Обобщено сравнение на натискане надолу

Следващият тест определя времето колко време е необходимо за изграждане на клъстериран индекс на columnstore в таблицата FactOnlineSales от 12,6 милиона реда. Резултатите са показани в Таблица 2.

Издание Изминало време (ms)
Стандартно издание 42 197
Издание за програмисти 14 384
Разлика във времето 27 813
% подобрение 65,9%

Таблица 2:Сравнение на индекси на клъстерирано хранилище за колони

Следващият тест определя времето колко време е необходимо за повторно изграждане на клъстериран индекс на columnstore в същата таблица FactOnlineSales. Резултатите са показани в Таблица 3.

Издание Изминало време (ms)
Стандартно издание 33 105
Издание за програмисти 11 460
Разлика във времето 21 645
% подобрение 65,4%

Таблица 3:Сравнение на индекси за повторно изграждане на клъстерни колонни хранилища

Следващият тест е друга проста заявка, която позволява на SQL Server 2016 да използва локално агрегиране в таблицата FactOnlineSales. Резултатите са показани в Таблица 4.

Издание Изминало време (ms)
Стандартно издание 122
Издание за програмисти 83
Разлика във времето 39
% подобрение 32,0%

Таблица 4:Сравнение на локално агрегиране

Следващият тест е друга проста заявка, която позволява на SQL Server 2016 да използва натискане на предикат на низ в таблиците FactOnlineSales и DimPromotion. Резултатите са показани в Таблица 5.

Издание Изминало време (ms)
Стандартно издание 2683
Издание за програмисти 1221
Разлика във времето 1466
% подобрение 54,6%

Таблица 5:Сравнение на низовия предикат надолу

Това са само някои прости примери за вградените предимства на производителността за индексите на Columnstore в SQL Server 2016 Enterprise Edition в сравнение със SQL Server 2016 Standard Edition на същия хардуер. Ако искате наистина да се потопите в индексите на Columnstore (което може да бъде много ефективна функция за някои работни натоварвания), трябва да направите отметка и да прочетете дългата поредица от публикации на Нико Нойгебауер в columnstore.net.

DBCC CHECKDB Performance

Друго подобрение в производителността на управляемостта, което присъства в SQL Server 2016 Enterprise Edition, е производителността на DBCC CHECKDB. В Standard Edition DBCC CHECKDB използва само едно процесорно ядро, докато може да използва всички налични ядра в Enterprise Edition. Това поведение е непроменено от предишните версии на SQL Server. SQL Server 2016 ви позволява да ограничите броя на ядрата, които DBCC CHECKDB може да използва с нова опция WITH (MAXDOP =x).

Изпълнението на DBCC CHECKDB с опцията WITH PHYSICAL_ONLY в малко по-голяма база данни (около 38 GB), която имам, даде резултатите, показани в таблица 6.

Издание Изминало време (ms)
Стандартно издание 58 492
Издание за програмисти 24 897
Разлика във времето 33 595
% подобрение 57,4%

Таблица 6:DBCC CHECKDB С PHYSICAL_ONLY Сравнение

Изпълнението на стандартен DBCC CHECKDB в същата база данни дава резултатите, показани в Таблица 7.

Издание Изминало време (ms)
Стандартно издание 435 039
Издание за програмисти 119 767
Разлика във времето 315 272
% подобрение 72,5%

Таблица 7:Сравнение на DBCC CHECKDB

Много важен фактор за производителността на DBCC CHECKDB е производителността на последователно четене от всички LUN, където се намират вашите файлове с данни от базата данни. Можете лесно да проверите това, като изпълните команда BACKUP DATABASE към NUL устройство (като се уверите, че използвате опциите COPY_ONLY и NO_COMPRESSION). Това ще ви покаже ефективната ви производителност при последователно четене, както е показано в този пример от моята работна станция:

BACKUP DATABASE успешно обработи 5048514 страници за 16,115 секунди (2447,502 MB/sec).

Имайте предвид, че цялото това тестване е извършено на един четириядрен настолен процесор. Сървър с няколко гнезда с много повече общи процесорни ядра ще покаже още по-голямо подобрение на производителността в много от тези тестове.

Смисълът на всичко това е да покаже няколко осезаеми примера за подобрения в производителността, които можете да видите, просто като надстроите от SQL Server 2016 Standard Edition SP1 до SQL Server 2016 Enterprise Edition SP1, на същия хардуер, без да правите промени в базата данни или приложенията . Този списък в никакъв случай не е изчерпателен, тъй като има и много други предимства.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Всичко, което трябва да знаете за SQL Server JOINS

  2. Сравняване на дати, съхранени като varchar

  3. как да разделя низ в различни колони?

  4. Добавете отместване на часовата зона към стойност datetime2 в SQL Server (T-SQL)

  5. Актуализиране на стъпка на задание за задача на агент на SQL Server (T-SQL)