Delen via


Bewerkingen die een buffergroepscan activeren, kunnen langzaam worden uitgevoerd op computers met een groot geheugen

In dit artikel wordt beschreven hoe het scannen van de SQL Server-buffergroep lang kan duren op computers met een groot geheugen.

Van toepassing op: SQL Server
Oorspronkelijk KB-nummer: 4566579

Symptomen

Bepaalde bewerkingen in Microsoft SQL Server activeren een scan van de buffergroep (de cache waarin databasepagina's in het geheugen worden opgeslagen). Op systemen met een grote hoeveelheid RAM (1 TB geheugen of hoger) kan het scannen van de buffergroep lang duren. Dit vertraagt de bewerking die de scan heeft geactiveerd.

Bewerkingen die een buffergroepscan veroorzaken

Hier volgen enkele bewerkingen die een buffergroepscan kunnen activeren:

  • Database opstarten
  • Database afsluiten of opnieuw opstarten
  • AG-failover
  • Database verwijderen (verwijderen)
  • Bestand verwijderen uit een database
  • Volledige of differentiële databaseback-up
  • Databaseherstel
  • Herstel van transactielogboek
  • Online herstel
  • DBCC CHECKDB of DBCC CHECKTABLE bewerking

In het foutenlogboek ziet u dat een scan lang heeft geduurd

Vanaf SQL Server 2016 SP3, SQL Server 2017 CU23 en SQL Server 2019 CU9 is een foutbericht toegevoegd aan het FOUTENlogboek van SQL Server om aan te geven dat een buffergroepscan lang duurde (10 seconden of langer):

De buffergroepscan duurde 14 seconden: database-id 7, opdracht 'BACKUP DATABASE', bewerking 'FlushCache', gescande buffers 115, totale iteratiebuffers 204640239, wachttijd 0 ms. Zie 'https://go.microsoft.com/fwlink/?linkid=2132602' voor meer informatie.

Uitgebreide gebeurtenis om een lange scan te diagnosticeren

Bovendien is vanaf dezelfde builds SQL Server 2016 SP3, SQL Server 2017 CU23 en SQL Server 2019 CU9 de buffer_pool_scan_complete Uitgebreide gebeurtenis geïntroduceerd om u te helpen bij het identificeren van scans van lange bufferpools.

Als een scan langer dan 1 seconde duurt, wordt de XEvent als volgt vastgelegd wanneer de gebeurtenis is ingeschakeld.

naam database_id elapsed_time_ms opdracht schakelapparatuur optimaliseren scanned_buffers total_iterated_buffers
buffer_pool_scan_complete 7 1308 BACK-UPDATABASE FlushCache 243 19932814

Notitie

De drempelwaarde is in XEvent kleiner, zodat u gegevens kunt vastleggen op een nauwkeurigere granulariteit.

Tijdelijke oplossing

Vóór SQL Server 2022 was er geen manier om dit probleem op te lossen. Het wordt niet aanbevolen om een actie uit te voeren om de buffergroep te wissen als het verwijderen van schone buffers (DBCC DROPCLEANBUFFERS) uit de buffergroep kan leiden tot een aanzienlijke prestatievermindering. Als u databasepagina's uit het geheugen verwijdert, worden de gegevens opnieuw gelezen uit de databasebestanden op schijf. Dit proces voor het openen van gegevens via schijf-I/O zorgt ervoor dat query's traag zijn.

In SQL Server 2022 wordt dit probleem verholpen omdat scans van bufferpools worden geparallelliseerd door gebruik te maken van meerdere kernen. Er is één taak per 8 miljoen buffers (64 GB) waar nog steeds een seriële scan wordt gebruikt als er minder dan 8 miljoen buffers zijn. Bekijk parallelle scan bufferpool voor meer informatie.

Meer informatie

Zie SQL Server: grote RAM- en DB-controlepunten voor meer informatie over problemen die kunnen optreden in grote buffergroepen.