Microsoft distribuira Ispravke za Microsoft SQL Server 2008 R2 kao jednu datoteku koja se može preuzeti. Pošto su ispravke kumulativne, svako novo izdanje sadrži sve hitne ispravke i sve bezbednosne ispravke koje su uključene u prethodno izdanje SQL Server 2008 R2 ispravke.
Simptomi
Razmotrite sledeći scenario:
-
Aplikacija pokreće upit koji upućuje na neke privremene tabele u sistemima Microsoft SQL Server 2008 i Microsoft SQL Server 2008 R2. Privremene tabele se kreiraju u sesiji umesto u uskladištenoj proceduri.
-
Plan upita je keširan.
-
Mnogi korisnici pokreću isti upit u veoma uporednom okruženju. Na primer, mnogi korisnici koriste aplikaciju koja pokreće sledeći upit:
create table #x (col1 int) go insert into #x values (1) go select * from #x where col1 = 1 go
U ovom scenariju, aplikacija nailazi na probleme sa performansama.Napomena Više informacija o identifikovanju ovog problema potražite u odeljku "Više informacija".
Uzrok
Do ovog problema dolazi zato što se isti planovi upita umeću u keš memoriju u istoj heš kofi za svakog korisnika kada je tekst upita isti. Kada se veliki broj planova baci u istu kantu (poznatu i kao heš lanac), vreme za promenu plana u kešu se značajno povećava, a može doći i do problema sa performansama. Pored toga, radničke niti mogu naići na ozbiljnu spornu tačku, a na druge niti utiče kada ove radničke niti ne izvrše ispravne prinose planera.
Rešenje
Napomena Trenutno je dostupna samo ispravka za SQL Server 2008 R2. Za SQL Server 2008 pogledajte odeljak "Zaobilazno rešenje" da biste zaobišli ovaj problem.
Kumulativne informacije o ažuriranju
SQL Server 2008 R2 servisni paket 1
Ispravka za ovaj problem je prvi put objavljena u kumulativnoj ispravci 1 za SQL Server 2008 R2 servisni paket 1. Za više informacija o nabavljanju ovog paketa kumulativnih ispravki kliknite na sledeći broj članka da biste videli članak u Microsoft bazi znanja:
2544793 Kumulativni paket ispravki 1 za SQL Server 2008 R2 servisni paket 1Napomena 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 SQL Server 2008 R2 ispravke. 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 Service Pack 1 was released
SQL Server 2008 R2
Ispravka za ovaj problem je prvi put objavljena u kumulativnoj ispravci 7. Za više informacija o nabavljanju ovog paketa kumulativnih ispravki za SQL Server 2008 R2 kliknite na sledeći broj članka da biste videli članak u Microsoft bazi znanja:
2507770 Kumulativni paket ispravki 7 za SQL Server 2008 R2 Napomena 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 SQL Server 2008 R2 ispravke. 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:
981356 SQL Server 2008 R2 builds that were released after SQL Server 2008 R2 was released
Status
Microsoft je potvrdio da je ovo problem u Microsoft proizvodima koji su navedeni u odeljku "Odnosi se na".
Rešenje
Da biste zaobišli ovaj problem u sistemima SQL Server 2008 i SQL Server 2008 R2, premestite sve reference privremenih tabela u uskladištene procedure.
Više informacija
Za više informacija o kreiranju i menjanje osnova tabele posetite sledeću MSDN Web lokaciju:
Kako kreirati i izmeniti osnove tabele?Spinlock contention se može identifikovati iz sys.dm_os_spinlock_stats za dinamičko upravljanje (DMV) koji ima visoku stopu sporenja na SOS_CACHESTORE spinlock. Da biste identifikovali ovaj problem, pokrenite upit koji je sliиan sledeжem:
select cp.bucketid, count(cp.bucketid) as BucketCount, st.text from sys.dm_exec_cached_plans cp cross apply sys.dm_exec_sql_text(cp.plan_handle) as st group by cp.bucketid, st.text having count(cp.bucketid) >1 order by BucketCount descAko su prilikom pokretanje ovog upita ispunjeni sledeći uslovi, možete naići na probleme sa performansama:
-
Ovaj upit generiše isti tekst upita.
-
Broj istih kofa je veliki.Napomena Veliki broj za istu kofu je obično preko 1000.
-
Upiti upućuju na privremene tabele