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

Hukommelse/lagringsteknologihierarki og SQL Server

Der er et gammelt netværk, der siger:"Båndbreddeproblemer kan afhjælpes med penge. Latency-problemer er sværere, fordi lysets hastighed er fastsat."

Traditionelt har der været fire primære lag i det overordnede hukommelses- og lagerhierarki på en databaseserver. Startende i toppen af ​​pyramiden har du static random-access memory (SRAM) caching, som typisk er delt mellem relativt små, hurtige L1 og L2 caches for hver fysisk kerne af en processor og en større, langsommere, on-die, delt L3-cache for hele processoren. For eksempel har 14nm Intel Xeon E7-8890 v4-processoren (Broadwell-EX) en 64KB pr. core L1-cache og en 256KB pr. core L2-cache sammen med en meget større, men langsommere 60MB L3-cache, der deles på tværs af hele den fysiske processor .

Det andet lag er dynamisk tilfældig adgangshukommelse (DRAM) med licenskapaciteter på op til 4 TB med Windows Server 2012 R2, op til 24 TB med Windows Server 2016 og med forsinkelser i nanosekundområdet. Både SRAM og DRAM er flygtige, hvilket betyder, at de kun opbevarer data, når der er strøm på.

Det tredje lag er SATA/SAS (NAND) SSD'er, med individuelle kapaciteter op til omkring 4 TB og latenser i mikrosekundområdet. En begrænsende faktor med ældre SATA/SAS (NAND) SSD'er er det faktum, at de bruger SATA/SAS-grænsefladen, som begrænser deres samlede båndbredde, afhængigt af den SATA/SAS-version, de bruger. De er også begrænset ved at bruge den ældre AHCI-protokol, som har langt mere I/O-overhead og højere latenstid end den nyere NVMe-protokol. Det fjerde lag er ældre, magnetiske, roterende medieharddiske med individuelle kapaciteter på op til 10 TB og forsinkelser i millisekundområdet.

Hvert af disse traditionelle lag har højere latenstid, men lavere pris pr. MB/GB og højere samlet kapacitet, når du bevæger dig ned i hukommelses-/lagerhierarkiet. Den relative latenstid af disse fire traditionelle lag er vist i tabel 1.

Grænseflade Type Relativ ventetid (læser)
On core/On Die CPU SRAM-cache 1x
Direkte vedhæft DDR4 DRAM 10x
PCIe NVMe eller SATA/SAS AHCI SSD 100.000x
SAS/SATA HDD 10.000.000x

Tabel 1:Traditionelle hukommelses-/lagerlag

Nye hukommelses-/lagerlag

I løbet af de sidste par år har vi set introduktionen og stigende brug af NVM Express (NVMe) PCIe SSD'er baseret på eksisterende NAND flash-teknologi. Disse har typisk latenser i intervallet 50-100 mikrosekunder. De bruger også den nyere, meget mere effektive NVMe-protokol og PCIe-grænsefladen, hvilket giver meget bedre ydeevne end ældre SAS/SATA SSD'er, der bruger den gamle AHCI-protokol.

I øjeblikket sælger Hewlett Packard Enterprise (HPE) 8GB NVDIMM-moduler til deres HPE Proliant DL360 Gen9-servere og HPE Proliant DL380 Gen9-servere. Disse moduler har 8 GB DRAM, som understøttes af 8 GB flash til $899,00, hvilket er ret dyrt pr. gigabyte. Disse to-sockets servere har 24 hukommelsespladser, der hver understøtter op til 128 GB traditionelle DDR4 DIMM'er. Eventuelle slots, du bruger til NVDIMM-moduler, vil ikke være tilgængelige til almindelig hukommelsesbrug. Du kan maksimalt bruge 16 hukommelsespladser til NVDIMM-brug, hvilket giver dig en maksimal kapacitet på 128 GB. Du skal bruge Intel Xeon E5-2600 v4-seriens processorer for at få officiel NVDIMM-understøttelse. Micron er planlagt til at frigive 16 GB NVDIMM'er med større kapacitet i oktober 2016.

Enhed IOPS Gns. forsinkelse (ns) MB/sek
NVM Express SSD 14.553 66.632 56,85
Bloktilstand NVDIMM 148.567 6.418 580.34
DAX Mode NVDIMM 1.112.007 828 4.343,78

Tabel 2:4K Random Write Performance Comparison (1 tråd, QD1)

Ydeevnetallene i tabel 2 er fra en Microsoft/Intel-præsentation (Persistent Memory i Windows) på IDF16 i San Francisco, ved hjælp af denne præstationstestmetode:

  • Arbejdsbelastning :4KB tilfældig skrivning, 1 tråd, 1 fremragende I/O, synkron I/O, 1GB fil, NTFS, 3s opvarmning, 7s måletid
  • Hardware :HPE ProLiant DL380 Gen9, 2x Intel Xeon E5-2650L v3 @ 1.8GHz, 96GB RAM, 2x 8GB NVDIMM-N, 1x 1600GB NVMe SSD
  • Software :Forududgivet WS 2016-build, Microsofts interne I/O-værktøj

Der er en god Channel 9-video kaldet Accelerating SQL Server 2016 Performance with Persistent Memory i Windows Server 2016 med Lindsey Allen og Tobias Klima. En demo i videoen viser, hvordan SQL Server 2016, der kører på Windows Server 2016, understøtter DAX-tilstand (med et uspecificeret sporingsflag). Når først Windows Server 2016 går GA, vil sporingsflaget ikke være nødvendigt med en fremtidig version af SQL Server.

Disse nye lagerlag i hukommelsen vil placeres mellem traditionel DRAM-hukommelse og SATA/SAS SSD'er.

En lagervolumen, der er blevet formateret i DAX-tilstand, kunne bruges til at være vært for en SQL Server 2016-transaktionslogfil i et scenarie, hvor du har brug for den absolut bedst mulige skriveydeevne, og du ikke ønskede at bruge forsinket holdbarhed eller OLTP i hukommelsen. Et andet muligt scenarie ville være at bruge en DAX Mode-volumen til at være vært for dine tempdb-datafiler, hvis du havde en arbejdsbyrde, der lagde ekstrem stress på tempdb.

Fremtidige hukommelses-/lagerlag

I slutningen af ​​2016/begyndelsen af ​​2017 skulle vi se introduktionen af ​​Intel Optane SSD'er, der bruger NVMe-protokollen. Disse vil være flash-lagerenheder, der bruger Intel/Micron 3D XPoint-teknologi (udtales som krydspunkt), som vil fungere på eksisterende servere. I Intels interne test viser disse enheder omkring 10 gange lavere latenstid og omkring 10 gange højere IOPS end eksisterende, meget højtydende Intel DC P3700 Series PCIe NVMe SSD-enheder.

I midten/slutningen af ​​2017 skulle vi også se udrulningen af ​​en ny form for persistent DIMM, der kan bruges som vedvarende hukommelse med meget stor kapacitet eller som ekstrem højtydende lagerkapacitet med lav kapacitet. Disse vil være elektrisk og fysisk kompatible med nuværende DDR4 DIMM'er og vil blive understøttet i næste generation af Intel Xeon-processorbaserede platforme (Skylake "Purley"-platformen). Disse produkter vil også være baseret på Intel/Micron 3D XPoint-teknologi. Disse Intel DIMM'er vil tilbyde op til dobbelt så meget systemhukommelseskapacitet til en væsentlig lavere pris end traditionel DDR4 DRAM, forudsat at din processor/serverplatform understøtter det (og Microsoft hæver licenshukommelsesgrænsen efter Windows Server 2016 er frigivet). Disse DIMM'er vil ikke have samme latenstid som traditionel DRAM (de vil være langsommere), men de vil tilbyde meget lavere latenstid end PCIe NVMe-lagerenheder.

Fra et bredere, branchedækkende perspektiv vil denne nye kategori af Persistent Memory (PM)-enheder tilbyde ikke-flygtig lagring med næsten DRAM-lignende ydeevne. PM-enheder ligger direkte på hukommelsesbussen, hvilket giver dem meget lav latenstid og høj båndbredde. Microsoft understøtter PM-enheder i Windows 10 Anniversary Update og Windows Server 2016. Der vil være understøttelse af en ny klasse af lagervolumen, som kaldes en Direct Access Storage (DAX) Volume. DAX Volumes bruger hukommelseskortede filer til at give applikationer direkte adgang til PM-enheder for den absolut bedste ydeevne.

En grund til, at DAX-tilstand er så meget hurtigere, er, at når du først har hukommelseskortet regionen af ​​NVDIMM på en DAX-diskenhed, omgår yderligere interaktioner med det lager helt lagerstakken. Det er bogstaveligt talt kun en memkopi at få dataene til at være vedvarende. Det er en hel masse kode, du ikke behøver at udføre ved hver interaktion med lageret. Det er en anden meget væsentlig bidragyder til latens (sammen med lysets hastighed). DAX-volumener understøttes på NTFS, og du skal vælge DAX-tilstand, når du formaterer diskenheden. Programmer (såsom SQL Server 2016) skal være blevet ændret (af Microsoft) for at understøtte og bruge DAX-tilstand, og du skal også aktivere et sporingsflag.

For bagudkompatibilitet på PM-hardware vil der også være bloktilstandsvolumener, som vedligeholder al eksisterende lagersemantik. Alle I/O-operationer vil gennemløbe lagerstakken til PM-diskdriveren. Dette gør bloktilstand fuldt ud kompatibel med eksisterende applikationer. Hvis du har en PM-hardwareenhed med et understøttet operativsystem, får du betydelig lagerydeevne uden applikationsændringer i bloktilstand. Dette betyder, at down-level versioner af SQL Server vil være i stand til at bruge bloktilstand lagervolumener.

Bundlinjen på alt dette er, at vi vil have meget mere fleksibilitet og nye muligheder for, hvordan du designer og konfigurerer dine hukommelses- og lagerundersystemlag i løbet af de næste 12-18 måneder, så længe du bruger SQL Server 2016 på Windows Server 2016 og har ny nok hardware, der kan understøtte PM-enheder. Ældre versioner af SQL Server vil være i stand til at bruge PM-volumener i bloktilstand, hvis de kører på Windows Server 2016. Ældre hardware og ældre versioner af Windows Server vil kunne bruge Intel Optane SSD'er. Dette vil give os mange yderligere valgmuligheder for at forbedre lagringsydelsen!


  1. TRIM() Funktion i Oracle

  2. SQL SELECT-sætning

  3. Tager dump af borde i oracle 10g ved hjælp af PL/SQL procedure

  4. At få en dynamisk genereret pivot-tabel til en Temp-tabel