Delen via


Buffergroepextensie

van toepassing op:SQL Server-

Geïntroduceerd in SQL Server 2014 (12.x), biedt de buffergroepextensie de naadloze integratie van een niet-compatibel willekeurig toegangsgeheugen (d.w.z. solid-state drive) extensie voor de Database Engine-buffergroep om de I/O-doorvoer aanzienlijk te verbeteren. De buffergroepextensie is niet beschikbaar in elke SQL Server-editie. Zie Functies die worden ondersteund door de edities van SQL Server 2016voor meer informatie.

Voordelen van de buffergroepextensie

Het primaire doel van een SQL Server-database is het opslaan en ophalen van gegevens, dus intensieve schijf-I/O is een kernkenmerk van de database-engine. Omdat I/O-bewerkingen van de schijf veel resources kunnen verbruiken en relatief lang kunnen duren, is SQL Server gericht op het zeer efficiënt maken van I/O. De buffergroep fungeert als een primaire bron voor geheugentoewijzing van SQL Server. Bufferbeheer is een belangrijk onderdeel bij het bereiken van deze efficiëntie. Het bufferbeheeronderdeel bestaat uit twee mechanismen: de bufferbeheerder voor toegang tot databasepagina's en de buffergroep om de I/O van het databasebestand te verminderen.

Gegevens- en indexpagina's worden van schijf naar de buffergroep gelezen en gewijzigde pagina's (ook wel vuile pagina's genoemd) worden teruggeschreven naar de schijf. Geheugenbelasting op de server- en databasecontrolepunten zorgen ervoor dat hete (actieve) vuile pagina's in de buffercache worden verwijderd uit de cache en naar mechanische schijven worden geschreven en vervolgens weer in de cache worden gelezen. Deze I/O-bewerkingen zijn doorgaans kleine willekeurige lees- en schrijfbewerkingen in de volgorde van 4 kB tot 16 kB aan gegevens. Kleine willekeurige I/O-patronen veroorzaken frequente zoekbewerkingen, concurreren voor de mechanische schijfarm, verhogen van de I/O-latentie en het verminderen van de cumulatieve I/O-doorvoer van het systeem.

De typische aanpak voor het oplossen van deze I/O-knelpunten is het toevoegen van meer DRAM of het toevoegen van hoogwaardige SAS-spindels. Hoewel deze opties nuttig zijn, hebben ze aanzienlijke nadelen: DRAM is duurder dan gegevensopslagstations en het toevoegen van spindels verhoogt de kapitaaluitgaven bij het verwerven van hardware en verhoogt de operationele kosten door een verhoogd energieverbruik en een grotere kans op een storing van onderdelen.

De bufferpoolextensie breidt de cache van de bufferpool uit met niet-vluchtige opslag (meestal SSD). Vanwege deze uitbreiding kan de bufferpool een grotere databaseset herbergen, wat leidt tot de paging van I/Os tussen het RAM-geheugen en de SSD's. Hierdoor worden kleine willekeurige I/Os effectief overgebracht van mechanische schijven naar SSD's. Vanwege de lagere latentie en betere random I/O-prestaties van SSD's, verbetert de buffergroepextensie de I/O-doorvoer aanzienlijk.

In de volgende lijst worden de voordelen van de functie buffergroepuitbreiding beschreven.

  • Verhoogde willekeurige I/O-doorvoer

  • Minder I/O-latentie

  • Verhoogde transactiedoorvoer

  • Verbeterde leesprestaties met een grotere hybride buffergroep

  • Een cachearchitectuur die kan profiteren van huidige en toekomstige goedkope geheugenstations

Concepten

De volgende voorwaarden zijn van toepassing op de functie buffergroepuitbreiding.

Termijn Beschrijving
SSD(Solid-State Drive) Ssd-stations slaan gegevens op een permanente manier op in het geheugen (RAM). Zie de Wikipedia-definitievoor meer informatie.
Buffer In SQL Server is een buffer een pagina van 8 kB in het geheugen, dezelfde grootte als een gegevens- of indexpagina. De buffercache is dus onderverdeeld in pagina's van 8 kB. Een pagina blijft in de buffercache totdat het bufferbeheer het buffergebied nodig heeft om meer gegevens te lezen. Gegevens worden alleen teruggeschreven naar de schijf als deze worden gewijzigd. Deze in het geheugen gewijzigde pagina's worden aangeduid als 'vuile pagina's'. Een pagina is schoon wanneer deze gelijk is aan zijn database-afbeelding op schijf. Gegevens in de buffercache kunnen meerdere keren worden gewijzigd voordat ze terug naar de schijf worden geschreven.
buffergroep Ook wel buffercachegenoemd. De buffergroep is een globale resource die wordt gedeeld door alle databases voor hun gegevenspagina's in de cache. De maximale en minimale grootte van de buffergroepcache wordt bepaald tijdens het opstarten of wanneer het exemplaar van SQL Server dynamisch opnieuw wordt geconfigureerd met sp_configure. Deze grootte bepaalt het maximum aantal pagina's dat op elk moment in de buffergroep kan worden gecached in de actieve instantie.

Het maximale geheugen dat kan worden doorgevoerd door de buffergroepextensie kan worden beperkt door de andere toepassingen die op de machine worden uitgevoerd, voor het geval deze toepassingen aanzienlijke geheugenbelasting creëren.
Controlepunt Een controlepunt maakt een bekend goed punt waaruit de database-engine kan beginnen met het toepassen van wijzigingen in het transactielogboek tijdens het herstel na een onverwachte afsluiting of crash. Een controlepunt schrijft de vuile pagina's en transactielogboekgegevens van het geheugen naar de schijf en registreert ook informatie over het transactielogboek. Zie Database-controlepunten (SQL Server)voor meer informatie.

Bijzonderheden

SSD-opslag wordt gebruikt als extensie voor het geheugensubsysteem in plaats van het schijfopslagsubsysteem. Dat wil gezegd: met het buffergroepextensiebestand kan de buffergroepbeheerder zowel DRAM als NAND-Flash geheugen gebruiken om een veel grotere bufferpool van lauwwarme pagina's te onderhouden in niet-compatibel willekeurig toegangsgeheugen dat wordt ondersteund door SSD's. Hiermee maakt u een cachehiërarchie met meerdere niveaus met niveau 1 (L1) als de DRAM en niveau 2 (L2) als het buffergroepextensiebestand op de SSD. Alleen schone pagina's worden naar de L2-cache geschreven, waardoor de gegevensveiligheid behouden blijft. De bufferbeheerder verwerkt de verplaatsing van schone pagina's tussen de L1- en L2-caches.

In de volgende afbeelding ziet u een algemeen architectuuroverzicht van de buffergroep ten opzichte van andere SQL Server-onderdelen.

diagram van extensiearchitectuur voor SSD-buffergroepen.

Wanneer deze optie is ingeschakeld, geeft de buffergroepextensie de grootte en het bestandspad op van het cachebestand van de buffergroep op de SSD. Dit bestand is een aaneengesloten hoeveelheid opslag op de SSD en is statisch geconfigureerd tijdens het opstarten van het exemplaar van SQL Server. Wijzigingen in de configuratieparameters van het bestand kunnen alleen worden uitgevoerd wanneer de functie voor de buffergroepextensie is uitgeschakeld. Wanneer de buffergroepextensie is uitgeschakeld, worden alle gerelateerde configuratie-instellingen uit het register verwijderd. Het extensiebestand van de buffergroep wordt verwijderd bij het afsluiten van het exemplaar van SQL Server.

Capaciteitsbeperkingen

De SQL Server Enterprise-editie maakt een maximale grootte van de bufferpooluitbreiding mogelijk van 32 keer de waarde van max server memory.

De SQL Server Standard-editie biedt een maximale grootte van een bufferpooluitbreiding van vier keer de waarde van max server memory.

Beste praktijken

We raden u aan deze aanbevolen procedures te volgen.

  • Nadat u de buffergroepextensie voor het eerst hebt ingeschakeld, moet u het SQL Server-exemplaar opnieuw opstarten om de maximale prestatievoordelen te verkrijgen.

  • Stel de buffergroepextensie zo in dat de verhouding tussen de grootte van het fysieke geheugen (max server memory) en de grootte van de buffergroepextensie van 1:16 of minder. Een lagere verhouding in het bereik van 1:4 tot 1:8 kan optimaal zijn. Zie Server-geheugenconfiguratieoptiesvoor meer informatie over het instellen van de optie max server memory.

  • Test de buffergroepextensie grondig voordat u implementeert in een productieomgeving. Als u eenmaal in productie bent, moet u geen configuratiewijzigingen aanbrengen in het bestand of de functie uitschakelen. Deze activiteiten kunnen een negatief effect hebben op de serverprestaties omdat de buffergroep aanzienlijk kleiner wordt wanneer de functie is uitgeschakeld. Als dit is uitgeschakeld, wordt het geheugen dat wordt gebruikt ter ondersteuning van de functie pas vrijgemaakt als het exemplaar van SQL Server opnieuw wordt opgestart. Als de functie echter opnieuw is ingeschakeld, wordt het geheugen opnieuw gebruikt zonder het exemplaar opnieuw op te starten.

Informatie over de buffergroepextensie retourneren

U kunt de volgende dynamische beheerweergaven gebruiken om de configuratie van de buffergroepextensie weer te geven en informatie over de gegevenspagina's in de extensie te retourneren.

Prestatiemeteritems zijn beschikbaar in SQL Server, Bufferbeheerobject om de gegevenspagina's in het uitbreidingsbestand van de buffergroep bij te houden. Voor meer informatie, zie prestatietellers voor bufferpooluitbreidingen.

De volgende XEvents zijn beschikbaar.

XEvent Beschrijving Parameters
sqlserver.
buffer_pool_extension_pages_written
Vindt plaats wanneer een pagina of groep pagina's wordt verwijderd uit de bufferpool en naar het bufferpool-uitbreidingsbestand wordt geschreven. number_page
first_page_id
first_page_offset
initiator_numa_node_id
sqlserver.
buffer_pool_extension_pages_read
Wordt geactiveerd wanneer een pagina wordt gelezen uit het bufferpoolextensiebestand naar de bufferpool. number_page
first_page_id
first_page_offset
initiator_numa_node_id
sqlserver.
buffer_pool_extension_pages_evicted
Wordt geactiveerd wanneer een pagina wordt verwijderd uit het buffergroepextensiebestand. number_page
first_page_id
first_page_offset
initiator_numa_node_id
sqlserver.
buffer_pool_eviction_thresholds_recalculated
Wordt geactiveerd wanneer de verwijderingsdrempel wordt berekend. warm_threshold
cold_threshold
pages_bypassed_eviction
eviction_bypass_reason
eviction_bypass_reason_description
Taakbeschrijving Artikel
Schakel de buffergroepextensie in en configureer deze. WIJZIG SERVERCONFIGURATIE
De configuratie van de buffergroepextensie wijzigen WIJZIG SERVERCONFIGURATIE
De configuratie van de buffergroepextensie weergeven sys.dm_os_buffer_pool_extension_configuration
De buffergroepextensie bewaken sys.dm_os_buffer_descriptors

SQL Server, Bufferbeheerder-object