KB3074425 - FIX: Le attese CMEMTHREAD si verificano quando si eseguono molte query ad hoc in SQL Server 2012 o SQL Server 2014

Si applica a
SQL Server 2012 Enterprise SQL Server 2012 Developer SQL Server 2012 Express SQL Server 2012 Standard SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use)

Sintomi

Si supponga di avere molte statistiche e tabelle e che le tabelle contengano molte colonne in un database di Microsoft SQL Server 2012 o SQL Server 2014. Quando si eseguono molte query ad hoc per recuperare contemporaneamente i dati da tali tabelle, potrebbero verificarsi attese CMEMTHREAD durante l'esecuzione.

Risoluzione

Informazioni sull'aggiornamento cumulativo

Il problema è stato risolto per la prima volta nell'aggiornamento cumulativo seguente di SQL Server.

Consiglio: installare l'aggiornamento cumulativo più recente per SQL Server

Ogni nuovo aggiornamento cumulativo per SQL Server contiene tutte le correzioni rapide e di sicurezza incluse nell'aggiornamento cumulativo precedente. È consigliabile scaricare e installare gli aggiornamenti cumulativi più recenti per SQL Server:

      

Altre informazioni

Quando si compila o si ricompila una query in SQL Server 2012, il motore deve ottenere input dall'istogramma delle statistiche. Dobbiamo eseguire una scansione della tabella di sistema e quindi caricare l'istogramma specifico delle tabelle coinvolte in memoria o cache. Queste voci della tabella di sistema (per le statistiche) vengono memorizzate nella cache della tabella di sistema (CACHESTORE_SYSTEMROWSET). L'oggetto di memoria utilizzato per creare queste voci nella cache non è partizionato ed è globale.

Pertanto, se durante questa operazione vengono eseguite allocazioni di memoria simultanee, si verificheranno attese CMEMTHREAD su questo oggetto memoria. Ciò si verifica in genere quando si inviano molte query che richiedono la compilazione o la ricompilazione.

Questo hotfix modifica l'oggetto di memoria globale da partizionare in modo che le allocazioni di memoria simultanee che utilizzano la cache della tabella di sistema non incontrino conflitti e il CMEMTHREAD attenda.

Per ulteriori informazioni su un problema simile, vedere 3026082 KB: FIX: SOS_CACHESTORE conflitto di spinlock nella cache del set di righe della tabella di sistema causa un utilizzo elevato della CPU in SQL Server 2012 o 2014.

Stato

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