Sintomi
Si supponga di avere un gruppo di disponibilità di Always On in SQL Server 2016 e 2017. Quando si elabora una query di lettura in una replica secondaria, le prestazioni potrebbero essere molto più lente rispetto alla replica principale a causa di frequenti attese DIRTY_PAGE_TABLE_LOCK.
Causa
Questo problema si verifica a causa della contesa tra la query di lettura e il thread di rollford e perché la tabella è bloccata.
Risoluzione
Questa correzione è inclusa negli aggiornamenti seguenti per SQL Server:
Aggiornamento cumulativo 8 per SQL Server 2017
Aggiornamento cumulativo 1 per SQL Server 2016 Service Pack 2
Aggiornamento cumulativo 9 per SQL Server 2016 Service Pack 1
Informazioni sulle build SQL Server
Ogni nuova build per SQL Server contiene tutti gli aggiornamenti rapidi e le correzioni per la sicurezza inclusi nella build precedente. È consigliabile installare la build più recente per la versione di SQL Server:
Soluzione alternativa
Per risolvere questo problema, è possibile usare un singolo thread di ripristino anziché un thread di ripristino parallelo abilitando il contrassegno di traccia 3459.
Ulteriori informazioni
Quando le query di sola lettura sono in esecuzione su una replica secondaria leggibile, i thread di query tentano di applicare le operazioni di rollforgimento del log in sospeso ed è necessario collaborare con i thread di lavoro di rollford con DIRTY_PAGE_TABLE_LOCK in attesa, che possono essere generati di frequente e rallentare sia il rollo che le prestazioni delle query in caso di carichi di lavoro di rollo simultanei. Il problema di prestazioni associato alla DIRTY_PAGE_TABLE_LOCK attesa viene risolto nella versione di aggiornamento cumulativo per SQL Server 2016 SP e SQL Server 2017 menzionata in questo articolo.
Per altre informazioni, vedere il blog seguente sul modello e sulle prestazioni della replica secondaria del gruppo di disponibilità.
Stato
Microsoft ha confermato che questo problema si verifica nei prodotti elencati nella sezione "Si applica a".
Riferimenti
Informazioni sulla terminologia utilizzata da Microsoft per descrivere gli aggiornamenti software.