MSSQL Veritabanı Bakımı ve Performans İyileştirme Rehberi

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:

  1. Yeniden Düzenleme (Reorganize): Örneğin, düşük parçalanma (%5-%30 arası) varsa bunu seçin. Bu online bir işlemdir.
  2. 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_stats DMV’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.
  • WHERE bloğu ile veriyi kaynağında filtreleyin.
  • Büyük tablolarda EXISTS operatö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:

  1. Max Server Memory: İşletim sistemine RAM bırakacak şekilde sınırlandırın.
  2. MAXDOP (Max Degree of Parallelism): Genellikle fiziksel çekirdek sayısının yarısı veya daha azını kullanın.
  3. 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ıkNotlar
Tam YedeklemeHaftalıkYoğun olmayan saatlerde yapın.
Fark YedeklemeGünlükTam yedekten sonraki değişimleri alır.
Log YedeklemeSaatlikTam kurtarma modelinde kullanın.
Bütünlük KontrolüHaftalıkDBCC CHECKDB işlemini çalıştırın.
Index RebuildAylıkParçalanma yüksekse uygulayın.

Tablo 2: Performans İzleme Araçları

Araç AdıKullanım Amacı
Activity MonitorAnlık kilitlenmeler ve kaynak kullanımını gösterir.
Performance MonitorCPU, RAM ve Disk I/O sayaçlarını sunar.
Query StoreSorgu 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.

Yorum bırakın

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Scroll to Top