Dela via


Tillägg för buffertpool

gäller för:SQL Server

Buffertpooltillägget introducerades i SQL Server 2014 (12.x) och ger sömlös integrering av ett icke-slumpmässigt åtkomstminne (dvs. solid state-enhet) till databasmotorns buffertpool för att avsevärt förbättra I/O-dataflödet. Buffertpooltillägget är inte tillgängligt i varje SQL Server-utgåva. Mer information finns i funktioner som stöds av versionerna av SQL Server 2016.

Fördelar med buffertpoolstillägget

Det primära syftet med en SQL Server-databas är att lagra och hämta data, så intensiv disk-I/O är en grundläggande egenskap hos databasmotorn. Eftersom disk-I/O-åtgärder kan förbruka många resurser och ta relativt lång tid att slutföra fokuserar SQL Server på att göra I/O mycket effektivt. Buffertpoolen fungerar som en primär minnesallokeringskälla för SQL Server. Bufferthantering är en viktig komponent för att uppnå den här effektiviteten. Bufferthanteringskomponenten består av två mekanismer: bufferthanteraren för att komma åt och uppdatera databassidor och buffertpoolen för att minska databasfilens I/O.

Data- och indexsidor läss från disken till buffertpoolen och ändrade sidor (kallas även för smutsiga sidor) skrivs tillbaka till disken. Minnesbelastning på server- och databaskontrollpunkter gör att heta (aktiva) smutsiga sidor i buffertcachen avlägsnas från cacheminnet och skrivs till mekaniska diskar och sedan läss tillbaka till cacheminnet. Dessa I/O-åtgärder är vanligtvis små slumpmässiga läsningar och skrivningar i storleksordningen 4 KB till 16 KB data. Små slumpmässiga I/O-mönster uppstår ofta, konkurrerar om den mekaniska diskarmen, ökar I/O-svarstiden och minskar systemets aggregerade I/O-dataflöde.

Den typiska metoden för att lösa dessa I/O-flaskhalsar är att lägga till mer DRAM, eller alternativt lägga till högpresterande SAS-spindlar. Även om dessa alternativ är användbara har de betydande nackdelar: DRAM är dyrare än datalagringsenheter, och genom att lägga till spindlar ökar kapitalutgifterna för maskinvaruförvärv och ökar driftskostnaderna genom ökad energiförbrukning och ökad sannolikhet för komponentfel.

Funktionen buffertpoolstillägg utökar buffertpoolens cacheminne med icke-volatil lagring (vanligtvis SSD). På grund av det här tillägget kan buffertpoolen hantera en större databasarbetsuppsättning, vilket tvingar växlingen av I/Os mellan RAM-minnet och SSD:erna. Detta avlastar effektivt små slumpmässiga I/Os från mekaniska diskar till SSD:er. På grund av den lägre svarstiden och bättre slumpmässiga I/O-prestanda för SSD:er förbättrar buffertpoolstillägget avsevärt I/O-dataflödet.

I följande lista beskrivs fördelarna med buffertpoolstilläggsfunktionen.

  • Ökat slumpmässigt I/O-dataflöde

  • Minskad I/O-svarstid

  • Ökad transaktionstakt

  • Förbättrad läsprestanda med en större hybridbuffertpool

  • En cachelagringsarkitektur som kan dra nytta av nuvarande och framtida minnesenheter till låg kostnad

Begrepp

Följande villkor gäller för funktionen för buffertpoolstillägg.

Termin Beskrivning
SSD- Solid state-enheter lagrar data i minnet (RAM) på ett beständigt sätt. Mer information finns i Wikipedia-definitionen.
Buffert I SQL Server är en buffert en 8 KB-sida i minnet, samma storlek som en data- eller indexsida. Buffertcachen är därför indelad i 8 KB-sidor. En sida finns kvar i buffertcachen tills bufferthanteraren behöver buffertområdet för att läsa in mer data. Data skrivs tillbaka till disken endast om det har ändrats. Dessa minnesinterna ändrade sidor kallas för smutsiga sidor. En sida är ren när den motsvarar dess databasbild på disken. Data i buffertcachen kan ändras flera gånger innan de skrivs tillbaka till disken.
Buffertpool Kallas även buffertcache. Buffertpoolen är en global resurs som delas av alla databaser för deras cachelagrade datasidor. Den maximala och minsta storleken på buffertpoolcachen bestäms vid start eller när instansen av SQL Server konfigureras om dynamiskt med sp_configure. Den här storleken avgör det maximala antalet sidor som kan cachelagras i buffertpoolen när som helst i den instans som körs.

Det maximala minne som kan allokeras av buffertpoolstillägget kan begränsas av andra program som körs på datorn, utifall att de skapar betydande minnestryck.
Kontrollpunkt En kontrollpunkt skapar en känd bra punkt från vilken databasmotorn kan börja tillämpa ändringar som finns i transaktionsloggen under återställningen efter en oväntad avstängning eller krasch. En kontrollpunkt skriver information om smutsiga sidor och transaktionsloggar från minne till disk och registrerar även information om transaktionsloggen. Mer information finns i Database checkpoints (SQL Server).

Detaljer

SSD-lagring används som ett tillägg till undersystemet för minne i stället för disklagringsundersystemet. Med buffertpoolstilläggsfilen kan buffertpoolshanteraren använda både DRAM- och NAND-Flash minne för att underhålla en mycket större buffertpool med ljumna sidor i ovolatilt slumpmässigt åtkomstminne som backas upp av SSD:er. Detta skapar en cachelagringshierarki på flera nivåer med nivå 1 (L1) som DRAM och nivå 2 (L2) som buffertpoolstilläggsfil på SSD:t. Endast rena sidor skrivs till L2-cachen, vilket bidrar till att upprätthålla datasäkerheten. Bufferthanteraren hanterar förflyttningen av rena sidor mellan L1- och L2-cacheminnena.

Följande bild ger en arkitekturöversikt på hög nivå över buffertpoolen i förhållande till andra SQL Server-komponenter.

diagram över SSD-arkitekturen för buffertpoolstillägg.

När det är aktiverat anger buffertpoolstillägget storleken och filsökvägen för cachelagringsfilen för buffertpoolen på SSD:t. Den här filen är en sammanhängande lagringsmängd på SSD:t och konfigureras statiskt under starten av SQL Server-instansen. Ändringar av filkonfigurationsparametrarna kan bara göras när funktionen för buffertpoolstillägg är inaktiverad. När buffertpoolstillägget är inaktiverat tas alla relaterade konfigurationsinställningar bort från registret. Filnamnstillägget för buffertpoolen tas bort när instansen av SQL Server stängs av.

Kapacitetsbegränsningar

SQL Server Enterprise-utgåvan tillåter en maximal buffertpoolstilläggsstorlek på 32 gånger värdet för max server memory.

SQL Server Standard Edition tillåter en maximal buffertpoolstilläggsstorlek på fyra gånger värdet för max server memory.

Metodtips

Vi rekommenderar att du följer dessa metodtips.

  • När du har aktiverat buffertpoolstillägget för första gången bör du starta om SQL Server-instansen för att få maximala prestandafördelar.

  • Ange buffertpooltillägget så att kvoten mellan storleken på det fysiska minnet (max server memory) och storleken på buffertpooltillägget är 1:16 eller mindre. Ett lägre förhållande i intervallet 1:4 till 1:8 kan vara optimalt. Information om hur du ställer in alternativet max server memory finns i Alternativ för serverminneskonfiguration.

  • Testa buffertpoolstillägget noggrant innan du implementerar det i en produktionsmiljö. När du är i produktion bör du undvika att göra konfigurationsändringar i filen eller stänga av funktionen. Dessa aktiviteter kan ha en negativ effekt på serverns prestanda eftersom buffertpoolen minskar avsevärt i storlek när funktionen är inaktiverad. När det är inaktiverat frigörs inte det minne som används för att stödja funktionen förrän instansen av SQL Server startas om. Men om funktionen återaktiveras återanvänds minnet utan att instansen startas om.

Returnera information om buffertpoolstillägget

Du kan använda följande dynamiska hanteringsvyer för att visa konfigurationen av buffertpooltillägget och returnera information om datasidorna i tillägget.

Prestandaräknare är tillgängliga i SQL Server, Buffer Manager-objekt för att spåra datasidorna i buffertpoolstilläggsfilen. Mer information finns i prestandaräknare för tillägg av buffertpool .

Följande XEvents är tillgängliga.

XEvent Beskrivning Parametrar
sqlserver.
buffer_pool_extension_pages_written
Utlöses när en sida eller grupp med sidor avlägsnas från buffertpoolen och skrivs till buffertpoolens tilläggsfil. number_page
first_page_id
first_page_offset
initiator_numa_node_id
sqlserver.
buffer_pool_extension_pages_read
Utlöses när en sida läses från buffertpoolens tilläggsfil till buffertpoolen. number_page
first_page_id
first_page_offset
initiator_numa_node_id
sqlserver.
buffer_pool_extension_pages_evicted
Utlöses när en sida tas bort från buffertpoolens tilläggsfil. number_page
first_page_id
first_page_offset
initiator_numa_node_id
sqlserver.
buffer_pool_eviction_thresholds_recalculated
Utlöses när evictionsgränsen beräknas. warm_threshold
cold_threshold
pages_bypassed_eviction
eviction_bypass_reason
eviction_bypass_reason_description
Aktivitetsbeskrivning Artikel
Aktivera och konfigurera buffertpooltillägget. ÄNDRA SERVERKONFIGURATION
Ändra konfigurationen för buffertpoolstillägget ÄNDRA SERVERKONFIGURATION
Visa konfigurationen för buffertpoolstillägget sys.dm_os_buffer_pool_extension_configuration
Övervaka buffertpoolstillägget sys.dm_os_buffer_descriptors

SQL Server, Buffer Manager-objekt