Giriş
MSSQL veritabanlarının sürekliliği, iş operasyonlarınızın temelini oluşturur. Bu nedenle, veritabanı bakımı; veri kaybını önleme ve sistem kararlılığını sağlama konusunda kritik bir rol oynar. Ayrıca, düzenli bakım yaparak donanım arızaları veya yazılım hataları sonucu oluşabilecek veri kayıplarının önüne geçebilirsiniz.
Performans iyileştirmeleri ise kullanıcı deneyimini doğrudan etkiler. Çünkü uygulamaların hızlı yanıt vermesi, verimliliği artırır. Bu rehberde; yedekleme, bütünlük kontrolleri ve performans optimizasyonu konularını, siz IT profesyonelleri için detaylandırdık.
1. MSSQL Veritabanı Bakımı
Veritabanı bakımı, MSSQL ortamının sağlıklı çalışması için düzenli yapmanız gereken görevler bütünüdür. İlk olarak, temel bakım adımlarını inceleyelim:
Veritabanı Yedekleme ve Geri Yükleme (Backup & Restore)
Veri kaybını önlemek istiyorsanız, en temel adım yedeklemedir. Özellikle MSSQL size üç ana yedekleme türü sunar:
- Tam Yedekleme (Full Backup): Veritabanının eksiksiz bir kopyasını oluşturur.
- Fark Yedekleme (Differential Backup): Sadece son tam yedeklemeden sonraki değişiklikleri içerir.
- İşlem Günlüğü Yedeği (Transaction Log Backup): Veritabanını belirli bir ana (point-in-time) döndürmenizi sağlar.
T-SQL ile Tam Yedekleme Örneği:
BACKUP DATABASE VeritabaniAdi
TO DISK = ‘YedeklemeDosyasiYolu\VeritabaniAdi.bak’
WITH FORMAT,
MEDIANAME = ‘VeritabaniYedekleri’,
NAME = ‘Tam Yedekleme’;
GO
Önemli Not: Sunucu arızalarına karşı yedekleri, asıl sunucudan farklı bir fiziksel sürücüye veya ağ konumuna almalısınız.
Veritabanı Bütünlüğü Kontrolü (DBCC CHECKDB)
Veritabanındaki mantıksal ve fiziksel tutarlılığı kontrol etmek için DBCC CHECKDB komutunu kullanın. Böylece, veri bozulmalarını erkenden tespit edebilirsiniz.
Temel Kullanım:
SQL
DBCC CHECKDB (VeritabaniAdi);
GO
Eğer hatalar tespit ederseniz REPAIR_REBUILD veya son çare olarak REPAIR_ALLOW_DATA_LOSS seçeneklerini kullanabilirsiniz. Ancak, onarım işleminden önce mutlaka yedek alın.
Dizin (Index) Bakımı
Veri ekleme işlemleri zamanla index parçalanmasına (fragmentation) neden olur. Dolayısıyla, parçalanma oranına göre şu iki yöntemi uygulayın:
- Yeniden Düzenleme (Reorganize): Örneğin, düşük parçalanma (%5-%30 arası) varsa bunu seçin. Bu online bir işlemdir.
- Yeniden Oluşturma (Rebuild): Oysa yüksek parçalanma (%30 üzeri) varsa bu yöntemi kullanın. İndeksi tamamen baştan oluşturur.
T-SQL ile Index Rebuild Örneği:
SQL
ALTER INDEX DizinAdi ON TabloAdi REBUILD WITH (FILLFACTOR = 80, ONLINE = ON);
GO
İstatistikleri Güncelleme
SQL Server Query Optimizer, sorgu planlarını oluşturmak için istatistikleri kullanır. Ne yazık ki güncel olmayan istatistikler performans kaybına yol açar. Sistem bunu genellikle otomatik yapar fakat büyük veri yüklemelerinden sonra işlemi manuel tetikleyebilirsiniz:
SQL
EXEC sp_updatestats;
GO
2. Bakım Planları ve Otomasyon
MSSQL, tekrarlayan görevleri otomatikleştirmek için Maintenance Plans özelliğini sunar. Sonuç olarak, SSMS üzerinden şu görevleri zamanlayabilirsiniz:
- Veritabanı Yedekleme
- Bütünlük Kontrolü
- Index Rebuild/Reorganize
- Geçmişi Temizleme (Cleanup History)
Disk Alanı Yönetimi
Öncelikle bilmemizde fayda olan, disk doluluğu sistemin durmasına neden olabilir. Bu yüzden, sp_spaceused prosedürü ile alan kullanımını izleyin. Buna ek olarak, eski yedek dosyalarını “Maintenance Cleanup Task” ile otomatik sildirin.
3. MSSQL Performans İyileştirme Yöntemleri
Sistem kaynaklarını verimli kullanmak için aşağıdaki optimizasyon yöntemlerini uygulayın.
Dizin (Index) Optimizasyonu
Şüphesiz, doğru dizinleme performansı en çok artıran faktördür.
- Clustered Index: Verinin fiziksel sıralamasını belirler.
- Non-Clustered Index: Veriye işaret eden ayrı yapılardır.
- Kullanılmayan Indexler:
sys.dm_db_index_usage_statsDMV’si ile tespit edip silin. Çünkü gereksiz indexler yazma performansını düşürür.
Sorgu Optimizasyonu İpuçları
Kötü yazılmış sorgular sistemi kilitler. İşte dikkat etmeniz gerekenler:
SELECT *yerine yalnızca gerekli sütunları çekin.WHEREbloğu ile veriyi kaynağında filtreleyin.- Büyük tablolarda
EXISTSoperatörünüCOUNT(*)yerine tercih edin. - Ayrıca, Execution Plan (Yürütme Planı) analiz ederek darboğazları tespit edin.
SQL Server Yapılandırma Ayarları
Donanım kaynaklarını doğru kullanmak için sunucu ayarları kritik öneme sahiptir:
- Max Server Memory: İşletim sistemine RAM bırakacak şekilde sınırlandırın.
- MAXDOP (Max Degree of Parallelism): Genellikle fiziksel çekirdek sayısının yarısı veya daha azını kullanın.
- Tempdb Ayarları: Tempdb dosyalarını işlemci çekirdek sayısına göre çoğaltın ve hızlı (SSD) disklerde tutun.
Özet Tablolar
Tablo 1: Önerilen Bakım Sıklığı
| Görev Adı | Önerilen Sıklık | Notlar |
| Tam Yedekleme | Haftalık | Yoğun olmayan saatlerde yapın. |
| Fark Yedekleme | Günlük | Tam yedekten sonraki değişimleri alır. |
| Log Yedekleme | Saatlik | Tam kurtarma modelinde kullanın. |
| Bütünlük Kontrolü | Haftalık | DBCC CHECKDB işlemini çalıştırın. |
| Index Rebuild | Aylık | Parçalanma yüksekse uygulayın. |
Tablo 2: Performans İzleme Araçları
| Araç Adı | Kullanım Amacı |
| Activity Monitor | Anlık kilitlenmeler ve kaynak kullanımını gösterir. |
| Performance Monitor | CPU, RAM ve Disk I/O sayaçlarını sunar. |
| Query Store | Sorgu performans geçmişini analiz eder. |
Sonuç
Özetle, MSSQL veritabanlarının performansı; düzenli bakım ve doğru donanım yapılandırması ile sağlanır. Son olarak, bu rehberdeki adımları uygulayarak sisteminizin kararlı çalışmasını garanti altına alabilirsiniz.