tarafından

Hangi Veritabanı Önbellekte Ne Kadar Yer Tutuyor? (MS SQL Server)


Aşağıdaki SQL kodu ile MS SQL Server üzerinde bulunan tüm veritabanlarının önbellekte ne kadar yer tuttuğunu öğrenebilirsiniz.


/*
MS SQL Server'da hangi veritabanının ne kadar yer tuttuğunu gösteren aşağıdaki SQL'in çalışma süresi,
veritabanı büyüklüğüyle doğru orantılıdır. Birkaç dakika sürebilir.
*/
SELECT CAST(COUNT(1) * 8 / 1024.0 AS NUMERIC(10, 2)) AS CachedDataMB,
CASE database_id WHEN 32767 THEN '* Resource DB' ELSE DB_NAME(database_id) END AS DatabaseName, database_id DatabaseID
FROM sys.dm_os_buffer_descriptors
GROUP BY DB_NAME(database_id) , database_id ORDER BY DB_NAME(database_id)

Önbellek kullanımı sayesinde, veritabanı nesneleri ve sorguların yürütme planları (execution plan) sunucu hafızasında tutulur. Bu sayede hafızadan okumaya nazaran çok daha yavaş bir işlem olan diskten okuma işlemi yerine hafızadan okuma işlemi yapılarak performans artışı sağlanır.

Bir veritabanının ne kadar yer tuttuğunu ise aşağıdaki komut ile öğrenmek mümkün:

sp_spaceused

Veritabanının diskte tuttuğu yer ile önbellekte kullandığı yeri, yukarıda belirttiğimiz sql sorgusu ve sp_spaceused prosedürünü kullanarak karşılaştırabilirsiniz.

Yorum yazın