Symptomy
Rozpatrzmy następujący scenariusz:
-
Używasz wystąpienia programu Microsoft SQL Server 2012 lub SQL Server 2014 z włączoną architekturą NUMA.
-
Program SQL Server jest skonfigurowany do używania wielu rdzeni procesora w wielu węzłach NUMA (na przykład 4 węzły NUMA, które mają 12 rdzeni każdego).
-
Jest uruchamiana intensywna kompilacja, która generuje wysoką szybkość kompilacji na podstawie wielu jednoczesnych połączeń.
W tym scenariuszu nie zauważysz żadnego zwiększenia wyników zapytania kompilacja/SEC z rosnącą liczbą dostępnych rdzeni, które są dłuższe niż 12. Ponadto procesor może pokazywać 100 procent wykorzystania.Uwaga Dotkliwość stopnia nasycenia procesora zależy od liczby rdzeni na węzeł NUMA, a także od stawki kompilacji.
Przyczyna
Ten problem występuje, ponieważ program SQL Server używa struktury danych, która może przyczynić się do tworzenia wzorców zawartości procesora w sprzęcie obsługującym architekturę NUMA między kompilacjami współbieżnymi.
Rozwiązanie
Po zastosowaniu tej poprawki program SQL Server zamienia użycie udostępnionej struktury na dane lokalne wątku. Ten problem został po raz pierwszy rozwiązany w poniższej zbiorczej aktualizacji programu SQL Server.
Zbiorcza aktualizacja 1 dla programu SQL Server 2012 z dodatkiem SP2 /en-us/help/2976982
Zbiorcza aktualizacja 2 dla programu SQL Server 2014 /en-us/help/2967546
Zbiorcza aktualizacja 10 dla programu SQL Server 2012 z dodatkiem SP1 /en-us/help/2954099
Każda nowa Zbiorcza aktualizacja programu SQL Server zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń uwzględnione w poprzedniej aktualizacji zbiorczej. Zapoznaj się z najnowszymi aktualizacjami zbiorczymi dla programu SQL Server:
Obejście
Aby obejść ten problem, zmniejsz szybkość kompilacji w systemie programu SQL Server.
Stan
Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji "dotyczy".