KB4163087 - FIX: le prestazioni sono lente per un gruppo di disponibilità di Always On quando si elabora una query di lettura in SQL Server

Si applica a
SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2017 on Windows (all editions)

Sintomi

Si supponga di avere un gruppo di disponibilità 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 primaria a causa delle frequenti attese di DIRTY_PAGE_TABLE_LOCK.

Causa

Questo problema si verifica a causa di conflitti tra la query di lettura e il thread di ripristino e perché la tabella è bloccata.

Risoluzione

Questa correzione è inclusa nei seguenti aggiornamenti 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 di SQL Server

Ogni nuova build per SQL Server contiene tutti gli hotfix e le correzioni di sicurezza presenti nella build precedente. È consigliabile installare la build più recente per la versione di SQL Server:

Aggiornamento cumulativo più recente per SQL Server 2017

Build più recente per SQL Server 2016

Soluzione alternativa

Per risolvere questo problema, è possibile usare un singolo thread di ripristino anziché un thread di ripristino parallelo abilitando il flag di traccia 3459.

Altre informazioni

Quando le query di sola lettura sono in esecuzione in una replica secondaria leggibile, i thread di query tentano di applicare operazioni di ripristino del log in sospeso e devono collaborare con thread di lavoro di ripristino con attese DIRTY_PAGE_TABLE_LOCK , che possono essere generate di frequente e rallentare le prestazioni sia di ripristino che di query se sono presenti carichi di lavoro di ripristino simultanei. Il problema di prestazioni associato all'attesa DIRTY_PAGE_TABLE_LOCK è stato 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 di ripristino della replica secondaria del gruppo di disponibilità.

Stato

Microsoft ha confermato che si tratta di un problema relativo ai prodotti elencati nella sezione "Si applica a".

Riferimenti

Informazioni sulla terminologia utilizzata da Microsoft per descrivere gli aggiornamenti software.