SQL Server istatistikleri veritabanı veya arabellek havuzunda depolanıyor mu?


10

İstatistiklerin veritabanında tutulduğunu, ancak bellekte olmadığını mı merak ediyorsunuz? Veritabanını bir prod sunucusundan bir geliştirme sunucusuna yedeklersem / geri yüklersem, geliştirme sunucusunda gerçekleştirirsem yürütme planlarının çok farklı olmaması için aynı istatistikleri tutar mı?

Yanıtlar:


15

Arabellek havuzu veritabanının önbelleğidir. Asla bir 'veya' yoktur, arabellek havuzunda olan şeyler de her zaman veritabanındadır. Veritabanından okunan her şey geçici olarak arabellek havuzunda bulunmalıdır.

Soruya gelince: istatistikler veritabanındadır, böylece bir yedekleme / geri yükleme istatistikleri koruyacaktır.

Bununla birlikte, istatistiklerin korunmasının tekrarlanabilirliği planlamanın bir garantisi olmadığını unutmayın. CPU sayısı ve RAM miktarı gibi diğer faktörler plan üretimini etkiler.


tamam, mantıklı. açıklama için teşekkürler!
Joy Walker


3

Olarak Remus bahsedilen masa istatistik tablolar ve dizinler gibi diğer nesnelere benzer veri tabanında saklanır. İcra planının seçiminde büyük rol oynarlar, ancak başka faktörler de vardır.

Bununla birlikte, SQL Server başka bir tür istatistik biliyor, bize son davranış hakkında bilgi veren istatistikler.

Örneğin, DMV'ler ys.dm_db_index_usage_statsve sys.dm_db_index_operational_statsdizinin nasıl kullanıldığına ilişkin dönüş istatistikleri.

Bu istatistikler yalnızca bellekte saklanır. Sunucu yeniden kaybolur ve yedekleme ile seyahat etmeyin.

Ancak, optimizer bunları bir plan oluşturmak için kullanmaz.


Evet, bu yüzden ilk başta soru / kafa karışıklığı yaşadım. İstatistiklerin DMV'lere benzer olduğunu düşünüyordum. Sunucu yeniden başlatıldığında veya db başka bir sunucuya geri yüklendiğinde bunlar yok olabilir. Konuyu açtığınız için teşekkürler.
Joy Walker
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.