Le operazioni che attivano un'analisi del pool di buffer possono essere eseguite lentamente nei computer con memoria di grandi dimensioni
Articolo
Questo articolo descrive come l'analisi del pool di buffer di SQL Server potrebbe richiedere molto tempo per terminare nei computer con memoria di grandi dimensioni.
Si applica a: SQL Server Numero KB originale: 4566579
Sintomi
Alcune operazioni in Microsoft SQL Server attivano un'analisi del pool di buffer (la cache che archivia le pagine del database in memoria). Nei sistemi con una grande quantità di RAM (1 TB di memoria o superiore), l'analisi del pool di buffer potrebbe richiedere molto tempo. In questo modo si rallenta l'operazione che ha attivato l'analisi.
Operazioni che causano un'analisi del pool di buffer
Ecco alcune operazioni che possono attivare un'analisi del pool di buffer:
Avvio del database
Arresto o riavvio del database
Failover del gruppo di disponibilità
Rimozione del database (eliminazione)
Rimozione di file da un database
Backup completo o differenziale del database
Ripristino del database
Ripristino del log delle transazioni
Ripristino online
DBCC CHECKDB o DBCC CHECKTABLE operazione
Il log degli errori mostra che un'analisi ha richiesto molto tempo
L'analisi del pool di buffer ha richiesto 14 secondi: ID database 7, comando 'BACKUP DATABASE', operazione 'FlushCache', buffer analizzati 115, buffer iterati totali 204640239, tempo di attesa 0 ms. Per altre informazioni, vedere "https://go.microsoft.com/fwlink/?linkid=2132602".
Se un'analisi richiede più di 1 secondo, l'evento XEvent verrà registrato come segue quando l'evento è abilitato.
nome
database_id
elapsed_time_ms
Comando
operation (operazione)
scanned_buffers
total_iterated_buffers
buffer_pool_scan_complete
7
1308
BACKUP DATABASE
FlushCache
243
19932814
Nota
La soglia si trova nell'evento XEvent è più piccola per consentire di acquisire informazioni con una granularità più fine.
Soluzione alternativa
Prima di SQL Server 2022, non è stato possibile eliminare questo problema. Non è consigliabile eseguire alcuna azione per cancellare il pool di buffer perché l'eliminazione di buffer puliti (DBCC DROPCLEANBUFFERS) dal pool di buffer può comportare una riduzione significativa delle prestazioni. La rimozione delle pagine di database dalla memoria causerà la ri lettura dei dati dai file di database su disco delle esecuzioni di query successive. Questo processo di accesso ai dati tramite I/O su disco causa la lentezza delle query.
In SQL Server 2022 questo problema è risolto perché le analisi del pool di buffer vengono parallelizzate usando più core. Ci sarà un'attività per 8 milioni di buffer (64 GB) in cui verrà comunque usata un'analisi seriale se sono presenti meno di 8 milioni di buffer. Per altre informazioni, vedere Analisi parallela del pool di buffer.
Questo modulo esplora la migrazione dei database superiori a 20 TB, considerati database molto grandi. Illustra inoltre le tecniche e le procedure necessarie per ottenere una migrazione da locale ad Azure con tempi di inattività accettabili e con rischi ridotti al minimo. Prepararsi per l'esame AZ-120 Planning and Administering Microsoft Azure for SAP Workloads.
In questo episodio di Data Exposed con David Pless e Anna Hoffman verrà illustrato il nuovo miglioramento dell'analisi parallela del pool di buffer di SQL Server 2022. L'analisi parallela del pool di buffer migliora le prestazioni delle operazioni di analisi su computer di grandi dimensioni usando più core CPU. I clienti che eseguono SQL Server in computer con memoria di grandi dimensioni visualizzeranno scenari di esecuzione più veloci che sono stati storicamente più lenti a causa dell'analisi del pool di
Informazioni su come impostare o modificare il tempo di recupero di riferimento di un database SQL Server in SQL Server usando SQL Server Management Studio o Transact-SQL.
Informazioni sull'opzione Ottimizza per carichi di lavoro ad hoc. Scoprire come usarla per migliorare l'efficienza della cache dei piani di SQL Server quando i carichi di lavoro contengono molti batch ad hoc a uso singolo.