Problembeschreibung
Wenn zu viele gleichzeitige Einfügungen im gleichen Hash Bucket auftreten oder der Ad-hoc-SQL Server-Plan Cache seinen Höchstwert für 160.036 erreicht, tritt ein schwerwiegender Konflikt SOS_CACHESTORE Spinlock auf. In diesem Fall tritt eine höhere CPU-Auslastung in Microsoft SQL Server auf.
Ursache
Das Problem tritt auf, wenn der SQL Server-Plan Cache seinen Eintrags Grenzwert erreicht, und Pläne mit günstigen Kosten müssen entfernt werden, damit neue Pläne eingefügt werden. Dies führt zu schwerwiegenden Konflikten beim SOS_CACHESTORE Spinlock, der die Synchronisierung für die Hashtabellen Buckets des SQL Server-Plancaches bereitstellt.
Fehlerbehebung
Informationen zur kumulativen Aktualisierung
Das Problem wurde zuerst im folgenden kumulativen Update von SQL Server behoben.
Jedes neue kumulative Update für SQL Server enthält alle Hotfixes und alle Sicherheitsupdates, die im vorherigen kumulativen Update enthalten waren. Schauen Sie sich die neuesten kumulativen Updates für SQL Server an:
Weitere Informationen
Der Plan-Cache hat zwei Grenzwerte: die Gesamtgröße und die Gesamtzahl aller Pläne. Die Grenzwerte für die Größe und die Anzahl der Einträge werden im folgenden Whitepaper erläutert:
Die maximale Anzahl von Einträgen, die in einem Plan-Cache enthalten sein können, ist die vierfache Anzahl der Buckets. Sie können diese Informationen überprüfen, indem Sie die folgenden Abfragen ausführen:
select name, type, buckets_count
from sys.dm_os_memory_cache_hash_tables
where name IN ( 'SQL Plans' , 'Object Plans' , 'Bound Trees' )
select name, type, pages_kb, entries_count
from sys.dm_os_memory_cache_counters
where name IN ( 'SQL Plans' , 'Object Plans' , 'Bound Trees' )
Beispielsweise ist auf 64-Bit-Systemen die Anzahl der Buckets für den SQL Server-Plan-Cache 40.009. Daher ist die maximale Anzahl von Einträgen, die in den SQL Server-Plan Cache passen können, 160.036.
Wenn Sie über eine Arbeitsauslastung verfügen, die unterschiedliche Ad-hoc-Abfragen verwendet, kann dieser Grenzwert zu einem Engpass werden. Die von diesem Hotfix vorgenommene Änderung behebt diese Situation. Nachdem Sie diesen Hotfix installiert und die Änderung mithilfe des Start Ablaufverfolgungsflag "-T 174" aktiviert haben, wird die Bucket-Anzahl auf 160.001 auf 64-Bit-Systemen erhöht. Der Plan-Cache kann dann maximal 640.004-Pläne speichern.
Status
Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den in diesem Artikel genannten Microsoft-Produkten handelt.