Simptomi
Pretpostavimo da imate neke upite koji se odnose na tabele koje imaju mnogo statističkih podataka u sistemima Microsoft SQL Server 2012 ili Microsoft SQL Server 2014. Kada se u istoj heš kofi pojavi previše uporednih umetanja ili sistemska tabela rowset keša dostigne ograničenje unosa od 1.196 sa velikim dužinama kofe, dolazi do ozbiljne sporne stavke na SOS_CACHESTORE spinlock-u i dolazi do velike upotrebe CPU-a.
Uzrok
Do ovog problema dolazi zato što, kada konstantno umećete stavke za istu sistemsku tabelu u ovu keš memoriju grupe sistemskih tabela tokom prevovanja, možete naići na spor na SOS_CACHESTORE kičmenom stolu koji štiti kofe heš tabele za ovu keš memoriju. Jedan od uslova koji uzrokuje ovaj problem je mnogo statističkih podataka koji se predstavljaju u tabelama koje su uključene u prevedeni upit.
Rešenje
Informacije o servisnom paketu
Da biste rešili ovaj problem, nabavite servisni paket 1 za SQL Server 2014.
Više informacija o SQL Server 2014 servisnom paketu 1 (SP1) potražite u greškama koje su fiksirane u SQL Server 2014 servisnom paketu 1.
Kumulativne informacije o ažuriranju
Problem je prvi put otklonjen u sledećoj kumulativnoj ispravki sistema SQL Server.
Svaka nova kumulativna ispravka za SQL Server sadrži sve hitne ispravke i sve bezbednosne ispravke koje su bile uključene u prethodnu kumulativnu ispravku. Pogledajte najnovije kumulativne ispravke za SQL Server:
Više informacija
Svaka baza podataka ima keš grupe redova sistemske tabele koja skladišti stavke iz sistemskih tabela u memoriji. Kada se informacije čitaju iz sistemskih tabela, keširaju se u keš sistemske tabele za tu bazu podataka. Heš kofa koja određuje lokaciju keširane stavke prvobitno je zasnovana na identifikatoru sistemske tabele. Kada istovremeno pročitate mnogo stavki iz iste sistemske tabele, to može dovesti do prethodnog spora. Promene u fiksnoj adresi rešavaju spor na dva načina:
-
Veličina svake sistemske tabele hash tabele keširanja sadržaja povećana je sa 299 na 599.
-
Algoritam hešinga se menja na način da stavke iz iste sistemske tabele ne završe uvek u istoj heš kofi.
Pomoću sledećih upita možete da prikažete informacije o kešu grupe redova sistemske tabele:
select * from sys.dm_os_memory_cache_hash_tableswhere name IN ( 'SystemRowsetStore' ) select * from sys.dm_os_memory_cache_counterswhere name IN ( 'SystemRowsetStore' )
Informacije o sporu sa spinlock-om možete da prikažete pomoću sledećeg upita:
select * from sys.dm_os_spinlock_statswhere name = 'SOS_CACHESTORE'
Status
Microsoft je potvrdio da je ovo problem u Microsoft proizvodima koji su navedeni u odeljku "Odnosi se na".