Dne 16. listopadu 2016 společnost Microsoft oznámila některé velmi významné změny pro SQL Server 2016 Standard Edition, které byly implementovány v SQL Server 2016 Service Pack 1 (sestavení 13.0.4001.0). Mnoho velmi užitečných funkcí souvisejících s programováním, které byly dříve dostupné pouze v Enterprise Edition, bude nyní k dispozici ve Standard Edition (a také ve Web Edition a dokonce Express Edition).
Jakmile budete mít databázovou aplikaci využívající SQL Server 2016 Standard Edition Service Pack 1 (nebo dokonce nižší edici), stačí provést upgrade edice na Enterprise Edition, abyste získali ještě větší škálovatelnost a výkon s využitím vyšších licenčních limitů pro sokety. , jádra a paměti v Enterprise Edition, jak je podrobně popsáno zde.
Získáte také mnoho dalších výhod vnitřního výkonu, které jsou přítomné v Enterprise Edition, spolu s několika vylepšeními správy, která vám jako DBA výrazně usnadní život.
Indexy úložiště sloupců
Pokud používáte indexy Columnstore, získáte automaticky následující výkonnostní výhody, když používáte Enterprise Edition:
- Souhrnné rozšíření: Tato výkonová funkce často poskytuje 2X-4X zvýšení výkonu dotazů tím, že do uzlu SCAN posílá kvalifikační agregáty, což snižuje počet řádků vycházejících z daného iterátoru.
- Sestavení/obnovení indexu: Enterprise Edition může vytvářet/přestavovat indexy columnstore s více jádry procesoru, zatímco Standard Edition používá pouze jedno jádro procesoru. To má poměrně významný vliv na uplynulé časy těchto operací v závislosti na vašem hardwaru.
- Místní agregáty: Enterprise Edition může používat místní agregace k filtrování počtu řádků procházejících z uzlu SCAN, čímž se snižuje množství práce, kterou musí provést následující uzly dotazů. Můžete to potvrdit vyhledáním atributu „ActualLocallyAggregatedRows“ v XML plánu provádění pro dotaz.
- Optimalizace s jednou instrukcí a více daty (SIMD): Tato funkce využívá sadu hardwarových instrukcí, které jsou schopny zpracovat pole dat v jediné instrukci, což výrazně urychluje agregované operace. Tyto hardwarové instrukce jsou k dispozici na všech moderních procesorech (které mají podporu AVX), ale používá je pouze Enterprise Edition.
- Posunutí predikátu řetězce: Tato funkce výkonu může zlepšit výkon dotazů používajících predikát(y) ve sloupcích řetězců předáním těchto predikátů do uzlu SCAN. To může výrazně snížit množství práce, kterou musí provést následující uzly.
- Stupeň paralelnosti: Dotazy v dávkovém režimu jsou u Standard Edition omezeny na MAXDOP =2. Enterprise Edition může používat všechna jádra přítomná pro instanci. To může být velmi významné u větších dotazů na typický moderní serverový hardware.
- Omezení paměti: Fond objektů Columnstore je ve Standard Edition omezen na 32 GB na instanci. Enterprise Edition nemá žádné omezení paměti pro fond objektů Columnstore.
Abych otestoval tato tvrzení o výkonu, provedl jsem několik poměrně jednoduchých testů na databázi Microsoft ContosoRetailDW na své pracovní stanici Intel Core i7-6700K. Mám nainstalované dvě pojmenované instance SQL Server 2016 SP1, jednu používající Standard Edition a druhou Developer Edition (což je ekvivalent Enterprise Edition).
Všechny konfigurace a vlastnosti na úrovni instance a databáze jsou mezi těmito dvěma instancemi identické a umístění souboru databáze uživatele a databáze tempdb jsou pro každou instanci v samostatných adresářích na stejném samostatném paměťovém zařízení flash. Úroveň kompatibility databáze byla v obou případech změněna na 130 a základní konfigurace a hardware Windows jsou pro obě instance stejné. Jediný rozdíl je v edici každé instance.
Prvním testem je jednoduchý dotaz (upravený od Niko Neugebauer), který umožňuje serveru SQL Server 2016 používat agregované rozšíření na tabulku FactOnlineSales. Výsledky jsou uvedeny v tabulce 1.
Vydání | Uplynulý čas (ms) |
---|---|
Standardní vydání | 30 |
Verze pro vývojáře | 1 |
Časový rozdíl | 29 |
% zlepšení | 96,7 % |
Tabulka 1:Porovnání souhrnného rozšíření
Dalším testem je načasování toho, jak dlouho trvá vytvoření klastrovaného indexu columnstore v tabulce FactOnlineSales s 12,6 miliony řádků. Výsledky jsou uvedeny v tabulce 2.
Vydání | Uplynulý čas (ms) |
---|---|
Standardní vydání | 42 197 |
Verze pro vývojáře | 14 384 |
Časový rozdíl | 27 813 |
% zlepšení | 65,9 % |
Tabulka 2:Porovnání indexu klastrovaného úložiště sloupců
Dalším testem je načasování, jak dlouho trvá opětovné sestavení seskupeného indexu columnstore ve stejné tabulce FactOnlineSales. Výsledky jsou uvedeny v tabulce 3.
Vydání | Uplynulý čas (ms) |
---|---|
Standardní vydání | 33 105 |
Verze pro vývojáře | 11 460 |
Časový rozdíl | 21 645 |
% zlepšení | 65,4 % |
Tabulka 3:Porovnání indexu Clustered Columnstore
Dalším testem je další jednoduchý dotaz, který umožňuje serveru SQL Server 2016 používat místní agregaci v tabulce FactOnlineSales. Výsledky jsou uvedeny v tabulce 4.
Vydání | Uplynulý čas (ms) |
---|---|
Standardní vydání | 122 |
Verze pro vývojáře | 83 |
Časový rozdíl | 39 |
% zlepšení | 32,0 % |
Tabulka 4:Porovnání místní agregace
Dalším testem je další jednoduchý dotaz, který umožňuje serveru SQL Server 2016 používat rozšíření predikátu řetězce v tabulkách FactOnlineSales a DimPromotion. Výsledky jsou uvedeny v tabulce 5.
Vydání | Uplynulý čas (ms) |
---|---|
Standardní vydání | 2 683 |
Verze pro vývojáře | 1 221 |
Časový rozdíl | 1 466 |
% zlepšení | 54,6 % |
Tabulka 5:Porovnání rozvržení řetězcového predikátu
Toto jsou jen některé jednoduché příklady integrovaných výhod výkonu pro indexy Columnstore v SQL Server 2016 Enterprise Edition ve srovnání s SQL Server 2016 Standard Edition na stejném hardwaru. Pokud se chcete opravdu ponořit do indexů Columnstore (což může být velmi efektivní funkce pro některé úlohy), měli byste si uložit do záložek a přečíst si dlouhou sérii příspěvků Niko Neugebauera na columnstore.net.
Výkon DBCC CHECKDB
Dalším vylepšením výkonu správy, které je k dispozici na SQL Server 2016 Enterprise Edition, je výkon DBCC CHECKDB. Na Standard Edition používá DBCC CHECKDB pouze jedno jádro procesoru, zatímco na Enterprise Edition může používat všechna dostupná jádra. Toto chování se od předchozích verzí SQL Server nezměnilo. SQL Server 2016 umožňuje omezit počet jader, která může DBCC CHECKDB používat, pomocí nové možnosti WITH (MAXDOP =x).
Spuštění DBCC CHECKDB s volbou WITH PHYSICAL_ONLY na poněkud větší databázi (asi 38 GB), kterou mám, přineslo výsledky uvedené v tabulce 6.
Vydání | Uplynulý čas (ms) |
---|---|
Standardní vydání | 58 492 |
Verze pro vývojáře | 24 897 |
Časový rozdíl | 33 595 |
% zlepšení | 57,4 % |
Tabulka 6:DBCC CHECKDB S PHYSICAL_ONLY Srovnání
Spuštění standardní DBCC CHECKDB na stejné databázi přineslo výsledky uvedené v tabulce 7.
Vydání | Uplynulý čas (ms) |
---|---|
Standardní vydání | 435 039 |
Verze pro vývojáře | 119 767 |
Časový rozdíl | 315 272 |
% zlepšení | 72,5 % |
Tabulka 7:Porovnání DBCC CHECKDB
Velmi důležitým faktorem výkonu DBCC CHECKDB je výkon sekvenčního čtení ze všech LUN, kde jsou umístěny vaše databázové datové soubory. Můžete to snadno zkontrolovat spuštěním příkazu BACKUP DATABASE na zařízení NUL (ujistěte se, že používáte možnosti COPY_ONLY a NO_COMPRESSION). To vám ukáže váš efektivní výkon sekvenčního čtení, jak ukazuje tento příklad z mé pracovní stanice:
BACKUP DATABASE úspěšně zpracovala 5048514 stránek za 16,115 sekund (2447,502 MB/s).Mějte na paměti, že všechny tyto testy byly provedeny na jediném čtyřjádrovém stolním procesoru. Vícesoketový server s mnohem více celkovými procesorovými jádry ukáže v mnoha z těchto testů ještě větší zlepšení výkonu.
Smyslem toho všeho je ukázat několik hmatatelných příkladů zlepšení výkonu, která můžete vidět, jednoduše upgradem z SQL Server 2016 Standard Edition SP1 na SQL Server 2016 Enterprise Edition SP1 na stejném hardwaru, aniž byste provedli žádné změny databáze nebo aplikace. . Tento seznam není v žádném případě vyčerpávající, protože existuje mnoho dalších výhod.