MSSQL Server’da Memory Performansını İzlemenin En Kısa Yolu

SQL Server, veriye hızlı erişim sağlamak için diskteki verileri RAM üzerinde tutar. Bu işlemin gerçekleştiği alan Buffer Pool olarak adlandırılır. Bir veritabanı yöneticisi (DBA) için “SQL Server ne kadar RAM kullanıyor?” sorusundan ziyade, “SQL Server ihtiyacı olan RAM’e sahip mi?” sorusu daha kritiktir.

Sistemdeki fiziksel bellek ile SQL Server’ın bu belleği ne kadar verimli kullandığını görmek için sys.dm_os_sys_info görünümünü kullanırız.

SELECT
    (physical_memory_kb)/1024 AS physical_memory_MB,
    (committed_kb)/1024.0 as BPool_Committed_MB,
    (committed_target_kb)/1024.0 as BPool_Commit_Tgt_MB,
    (visible_target_kb)/1024.0 as BPool_Visible_MB
FROM sys.dm_os_sys_info;

Sorgu sonucunda elde ettiğimiz sütunlar, bize sistemin sağlığı hakkında şu bilgileri verir:

  • Physical Memory (MB): Sunucuda takılı olan toplam fiziksel RAM miktarını temsil eder.
  • Committed MB: SQL Server’ın o anda işletim sisteminden çekmiş olduğu ve aktif olarak kullandığı bellek miktarıdır.
  • Committed Target MB: SQL Server’ın ideal şartlarda kullanmak istediği (hedeflediği) bellek miktarıdır.
  • Visible Target MB: Buffer Pool’un doğrudan erişebildiği ve yönetebildiği 8KB’lık sayfaların kapasitesidir. Bu değerin aşırı düşük olması, sistemin “bellek açlığı” çektiğine ve performansın çökeceğine işarettir.

Sorguyu çalıştırdıktan sonra karşımıza çıkan tabloyu şu iki senaryoya göre değerlendirmeliyiz:

  1. Hedef > Mevcut (Target > Committed): SQL Server daha fazla RAM’e ihtiyaç duyuyor ancak işletim sistemi bu kaynağı henüz sağlamamış veya “Max Server Memory” sınırına takılmış olabilirsiniz. Eğer bu fark sürekli artıyorsa, sorgu performanslarında yavaşlama beklenir.
  2. Hedef < Mevcut (Target < Committed): SQL Server kullandığı belleği azaltmaya çalışıyor demektir. Bu genellikle işletim sisteminden gelen bir “belleği boşalt” sinyali (External Memory Pressure) nedeniyle olur.

Bu veriler ışığında, eğer Target ve Committed değerleri arasında büyük uçurumlar varsa veya Visible Target değeri beklenmedik şekilde düşükse; Max Server Memory ayarlarınızı gözden geçirmeli, sorgu planlarını optimize etmeli veya fiziksel olarak RAM artırımına gitmelisiniz. Unutmayın, SQL Server bellek konusunda ne kadar “rahat” olursa, disk I/O işlemleri o kadar azalır ve sisteminiz o kadar hızlanır.

  1. BPool_Committed_MB ile BPool_Commit_Tgt_MB birbirine yakın mı? Eğer Target çok yüksek ama Committed düşük kalıyorsa, SQL Server bellek istiyor ama alamıyor demektir.
  2. SQL Server’ın Max Server Memory ayarının fiziksel belleğin yaklaşık %80-90’ına (işletim sistemine pay bırakarak) ayarlandığından emin olun.
  3. Eğer Target < Committed durumu varsa, sunucuda SQL Server dışında RAM tüketen başka bir uygulama (Antivirüs, yedekleme yazılımı vb.) olup olmadığını kontrol edin.

Başka makalede görüşmek dileğiyle..

“Biz ona şah damarından daha yakınız.” Kaf-16

Author: Yunus YÜCEL

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir