Delen via


Bewerkingen die een scan van een buffergroep 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
Origineel KB-nummer: 4566579

Symptomen

Bepaalde bewerkingen in Microsoft SQL Server 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 meer) kan het scannen van de buffergroep lang duren. Dit vertraagt de bewerking die de scan heeft geactiveerd.

Bewerkingen die een bufferpoolscan veroorzaken

Hier volgen enkele bewerkingen die een bufferpoolscan 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

Foutenlogboek toont aan dat een scan lang heeft geduurd

Vanaf SQL Server 2016 SP3, SQL Server 2017 CU23 en SQL Server 2019 CU9, is er een foutbericht toegevoegd aan het SQL Server Foutenlogboek om aan te geven dat een scan van een buffergroep lang heeft geduurd (10 seconden of langer):

De scan van de buffergroep duurde 14 seconden: database-id 7, opdracht 'BACKUP DATABASE', bewerking 'FlushCache', gescande buffers 115, totaal aantal getimede buffers 204640239, wachttijd 0 ms. Zie 'https://go.microsoft.com/fwlink/?linkid=2132602' voor meer informatie.

Uitgebreide gebeurtenis om een lange scan te diagnosticeren

Vanaf dezelfde builds SQL Server 2016 SP3, SQL Server 2017 CU23 en SQL Server 2019 CU9 is de gebeurtenis buffer_pool_scan_complete Extended 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 wordt ingeschakeld.

Naam database_id elapsed_time_ms opdracht Bewerking scanned_buffers total_iterated_buffers
buffer_pool_scan_complete 7 1308 BACK-UPDATABASE FlushCache 243 19932814

Opmerking

De drempelwaarde in de XEvent is kleiner, zodat u informatie met een fijnere granulariteit kunt vastleggen.

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, omdat 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 uit de databasebestanden op de schijf opnieuw gelezen. Dit proces voor toegang tot gegevens via schijf-I/O zorgt ervoor dat query's traag zijn.

In SQL Server 2022 wordt dit probleem opgelost omdat bufferpoolscans worden geparallelliseerd door gebruik te maken van meerdere kernen. Er is één taak per 8 miljoen buffers (64 GB) waarbij een seriële scan nog steeds wordt gebruikt als er minder dan 8 miljoen buffers zijn. Voor meer informatie watch Parallelle scan van bufferpools.

Meer informatie

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