sql >> Database teknologi >  >> RDS >> Sqlserver

SQL Server 2016 Enterprise Edition Ydeevnefordele

Den 16. november 2016 annoncerede Microsoft nogle meget væsentlige ændringer til SQL Server 2016 Standard Edition, som blev implementeret i SQL Server 2016 Service Pack 1 (Build 13.0.4001.0). Mange meget nyttige programmerbarhedsrelaterede funktioner, som tidligere kun var tilgængelige i Enterprise Edition, vil nu være tilgængelige i Standard Edition (og også i Web Edition og endda Express Edition).

Når du har en databaseapplikation, der bruger SQL Server 2016 Standard Edition Service Pack 1 (eller endda en lavere udgave), kan du bare udføre en udgaveopgradering til Enterprise Edition for at få endnu mere skalerbarhed og ydeevne ved at drage fordel af de højere licensgrænser for sockets , kerner og hukommelse i Enterprise Edition, som beskrevet her.

Du vil også få de mange andre iboende ydeevnefordele, der er til stede i Enterprise Edition, sammen med flere administrationsforbedringer, der gør dit liv så meget nemmere som DBA.

Søjlelagerindekser

Hvis du bruger Columnstore-indekser, får du automatisk følgende ydeevnefordele, når du bruger Enterprise Edition:

  • Samlet pushdown: Denne ydeevnefunktion giver ofte en 2X-4X forespørgselsydeevneforøgelse ved at skubbe kvalificerende aggregater til SCAN-noden, hvilket reducerer antallet af rækker, der kommer ud af den iterator.
  • Indeks Build/Rebuild: Enterprise Edition kan bygge/genopbygge columnstore-indekser med flere processorkerner, mens Standard Edition kun bruger én processorkerne. Dette har en ret betydelig effekt på forløbne tider for disse operationer, afhængigt af din hardware.
  • Lokale aggregater: Enterprise Edition kan bruge lokale aggregeringer til at filtrere antallet af rækker, der passerer ud af en SCAN-node, hvilket reducerer mængden af ​​arbejde, der skal udføres af efterfølgende forespørgselsnoder. Du kan bekræfte dette ved at kigge efter "ActualLocallyAggregatedRows"-attributten i XML'en for udførelsesplanen for forespørgslen.
  • Single Instruction Multiple Data (SIMD)-optimeringer: Denne funktion bruger et sæt hardwareinstruktioner, som er i stand til at behandle en række data i en enkelt instruktion, hvilket dramatisk fremskynder aggregerede operationer. Disse hardwareinstruktioner findes på alle moderne processorer (der har AVX-understøttelse), men de bruges kun af Enterprise Edition.
  • Pushdown for strengprædikat: Denne ydeevnefunktion kan forbedre ydeevnen af ​​forespørgsler, der bruger prædikat(er) på strengkolonner ved at skubbe disse prædikater til SCAN-noden. Dette kan i høj grad reducere mængden af ​​arbejde, der skal udføres af efterfølgende noder.
  • Grad af parallelisme: Batch-tilstandsforespørgsler er begrænset til MAXDOP =2 på Standard Edition. Enterprise Edition kan bruge alle de kerner, der er til stede i forekomsten. Dette kan være meget vigtigt ved større forespørgsler på typisk, moderne serverhardware.
  • Hukommelsesgrænser: Columnstore-objektpuljen er begrænset til 32 GB pr. instans på Standard Edition. Enterprise Edition har ingen hukommelsesbegrænsning for Columnstore-objektpuljen.

For at teste disse præstationspåstande kørte jeg nogle ret simple tests på Microsoft ContosoRetailDW-databasen på min Intel Core i7-6700K-arbejdsstation. Jeg har to navngivne forekomster af SQL Server 2016 SP1 installeret, den ene bruger Standard Edition, og den anden bruger Developer Edition (som svarer til Enterprise Edition).

Alle konfigurationer og egenskaber på instansniveau og databaseniveau er identiske mellem de to instanser, og bruger- og tempdb-databasefilplaceringerne er i separate mapper på den samme separate flash-lagerenhed for hver instans. Databasekompatibilitetsniveauet blev ændret til 130 i begge tilfælde, og den underliggende Windows-konfiguration og hardware er den samme for begge tilfælde. Den eneste forskel her er udgaven af ​​hver forekomst.

Den første test er en simpel forespørgsel (tilpasset fra Niko Neugebauer), der tillader SQL Server 2016 at bruge samlet pushdown på FactOnlineSales-tabellen. Resultaterne er vist i tabel 1.

Udgave Forløbet tid (ms)
Standardudgave 30
Udviklerudgave 1
Tidsforskel 29
% forbedring 96,7 %

Tabel 1:Samlet Pushdown-sammenligning

Den næste test er timing af, hvor lang tid det tager at opbygge et clustered columnstore-indeks på FactOnlineSales-tabellen med 12,6 millioner rækker. Resultaterne er vist i tabel 2.

Udgave Forløbet tid (ms)
Standardudgave 42.197
Udviklerudgave 14.384
Tidsforskel 27.813
% forbedring 65,9 %

Tabel 2:Opbygning af klyngebaserede kolonnelagerindekssammenligning

Den næste test er timing, hvor lang tid det tager at genopbygge et clustered columnstore-indeks på den samme FactOnlineSales-tabel. Resultaterne er vist i tabel 3.

Udgave Forløbet tid (ms)
Standardudgave 33.105
Udviklerudgave 11.460
Tidsforskel 21.645
% forbedring 65,4 %

Tabel 3:Genopbygning af Clustered Columnstore Index-sammenligning

Den næste test er en anden simpel forespørgsel, der tillader SQL Server 2016 at bruge lokal aggregering på FactOnlineSales-tabellen. Resultaterne er vist i tabel 4.

Udgave Forløbet tid (ms)
Standardudgave 122
Udviklerudgave 83
Tidsforskel 39
% forbedring 32,0 %

Tabel 4:Sammenligning af lokal aggregation

Den næste test er en anden simpel forespørgsel, der tillader SQL Server 2016 at bruge string-prædikat-pushdown på FactOnlineSales- og DimPromotion-tabellerne. Resultaterne er vist i tabel 5.

Udgave Forløbet tid (ms)
Standardudgave 2.683
Udviklerudgave 1.221
Tidsforskel 1.466
% forbedring 54,6 %

Tabel 5:Strengprædikat Pushdown-sammenligning

Dette er blot nogle simple eksempler på de indbyggede ydelsesfordele for Columnstore-indekser i SQL Server 2016 Enterprise Edition sammenlignet med SQL Server 2016 Standard Edition på samme hardware. Hvis du virkelig vil dykke ned i Columnstore-indekser (som kan være en meget effektiv funktion for nogle arbejdsbelastninger), bør du bogmærke og læse Niko Neugebauers lange række af indlæg på columnstore.net.

DBCC CHECKDB Ydeevne

En anden forbedring af administrationens ydeevne, der er til stede på SQL Server 2016 Enterprise Edition, er DBCC CHECKDB-ydeevne. På Standard Edition bruger DBCC CHECKDB kun én processorkerne, mens den kan bruge alle tilgængelige kerner på Enterprise Edition. Denne adfærd er uændret i forhold til tidligere versioner af SQL Server. SQL Server 2016 giver dig mulighed for at begrænse antallet af kerner, som DBCC CHECKDB kan bruge med en ny WITH (MAXDOP =x) mulighed.

At køre DBCC CHECKDB med indstillingen MED PHYSICAL_ONLY på en noget større database (ca. 38 GB), som jeg har, gav resultaterne vist i tabel 6.

Udgave Forløbet tid (ms)
Standardudgave 58.492
Udviklerudgave 24.897
Tidsforskel 33.595
% forbedring 57,4 %

Tabel 6:DBCC CHECKDB MED PHYSICAL_ONLY Sammenligning

At køre en standard DBCC CHECKDB på den samme database gav resultaterne vist i tabel 7.

Udgave Forløbet tid (ms)
Standardudgave 435.039
Udviklerudgave 119.767
Tidsforskel 315.272
% forbedring 72,5 %

Tabel 7:DBCC CHECKDB-sammenligning

En meget vigtig faktor i DBCC CHECKDB-ydeevne er den sekventielle læseydeevne fra alle de LUN'er, hvor din(e) databasedatafil(er) er placeret. Du kan nemt kontrollere dette ved at køre en BACKUP DATABASE-kommando til en NUL-enhed (sørg for at bruge indstillingerne COPY_ONLY og NO_COMPRESSION). Dette vil vise dig din effektive sekventielle læseydelse, som vist i dette eksempel fra min arbejdsstation:

BACKUP DATABASE behandlede 5048514 sider på 16,115 sekunder (2447,502 MB/sek.).

Husk, at al denne test blev udført på en enkelt, quad-core desktop-processor. En multi-socket server med mange flere samlede processorkerner vil vise endnu mere en forbedring af ydeevnen i mange af disse tests.

Pointen med alt dette er at vise et par håndgribelige eksempler på de præstationsforbedringer, du kan se, blot ved at opgradere fra SQL Server 2016 Standard Edition SP1 til SQL Server 2016 Enterprise Edition SP1, på den samme hardware, uden at foretage nogen database- eller applikationsændringer . Denne liste er på ingen måde udtømmende, da der også er mange andre fordele.


  1. hvordan vælger man kun række med max sekvens uden at bruge en underforespørgsel?

  2. Dynamisk opdateringserklæring med variable kolonnenavne

  3. Oracle SQL Developer og PostgreSQL

  4. Nogle ideer om ressourcepooling på lavt niveau i PostgreSQL