Microsoft distribuira ispravke za Microsoft SQL Server 2008 R2 servisni paket 1 (SP1) ili Microsoft SQL Server 2012 u jednoj datoteci koja se može preuzeti. Pošto su ispravke kumulativne, svako novo izdanje sadrži sve hitne ispravke i sve bezbednosne ispravke koje su bile uključene u prethodno izdanje sql Server 2008 R2 servisnog paketa 1 (SP1) ili Microsoft SQL Server 2012.
Simptomi
Razmotrite sledeći scenario:
-
Na računar instalirate instancu sistema Microsoft SQL Server 2008 R2 ili Microsoft SQL Server 2012.
-
Uporedne izjave koje liče na sledeće izvršavaju se u instanci:
CREATE PROC p AS RETURN (
query
); EXEC p;
Ili pokrenete upit koji sadrži sledeći kôd:
IF EXISTS(
subquery
);
-
Upotreba CPU-a je konstantno visoka, a radne niti su u stanju koje se može pokrenuti.
-
Spor za QUERY_EXEC_STATS je veliki. Na primer, broj okretanja, mogući sudari i rezervne vrednosti za QUERY_EXEC_STATS brzo povećavaju.Napomena Više informacija o nadgledanje QUERY_EXEC_STATS okretanja potražite u odeljku "Više informacija".
U ovom scenariju može doći do sporih performansi.
Uzrok
Do ovog problema dolazi zato što sql Server 2008 R2 ili SQL Server 2012 kreira i uništava neke strukture memorije o globalnoj statistici umesto da ih kešira. Ovo uzrokuje usko grlo performansi.
Rešenje
Kumulativne informacije o ažuriranju
SQL Server 2012
Ispravka za ovaj problem je prvi put objavljena u kumulativnoj ispravci 1 za SQL Server 2012. Za više informacija o ovom paketu kumulativnih ispravki kliknite na sledeći broj članka da biste videli članak u Microsoft bazi znanja:
2679368 Kumulativni paket ispravki 1 za SQL Server 2012Napomena Pošto su verzije kumulativne, svako novo izdanje ispravke sadrži sve hitne ispravke i sve bezbednosne ispravke koje su bile uključene u prethodno izdanje ispravki za SQL Server 2012. Microsoft preporučuje da razmislite o primeni najnovijeg izdanja ispravke koje sadrži ovu hitnu ispravku. Za više informacija kliknite na sledeći broj članka da biste videli članak u Microsoft bazi znanja:
2692828 SQL Server 2012 builds koji su objavljeni nakon što je SQL Server 2012 objavljen Morate primeniti hitnu ispravku za SQL Server 2012 na instalaciju sistema SQL Server 2012.
Kumulativni paket ispravki 5 za SQL Server 2008 R2 SP1
Ispravka za ovaj problem je prvi put objavljena u kumulativnoj ispravci 5. Za više informacija o nabavljanju ovog paketa kumulativnih ispravki za SQL Server 2008 R2 SP1 kliknite na sledeći broj članka da biste videli članak u Microsoft bazi znanja:
2659694 Kumulativni paket ispravki 5 za SQL Server 2008 R2 SP1Napomena Pošto su verzije kumulativne, svako novo izdanje ispravke sadrži sve hitne ispravke i sve bezbednosne ispravke koje su bile uključene u prethodno izdanje ispravke za SQL Server 2008 R2 SP1. Preporučujemo da razmislite o primeni najnovijeg izdanja ispravke koje sadrži ovu hitnu ispravku. Za više informacija kliknite na sledeći broj članka da biste videli članak u Microsoft bazi znanja:
2567616 SQL Server 2008 R2 builds that were released after SQL Server 2008 R2 SP1 was released
Više informacija
Da biste pratili QUERY_EXEC_STATS, podesite kašnjenje i broj iteracija kako dolikuje vašem okruženju u sledećem kodu, a zatim ga pokrenite:
SET NOCOUNT ONCREATE TABLE #spins([Spinlock Name] varchar(50),Collisions numeric,Spins numeric,[Spins/Collision] float,[Sleep Time (ms)] numeric,Backoffs numeric, InsertTime datetime DEFAULT GETDATE())DECLARE @counter int = 1WHILE @counter < 10 BEGIN INSERT INTO #spins ([Spinlock Name], Collisions, Spins, [Spins/Collision], [Sleep Time (ms)], Backoffs) EXECUTE ('DBCC SQLPERF (''SPINLOCKSTATS'') WITH NO_INFOMSGS') WAITFOR DELAY '00:00:05' SET @counter +=1 ENDSELECT * FROM #spins WHERE [Spinlock Name] = 'QUERY_EXEC_STATS' ORDER BY InsertTimeDROP TABLE #spins
Status
Microsoft je potvrdio da je ovo problem u Microsoft proizvodima koji su navedeni u odeljku "Odnosi se na".