sql >> Database >  >> RDS >> Sqlserver

Geheugen-/opslagtechnologie-hiërarchie en SQL Server

Er is een oud gezegde van een netwerk dat luidt:“Bandbreedteproblemen kunnen met geld worden verholpen. Latentieproblemen zijn moeilijker omdat de lichtsnelheid vast ligt.”

Traditioneel waren er vier primaire lagen in de algemene geheugen- en opslaghiërarchie van een databaseserver. Beginnend aan de top van de piramide, heb je statische random-access memory (SRAM) caching, die meestal is verdeeld over relatief kleine, snelle L1- en L2-caches voor elke fysieke kern van een processor en een grotere, langzamere, on-die, gedeelde L3-cache voor de hele processor. De 14nm Intel Xeon E7-8890 v4-processor (Broadwell-EX) heeft bijvoorbeeld een 64 KB per core L1-cache en een 256 KB per core L2-cache, samen met een veel grotere maar langzamere 60 MB L3-cache die wordt gedeeld over de gehele fysieke processor .

De tweede laag is dynamisch willekeurig toegankelijk geheugen (DRAM) met licentiecapaciteiten tot 4TB met Windows Server 2012 R2, oplopend tot 24TB met Windows Server 2016 en met latenties in het bereik van nanoseconden. Zowel SRAM als DRAM zijn vluchtig, wat betekent dat ze alleen gegevens bevatten als er stroom op staat.

De derde laag zijn SATA/SAS (NAND) SSD's, met individuele capaciteiten tot ongeveer 4TB en latenties in het microsecondebereik. Een beperkende factor bij oudere SATA/SAS (NAND) SSD's is het feit dat ze de SATA/SAS-interface gebruiken die hun totale bandbreedte beperkt, afhankelijk van de SATA/SAS-versie die ze gebruiken. Ze zijn ook beperkt door het gebruik van het oude AHCI-protocol dat veel meer I/O-overhead en een hogere latentie heeft dan het nieuwere NVMe-protocol. De vierde laag zijn legacy magnetische, draaiende media harde schijven, met individuele capaciteiten tot 10TB en latenties in het millisecondebereik.

Elk van deze traditionele lagen heeft een hogere latentie, maar lagere kosten per MB/GB en een hogere totale capaciteit naarmate u lager in de geheugen-/opslaghiërarchie komt. De relatieve latentie van deze vier traditionele lagen wordt weergegeven in Tabel 1.

Interface Type Relatieve latentie (leest)
Op core/On Die CPU SRAM-cache 1x
Directe bijlage DDR4 DRAM 10x
PCIe NVMe of SATA/SAS AHCI SSD 100.000x
SAS/SATA HDD 10.000.000x

Tabel 1:Traditionele geheugen-/opslaglagen

Nieuwe geheugen-/opslaglagen

De afgelopen jaren hebben we de introductie en het toenemende gebruik gezien van NVM Express (NVMe) PCIe SSD's op basis van bestaande NAND-flashtechnologie. Deze hebben doorgaans latenties in het bereik van 50-100 microseconden. Ze gebruiken ook het nieuwere, veel efficiëntere NVMe-protocol en de PCIe-interface, waardoor ze veel betere prestaties leveren dan oudere SAS/SATA SSD's die het oude AHCI-protocol gebruiken.

Momenteel verkoopt Hewlett Packard Enterprise (HPE) 8GB NVDIMM-modules voor hun HPE Proliant DL360 Gen9-servers en HPE Proliant DL380 Gen9-servers. Deze modules hebben 8 GB DRAM, ondersteund door 8 GB flash voor $ 899,00, wat behoorlijk duur is per gigabyte. Deze servers met twee sockets hebben 24 geheugenslots die elk tot 128 GB traditionele DDR4 DIMM's ondersteunen. Alle slots die u gebruikt voor NVDIMM-modules zijn niet beschikbaar voor normaal geheugengebruik. U kunt maximaal 16 geheugenslots gebruiken voor NVDIMM-gebruik, waardoor u een maximale capaciteit van 128 GB krijgt. U moet Intel Xeon E5-2600 v4-serie processors gebruiken om officiële NVDIMM-ondersteuning te krijgen. Micron zal naar verwachting in oktober 2016 grotere capaciteit 16GB NVDIMM's uitbrengen.

Apparaat IOPS Gem. latentie (ns) MB/sec
NVM Express SSD 14.553 66,632 56,85
Blokmodus NVDIMM 148.567 6.418 580,34
DAX-modus NVDIMM 1.112.007 828 4.343,78

Tabel 2:Vergelijking van willekeurige schrijfprestaties in 4K (1 thread, QD1)

De prestatiecijfers in tabel 2 zijn afkomstig van een Microsoft/Intel-presentatie (Persistent Memory in Windows) op IDF16 in San Francisco, waarbij deze prestatietestmethode is gebruikt:

  • Werklast :4KB willekeurige schrijfacties, 1 thread, 1 uitstekende I/O, synchrone I/O, 1GB bestand, NTFS, 3s warming-up, 7s meettijd
  • Hardware :HPE ProLiant DL380 Gen9, 2x Intel Xeon E5-2650L v3 @ 1.8GHz, 96GB RAM, 2x 8GB NVDIMM-N, 1x 1600GB NVMe SSD
  • Software :Pre-released WS 2016 build, Microsoft interne I/O tool

Er is een goede Channel 9-video genaamd Accelerating SQL Server 2016 Performance with Persistent Memory in Windows Server 2016 met Lindsey Allen en Tobias Klima. Een demo in de video laat zien hoe SQL Server 2016 op Windows Server 2016 de DAX-modus ondersteunt (met een niet-gespecificeerde traceringsvlag). Zodra Windows Server 2016 GA wordt, is de traceringsvlag niet nodig met een toekomstige versie van SQL Server.

Deze nieuwe geheugenopslaglagen passen tussen traditioneel DRAM-geheugen en SATA/SAS SSD's.

Een opslagvolume dat is geformatteerd in DAX-modus kan worden gebruikt als host voor een transactielogboekbestand van SQL Server 2016 in een scenario waarin u absoluut de best mogelijke schrijfprestaties nodig hebt en u geen gebruik wilt maken van Delayed Durability of In-Memory OLTP. Een ander mogelijk scenario zou het gebruik van een DAX-modusvolume zijn om uw tempdb-gegevensbestanden te hosten als u een werkbelasting had die extreme stress op tempdb legde.

Toekomstige geheugen-/opslaglagen

Eind 2016/begin 2017 zouden we de introductie moeten zien van Intel Optane SSD's die het NVMe-protocol gebruiken. Dit zullen flash-opslagapparaten zijn die Intel/Micron 3D XPoint-technologie gebruiken (uitgesproken als cross-point), die in bestaande servers zullen werken. In interne tests van Intel laten deze apparaten ongeveer 10x lagere latentie zien en ongeveer 10x hogere IOPS dan bestaande, zeer krachtige Intel DC P3700-serie PCIe NVMe SSD-apparaten.

Medio/eind 2017 zouden we ook de uitrol moeten zien van een nieuwe vorm van persistente DIMM die kan worden gebruikt als persistent geheugen met zeer grote capaciteit of als extreem krachtige opslag met lage capaciteit. Deze zullen elektrisch en fysiek compatibel zijn met de huidige DDR4 DIMM's en zullen worden ondersteund in het volgende generatie Intel Xeon-processorgebaseerde platform (het Skylake "Purley"-platform). Deze producten zullen ook gebaseerd zijn op Intel/Micron 3D XPoint-technologie. Deze Intel DIMM's bieden tot tweemaal de systeemgeheugencapaciteit tegen aanzienlijk lagere kosten dan traditionele DDR4 DRAM, ervan uitgaande dat uw processor/serverplatform dit ondersteunt (en Microsoft de limiet voor het licentiegeheugen verhoogt nadat Windows Server 2016 is uitgebracht). Deze DIMM's hebben niet dezelfde latentie als traditionele DRAM (ze zijn langzamer), maar bieden een veel lagere latentie dan PCIe NVMe-opslagapparaten.

Vanuit een breder, sectorbreed perspectief, biedt deze nieuwe categorie Persistent Memory (PM)-apparaten niet-vluchtige opslag met bijna DRAM-achtige prestaties. PM-apparaten bevinden zich direct op de geheugenbus, waardoor ze een zeer lage latentie en hoge bandbreedte hebben. Microsoft ondersteunt PM-apparaten in Windows 10 Jubileumupdate en Windows Server 2016. Er zal ondersteuning zijn voor een nieuwe klasse opslagvolume, dat een Direct Access Storage (DAX) Volume wordt genoemd. DAX Volumes gebruiken aan het geheugen toegewezen bestanden om applicaties directe toegang tot PM-apparaten te bieden voor absoluut de beste prestaties.

Een van de redenen waarom de DAX-modus zo veel sneller is, is dat als je eenmaal de regio van NVDIMM op een DAX-volume hebt toegewezen, verdere interacties met die opslag de opslagstack volledig omzeilen. Het is letterlijk slechts een memcopy om de gegevens persistent te maken. Dat is een heleboel code die u niet bij elke interactie met de opslag hoeft uit te voeren. Dat is een andere zeer belangrijke bijdrage aan latentie (samen met de snelheid van het licht). DAX-volumes worden ondersteund op NTFS en u moet de DAX-modus kiezen wanneer u het volume formatteert. Applicaties (zoals SQL Server 2016) moeten zijn aangepast (door Microsoft) om de DAX-modus te ondersteunen en te gebruiken, en u moet ook een traceringsvlag inschakelen.

Voor achterwaartse compatibiliteit op PM-hardware zijn er ook Block-modusvolumes, die alle bestaande opslagsemantiek behouden. Alle I/O-bewerkingen zullen de opslagstack doorkruisen naar het PM-schijfstuurprogramma. Dit maakt de Block-modus volledig compatibel met bestaande applicaties. Als u een PM-hardwareapparaat hebt met een ondersteund besturingssysteem, krijgt u aanzienlijke opslagprestaties zonder enige toepassingsaanpassing in de blokmodus. Dit betekent dat down-level versies van SQL Server opslagvolumes in blokmodus kunnen gebruiken.

Het komt erop neer dat we de komende 12-18 maanden veel meer flexibiliteit en nieuwe opties zullen hebben voor het ontwerpen en configureren van uw geheugen- en opslagsubsysteemlagen, zolang u SQL Server 2016 op Windows gebruikt. Server 2016 en heb voldoende nieuwe hardware die PM-apparaten kan ondersteunen. Oudere versies van SQL Server kunnen PM-volumes in Block-modus gebruiken als ze op Windows Server 2016 worden uitgevoerd. Oudere hardware en oudere versies van Windows Server kunnen Intel Optane SSD's gebruiken. Dit geeft ons veel extra keuzes om de opslagprestaties te verbeteren!


  1. JOIN-query's versus meerdere query's

  2. Problemen met SQL Server CPU-prestaties oplossen

  3. PDO:MySQL-server is verdwenen

  4. Verdiep een datum in SQL-server