Microsoft SQL Server ekosisteminde veri tabanı yöneticileri (DBA) için performans izleme, otomasyon ve sorun giderme süreçlerinin kalbi Sistem View’ları ve MSDB veritabanında atar. Veritabanı motorunun nasıl nefes aldığını anlamak, ancak bu yapıların sunduğu meta verileri doğru yorumlamakla mümkündür.
Bu makalede, SQL Server ortamlarında operasyonel sürekliliği sağlayan MSDB veritabanının kritik rolünü ve günlük yönetim süreçlerinde en sık kullanılan sistem görünümlerini kategorize ederek inceleyeceğiz.
MSDB, SQL Server’ın “planlayıcısı” ve “hafızası” gibidir. SQL Server Agent servisinin tüm faaliyetleri, yedekleme geçmişi ve Service Broker yapılandırmaları burada tutulur.
- SQL Server Agent Bilgileri: Oluşturulan tüm işler (jobs), bu işlerin adımları ve çalışma zamanlamaları MSDB içindeki tablolarda saklanır.
- Backup & Restore Geçmişi: Veritabanı üzerinde alınan her yedeğin (Full, Diff, Log) ne zaman alındığı, hangi path’e yazıldığı ve boyutu gibi detaylar burada tutulur.
- Database Mail: SQL Server üzerinden gönderilen e-postaların yapılandırması ve logları MSDB’dedir.
SQL Server’da sistem bilgilerine erişmek için kullanılan yapılar genellikle Üçe ayrılır: Catalog Views (nesne tanımları) ve Dynamic Management Views (DMV) (anlık performans verileri).
Sistem View Katmanları
1. Katalog View’ları (Catalog Views)
- Veritabanı nesnelerinin meta verilerini sunar.
- “sys.” prefix’i ile başlarlar
- Hiyerarşik yapıdadır (sys.tables → sys.columns → sys.types gibi)
- Salt okunurdur, doğrudan değiştirilemezler
2. Dinamik Yönetim View’ları (DMV’ler)
- Sunucunun gerçek zamanlı durum bilgisini verir
- “sys.dm_” prefix’i ile başlarlar
- Çalışma zamanı performans verileri sağlarlar
- Sorgu çalıştıkça güncellenen veriler içerirler
3. Bilgi Şeması View’ları (INFORMATION_SCHEMA)
- SQL standardına uyumlu metadatalar
- Veritabanı taşınabilirliği için kullanışlıdır
- Örnek: INFORMATION_SCHEMA.TABLES, INFORMATION_SCHEMA.COLUMNS
A. Veritabanı ve Nesne Yönetimi (Catalog Views)
Veritabanındaki tablolar, kolonlar ve indeksler hakkında bilgi almak için kullanılır:
- sys.databases: Sunucudaki tüm veritabanlarının durumunu, kurtarma modellerini (Recovery Model) ve uyumluluk seviyelerini gösterir.
- sys.indexes: Mevcut indekslerin yapısını ve türlerini anlamak için temeldir.
- sys.tables – Veritabanındaki tüm tablolar
- sys.views – Tüm view’lar
- sys.columns – Tablo ve view’lardaki kolonlar
- sys.foreign_keys – Foreign key constraint’leri
- sys.procedures – Stored Procedure’ler
- sys.schemas – Şemalar
- sys.objects – Tüm veritabanı nesneleri
B. Performans ve Kaynak İzleme (DMVs)
Anlık darboğazları tespit etmek ve kaynak kullanımını analiz etmek için vazgeçilmezdir:
- sys.dm_exec_requests: O anda çalışan aktif talepleri ve bu taleplerin hangi kaynakları beklediğini (wait type) gösterir.
- sys.dm_os_wait_stats: Sunucu genelinde en çok karşılaşılan bekleme türlerini vererek sistemin genel performans sorununu (CPU, Disk veya Memory) teşhis etmenizi sağlar.
- sys.dm_db_index_usage_stats: Hangi indekslerin ne kadar kullanıldığını, hangilerinin hiç kullanılmadığını raporlayarak depolama optimizasyonu sağlar.
- sys.dm_exec_connections – Aktif bağlantılar
- sys.dm_exec_sessions – Açık oturumlar
- sys.dm_exec_query_stats – Sorgu performans istatistikleri
- sys.dm_os_performance_counters – Performans sayaçları
- sys.dm_io_virtual_file_stats – Dosya I/O istatistikleri
- sys.dm_tran_locks – Mevcut kilitler
C. SQL Server Agent ve Yedekleme Analizi (MSDB Views)
Otomasyonun durumunu kontrol etmek için kullanılır:
- msdb.dbo.sysjobs & msdb.dbo.sysjobhistory: İşlerin (job) tanımları ve geçmişteki başarı/hata durumlarını sorgulamak için kullanılır.
- msdb.dbo.backupset: Alınan yedeklerin tarihsel takibini yapmak ve eksik yedekleri tespit etmek için kritik bir görünümdür.
- backupmediafamily: Yedeklerin fiziksel depolama bilgileri
- backupfile:Yedeklenen dosyalar hakkında bilgi
- restorehistory: Geri yükleme işlemleri geçmişi
- sysjobsteps: Job adımlarının detayları
- sysmail_* tabloları: Database Mail ile ilgili bilgiler
- sysoperators: SQL Agent operatörleri
- syscategories: Job, alert ve operatör kategorileri
- backupset: Her yedekleme işleminin kaydını tutar (ne zaman, kim tarafından, boyutu gibi)
- sysalerts: Tanımlı uyarılar ve eylemleri
- sysmail_mailitems: Gönderilen e-postaların içeriği ve durumu
- sysmail_log: E-posta gönderim geçmişi ve hataları
Bir DBA’in en sık kullandığı sorgu kalıplarından biri, sistemdeki anlık yükü görmektir:
SELECT
r.session_id,
r.status,
r.cpu_time,
r.logical_reads,
t.text AS query_text
FROM sys.dm_exec_requests r
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t;
Hangi Senaryoda Hangi View Kullanılmalı?
1. Performans Sorunlarında:
- sys.dm_exec_requests: Aktif sorguları ve blokajları gösterir
- sys.dm_os_wait_stats: Sistem geneli bekleme istatistikleri
- sys.dm_exec_query_stats: En maliyetli sorguları listeler
2. Kapasite Planlamasında:
- sys.dm_db_file_space_usage: Dosya büyüme eğilimleri
- sys.dm_os_performance_counters: Kaynak tüketim metrikleri
3. Güvenlik Denetimlerinde:
- sys.database_permissions: Veritabanı izin haritası
- sys.server_permissions: Sunucu seviyesi yetkiler
- sys.sql_logins: Login hesaplarının özellikleri
4. Bakım Operasyonlarında:
- sys.indexes + sys.dm_db_index_usage_stats: Kullanılmayan indeksler
- sys.dm_db_missing_index_details: Optimizasyon önerileri
MSDB veritabanı ve sistem view’ları, bir SQL Server instance’ının kara kutusu gibidir. Bu yapıları sadece bilmek değil, düzenli olarak sorgulamak; proaktif bir veritabanı yönetimi sergilemenize olanak tanır. Özellikle 15 TB gibi büyük ölçekli sistemlerde veya karmaşık Availability Group yapılarında, sistem view’larından gelen veriler; manuel kontrollerin yetersiz kaldığı noktalarda en büyük yardımcınız olacaktır.
Veritabanı sağlığını korumak ve performansı optimize etmek için bu görünümleri temel alan özelleştirilmiş dashboardlar ve alarm mekanizmaları geliştirmek, profesyonel bir DBA yönetimi için standart bir uygulama haline gelmelidir.
Başka makalede görüşmek üzere..
İyilikler için karşılık beklemeyin. İnsan-9
