FIX: Conflitto di spinlock SOS_CACHESTORE nella cache dei piani ad hoc di SQL Server causa un utilizzo elevato della CPU in SQL Server 2012 o 2014

IMPORTANTE: il presente articolo è stato tradotto tramite un software di traduzione automatica di Microsoft ed eventualmente revisionato dalla community Microsoft tramite la tecnologia CTF (Community Translation Framework) o da un traduttore professionista. Microsoft offre articoli tradotti manualmente e altri tradotti automaticamente e rivisti dalla community con l’obiettivo di consentire all'utente di accedere a tutti gli articoli della Knowledge Base nella propria lingua. Tuttavia, un articolo tradotto automaticamente, anche se rivisto dalla community, non sempre è perfetto. Potrebbe contenere errori di vocabolario, di sintassi o di grammatica. Microsoft declina ogni responsabilità per imprecisioni, errori o danni causati da una traduzione sbagliata o dal relativo utilizzo da parte dei clienti. Microsoft aggiorna frequentemente il software e gli strumenti di traduzione automatica per continuare a migliorare la qualità della traduzione.

Clicca qui per visualizzare la versione originale in inglese dell’articolo: 3026083
Sintomi
Quando si verificano troppi inserimenti simultanei nello stesso bucket di hash o cache dei piani ad hoc di SQL Server raggiunge il limite di movimento di 160,036, si verifica un grave conflitto su spinlock SOS_CACHESTORE. In questo caso, un utilizzo elevato della CPU si verifica in Microsoft SQL Server 2012 o SQL Server 2014.
Cause
Il problema si verifica perché, quando la cache dei piani di SQL Server raggiunge il limite di movimento, piani con basso costo deve essere eliminato per inserire nuovi piani. Di conseguenza fortemente contesi il spinlock SOS_CACHESTORE che fornisce la sincronizzazione per i bucket di tabella hash della cache dei piani di SQL Server.
Risoluzione

Informazioni sull'aggiornamento cumulativi

Il problema è stato innanzitutto corretto nell'aggiornamento cumulativo seguente di SQL Server.

Informazioni sugli aggiornamenti cumulativi per SQL Server

Ogni nuovo aggiornamento cumulativo per SQL Server contiene tutti gli hotfix e tutte le correzioni di protezione che sono stati incluse nell'aggiornamento cumulativo precedente. Consente di estrarre gli ultimi aggiornamenti cumulativi per SQL Server:
Informazioni
La cache dei piani ha due limiti, la dimensione totale e il numero totale di tutti i piani. Vengono illustrati i limiti di dimensione e la voce conteggio nel white paper Elementi interni di Cache del piano. Il numero massimo di voci che può contenere una cache dei piani è quattro volte del conteggio bucket. È possibile verificare queste informazioni utilizzando le seguenti query:
select name, type, buckets_count from sys.dm_os_memory_cache_hash_tableswhere name IN ( 'SQL Plans' , 'Object Plans' , 'Bound Trees' ) select name, type, pages_kb, entries_count from sys.dm_os_memory_cache_counterswhere name IN ( 'SQL Plans' , 'Object Plans' ,  'Bound Trees' )
Ad esempio, nei sistemi a 64 bit, il bucket per la cache dei piani di SQL Server è 40,009. Pertanto, il numero massimo di voci che possono essere contenuti all'interno della cache dei piani di SQL Server è 160,036. Quando si dispone di un carico di lavoro che utilizza diverse query ad hoc, questo limite può diventare un collo di bottiglia. In questi casi, è possibile utilizzare la modifica in questo hotfix. Dopo aver installato questo aggiornamento rapido e abilitare la modifica utilizzando la traccia di avvio -T 174 del contrassegno, il numero di bucket viene aumentato a 160,001 nei sistemi a 64 bit. Di conseguenza, la cache dei piani ora tenendo un numero massimo di 640,004 piani.
Status
Microsoft ha confermato che questo è un problema nei prodotti Microsoft elencati nella sezione "Si applica a".

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 3026083 - Ultima revisione: 06/24/2015 07:14:00 - Revisione: 3.0

Microsoft SQL Server 2012 Service Pack 2, Microsoft SQL Server 2012 Service Pack 1, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Standard, Microsoft SQL Server 2014 Web, Microsoft SQL Server 2014 Service Pack 1

  • kbqfe kbfix kbsurveynew kbexpertiseadvanced kbmt KB3026083 KbMtit
Feedback