Eksmisja planu pomiarowego


9

Mamy SQL Server 2016 SP1 z maksymalną pamięcią ustawioną na 24 GB.
Ten serwer ma dużą liczbę kompilacji, tylko 10% tych kompilacji pochodzi z zapytań Ad-Hoc. Nowo skompilowane plany powinny być przechowywane w pamięci podręcznej planu, ale wielkość pamięci podręcznej planu nie rośnie (około 3,72 GB).

Podejrzewam, że istnieje lokalna presja pamięci, która prowadzi do usunięcia planów z pamięci podręcznej. Limit ciśnienia pamięci podręcznej planu wynosi 5 GB. (75% widocznej pamięci docelowej od 0-4 GB + 10% widocznej pamięci docelowej od 4 GB-64 GB + 5% widocznej pamięci docelowej> 64 GB). Kiedy pamięć podręczna osiągnie 75% limitu ciśnienia, plany powinny zostać usunięte z pamięci podręcznej. W moim przypadku 75% z 5 GB to 3,75 GB. Jest więc prawdopodobne, że jest to przyczyną wysokich kompilacji.

Czy istnieje sposób na zmierzenie (perfmon, zdarzenia rozszerzone, ...) usunięcia planów z pamięci podręcznej? Więc mogę być pewien, że lokalna presja pamięci jest naprawdę przyczyną wysokich kompilacji?

Odpowiedzi:


9

Jest na to XEvent:

query_cache_removal_statistics

Występuje, gdy plan zapytania zostanie usunięty z pamięci podręcznej planu, a statystyki historyczne dla obiektu wkrótce zostaną zniszczone

Więc coś takiego:

CREATE EVENT SESSION [PlanCacheEvictions] ON SERVER 
ADD EVENT sqlserver.query_cache_removal_statistics(
    ACTION(sqlserver.sql_text))

Również jeśli w pamięci podręcznej planu znajduje się duża liczba planów jednorazowego użytku, rozważ ustawienie optymalizacji dla obciążeń ad hoc .

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.