Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op: SQL Server 2019 (15.x) en latere versies
Met de hybride buffergroep kunnen buffergroepobjecten verwijzen naar gegevenspagina's in databasebestanden die zich op PMEM-apparaten (permanent geheugen) bevinden, in plaats van kopieën van de gegevenspagina's van de schijf op te halen en in de cache op te slaan in vluchtige DRAM's. Deze functie is geïntroduceerd in SQL Server 2019 (15.x) en is verder verbeterd in SQL Server 2022 (16.x).
Permanente geheugenapparaten (PMEM) zijn byteadresseerbaar en als een permanent geheugenbewust bestandssysteem (zoals XFS, EXT4 of NTFS) wordt gebruikt, kunnen bestanden op het bestandssysteem worden geopend met behulp van de gebruikelijke BESTANDSSYSTEEM-API's in het besturingssysteem. SQL Server kan ook bewerkingen uitvoeren die bekend staan als belastings- en opslagbewerkingen op basis van geheugentoewijzingen van de bestanden op het PMEM-apparaat. Hierdoor kunnen PMEM-compatibele toepassingen zoals SQL Server toegang krijgen tot bestanden op het apparaat zonder de traditionele opslagstack te doorlopen.
De hybride buffergroep maakt gebruik van deze mogelijkheid om belasting- en opslagbewerkingen uit te voeren op geheugentoewijzingsbestanden om het PMEM-apparaat te gebruiken als een cache voor de buffergroep en een opslaglocatie voor de databasebestanden. Hierdoor ontstaat de unieke situatie waarbij zowel een logische leesbewerking als een fysieke leesbewerking in feite dezelfde bewerking wordt. Permanente geheugenapparaten zijn toegankelijk via de geheugenbus, net als gewone vluchtige DRAM.
Standaard worden alleen schone gegevenspagina's in de cache opgeslagen in de PMEM-module voor de hybride buffergroep. Als u een pagina wilt wijzigen en als vuil wilt markeren, moet deze worden gekopieerd van het PMEM-apparaat naar een DRAM-buffergroep, gewijzigd en wordt uiteindelijk een kopie van de gewijzigde pagina teruggeschreven van DRAM naar de PMEM-module, waarna deze opnieuw als schoon kan worden gemarkeerd. Dit proces wordt uitgevoerd met normale achtergrondbewerkingen, zoals controlepunt of de luie schrijver, alsof de PMEM-module een standaardblokapparaat is.
De functie voor hybride buffergroepen is beschikbaar voor Zowel Windows als Linux. Het PMEM-apparaat moet een bestandssysteem gebruiken dat ONDERSTEUNING biedt voor DAX (DirectAccess). XFS, EXT4 en de NTFS-bestandssystemen hebben allemaal ondersteuning voor DAX-extensies, die rechtstreeks vanuit de gebruikersruimte toegang tot het bestandssysteem bieden. SQL Server detecteert of een databasegegevensbestand zich op een correct geconfigureerd PMEM-schijfapparaat bevindt en voert automatisch de benodigde geheugentoewijzing van de databasebestanden uit bij het opstarten van de database, of wanneer een database is gekoppeld, hersteld of gemaakt.
Voor meer informatie, zie:
- Configureer permanent geheugen (PMEM) voor SQL Server in Windows (SQL Server 2022 (16.x) en latere versies).
- Configureer permanent geheugen (PMEM) voor SQL Server op Linux.
Hybride buffergroep inschakelen
SQL Server 2019 (15.x) introduceert dynamische gegevenstaal (DDL) om de hybride buffergroep te beheren.
In het volgende voorbeeld wordt een hybride buffergroep ingeschakeld voor een exemplaar van SQL Server:
ALTER SERVER CONFIGURATION SET MEMORY_OPTIMIZED HYBRID_BUFFER_POOL = ON;
Hybride buffergroep is standaard uitgeschakeld op het exemplaarbereik. Om de instelling van kracht te laten worden, moet het SQL Server-exemplaar opnieuw worden opgestart. Opnieuw opstarten is nodig om voldoende hash-pagina's toe te wijzen om rekening te houden met de totale PMEM-capaciteit op de server.
In het volgende voorbeeld wordt een hybride buffergroep ingeschakeld voor een specifieke database.
ALTER DATABASE <databaseName> SET MEMORY_OPTIMIZED = ON;
Hybride buffergroep is standaard ingeschakeld in het databasebereik.
Hybride buffergroep uitschakelen
In het volgende voorbeeld wordt hybride buffergroep uitgeschakeld op exemplaarniveau:
ALTER SERVER CONFIGURATION SET MEMORY_OPTIMIZED HYBRID_BUFFER_POOL = OFF;
Hybride buffergroep is standaard uitgeschakeld op exemplaarniveau. Om deze wijziging van kracht te laten worden, moet het exemplaar opnieuw worden gestart. Het opnieuw opstarten zorgt ervoor dat er voldoende hash-pagina's worden toegewezen voor de buffergroep, omdat PMEM-capaciteit op de server nu moet worden verwerkt.
In het volgende voorbeeld wordt de hybride buffergroep voor een specifieke database uitgeschakeld.
ALTER DATABASE <databaseName> SET MEMORY_OPTIMIZED = OFF;
Hybride buffergroep is standaard ingeschakeld in het databasebereik en uitgeschakeld op het serverbereik.
Configuratie van hybride buffergroep weergeven
Uitvoeringstijdwaarde weergeven
In het volgende voorbeeld wordt de configuratiestatus van de huidige hybride buffergroep van het exemplaar geretourneerd.
SELECT * FROM sys.server_memory_optimized_hybrid_buffer_pool_configuration;
In het volgende voorbeeld ziet u de databases en de instelling op databaseniveau voor de hybride buffergroep (is_memory_optimized_enabled).
U kunt de PMEM-module ook koppelen of formatteren zonder DAX ingeschakeld en deze behandelen als een normaal blokapparaat (dat wil gezegd I/O uitvoeren via de kernel). Wanneer u deze manier hebt geconfigureerd, kunnen er geen PMEM-modules worden gebruikt door SQL Server om byte-adresseerbare bewerkingen uit te voeren (dat wil gezegd, alle aanroepen maken gebruik van kernelruimtestuurprogramma's).
SELECT name, is_memory_optimized_enabled
FROM sys.databases;
Hybride buffergroep met directe schrijfbewerking
De hybride buffergroep met Direct Write-gedrag vermindert het aantal memcpy opdrachten dat moet worden uitgevoerd op gewijzigde gegevens of indexpagina's die zich op PMEM-apparaten bevinden. Dit doet u door de duurzame persistente logboekbuffer te gebruiken als een middel om de pagina te wijzigen zonder deze te hoeven kopiëren naar een van de DRAM-buffergroepen. In plaats daarvan worden pagina's in databasebestanden die zich op PMEM-apparaten bevinden, rechtstreeks gewijzigd zonder dat ze in een DRAM-buffergroep hoeven te worden opgeslagen en later asynchroon naar schijf hoeven te worden leeggemaakt. Dit gedrag houdt zich nog steeds aan het schrijven van Semantiek (WAL) voor logboekregistratie, omdat de (logboek)-records in de persistente transactielogboekbuffer zijn geschreven of worden beperkt tot duurzame media. Er zijn aanzienlijke prestatieverbeteringen waargenomen voor transactionele workloads met behulp van de hybride buffergroep en de persistente logboekbuffer op deze manier.
Als u de directe schrijfmodus wilt inschakelen, schakelt u de hybride buffergroep en de permanente logboekbuffer voor een database in en schakelt u de opstarttraceringsvlag 809 in.
Aanbevolen procedures voor hybride buffergroep
Wanneer u uw PMEM-apparaat op Windows opmaakt, gebruikt u de grootste grootte van de toewijzingseenheid die beschikbaar is voor NTFS (2 MB in Windows Server 2019 en hoger) en zorgt u ervoor dat het apparaat is geformatteerd voor DAX (Direct Access).
Schakel de pagina's vergrendelen in het geheugenbeleid in Windows in.
Bestandsgrootten moeten een veelvoud van 2 MB zijn (modulo 2 MB moet gelijk zijn aan nul).
Als de instelling met serverbereik voor een hybride buffergroep is uitgeschakeld, wordt de functie niet gebruikt door een gebruikersdatabase.
Als de instelling voor hybride buffergroepen is ingeschakeld op de server, kunt u de instelling voor databasebereik gebruiken om de functie voor afzonderlijke gebruikersdatabases uit te schakelen.
Vanaf SQL Server 2019 (15.x) CU 3 (zie KB4538118), is leescaching standaard ingeschakeld, een proces waarbij de heetste pagina's worden bijgehouden in de hybride buffergroep en vervolgens automatisch worden gepromoveerd naar een DRAM-buffergroep om de prestaties te verbeteren.
Vanaf SQL Server 2022 (16.x) CU 1 is Direct Write het standaardgedrag wanneer de hybride buffergroep wordt gecombineerd met een permanente logboekbuffer. Dit moet de prestaties voor bijna alle workloads verbeteren, maar er is altijd een kans op regressie en de CU moet grondig worden getest voordat deze wordt toegepast. Als u regressie ondervindt vanwege deze gedragswijziging, kunt u terugkeren naar het vorige gedrag met behulp van de opstart-traceervlag 898.
Vanaf SQL Server 2022 (16.x) CU 1 wordt traceringsvlag 809 genegeerd door SQL Server bij het opstarten. Traceringsvlag 809 en traceringsvlag 898 zijn alleen van toepassing op Windows en zijn niet van toepassing op SQL Server op Linux. De traceringsvlagmen mogen alleen worden gebruikt wanneer deze worden omgeleid door een gecertificeerde Microsoft Server-professional.