Plan tahliyesini ölçme


9

Maksimum bellek 24 GB olarak ayarlanmış bir SQL Server 2016 SP1'imiz var.
Bu sunucu çok sayıda derlemeye sahiptir, bu derlemelerin yalnızca% 10'u Geçici sorgulardan alınmıştır. Bu nedenle yeni derlenen planlar plan önbelleğinde saklanmalıdır, ancak plan önbelleğinin boyutu artmamaktadır (yaklaşık 3.72 GB).

Planların önbellekten kaldırılmasına yol açan yerel bellek baskısı olduğundan şüpheleniyorum. Plan önbellek basınç sınırı 5 GB'dir. (0-4 GB arası görünür hedef belleğin% 75'i + 4 GB-64 GB arasındaki görünür hedef belleğin% 10'u + görünür hedef belleğin% 5'i> 64 GB). Bir önbellek basınç sınırının% 75'ine ulaştığında, planlar önbellekten kaldırılmalıdır. Benim durumumda 5 GB'ın% 75'i 3.75GB. Bu yüzden yüksek derlemelerin nedeni budur.

Planlardan önbellekten kaldırılmasını ölçmenin bir yolu var mı (perfmon, genişletilmiş olaylar, ...)? Yani yerel bellek baskısının gerçekten yüksek derlemelerin nedeni olduğundan emin olabilir miyim?

Yanıtlar:


9

Bunun için bir XEvent var:

query_cache_removal_statistics

Bir sorgu planı plan önbelleğinden kaldırıldığında ve nesnenin geçmiş istatistikleri yok edilmek üzere olduğunda oluşur

Yani şöyle bir şey:

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

Ayrıca plan önbelleğinizde çok sayıda tek kullanımlık plan varsa, geçici iş yükleri için optimize etmeyi düşünün .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.