Симптоми
След като инсталирате SQL Server 2014 Service Pack 1 (SP1), SQL Server 2012 SP3 или SQL Server 2016, се сблъсквате с бавна производителност на заявките и използване на ЦП в привилегирован режим (в режим на ядро), докато сървърът не бъде рестартиран. Можете също да видите голям обем на PAGELATCH_* чакания.
Решение
Проблемът е коригиран в следните кумулативни актуализации на SQL Server:
- Сборна актуализация 2 за SQL Server 2016
- Сборна актуализация 5 за SQL Server 2012 Service Pack 3 (SP3)
- Сборна актуализация 7 за SQL Server 2014 SP1
Препоръка: Инсталирайте най-новата кумулативна актуализация за SQL Server
Всяка нова кумулативна актуализация за SQL Server съдържа всички актуални поправки и корекции на защитата, които са били включени в предишната кумулативна актуализация. Препоръчваме ви да изтеглите и инсталирате най-новите сборни актуализации за SQL Server:
- Последна сборна актуализация за SQL Server 2016
- Последна кумулативна актуализация за SQL Server 2012 SP3
- Последна кумулативна актуализация за SQL Server 2014 SP1
Причина
SQL Server използва динамично насърчаване на заключването и логика на понижаване (super/sub-latch). Това подобрява производителността и мащабируемостта на SQL Server, като следи броя на придобиванията на резето и колко време трябва да отнеме придобиването на същото резе, ако не съществува спор за заключване. След това отговарящите на условията ключалки се повишават (супер заключват) на базата на този модел. Когато има много промени (вмъквания/актуализации/изтривания) на свободна памет или BTree (HoBT), свързаните с HoBT ключалки могат да бъдат повишени в състояние на супер заключване. Понижаването обаче не става автоматично. Можете да прочетете повече за супер/подзапушването в тази статия.
Ако тези HoBT по-късно бъдат разпределени, освободеният HoBT се връща в глобален кеш за повторно използване. Когато този HOBT се използва повторно, той използва повторно повишеното преди това резе, дори когато няма спор относно HoBT. Това увеличава режийните разходи на процесора. Това поведение увеличава използването на SQL Server в привилегирован режим (в режим на ядро), докато сървърът не се рестартира. Това увеличение обикновено добавя не повече от няколко микросекунди при всяко изпълнение. Може също така да забележите голям обем на PAGELATCH_* чакания поради тези удължени супер заключвания на HoBT.
Състояние
Microsoft потвърждава, че това е проблем в продуктите на Microsoft, които са изброени в раздела „Важи за“.