MS Sql Serverinizi Biraz Şımartın



MSSQL Veritabanı Bakım ve Performans İyileştirme Yöntemleri

1. Giriş

MSSQL veritabanlarının sürekliliği ve performansı, modern iş operasyonlarının temelini oluşturur. Veritabanı bakımı, veri kaybını önleme, sistem kararlılığını sağlama ve performansı artırma gibi kritik roller üstlenir.1 Düzenli bakım, olası donanım arızaları, yazılım hataları veya kullanıcı kaynaklı yanlış işlemler sonucu oluşabilecek veri kayıplarının önüne geçilmesinde hayati bir öneme sahiptir. Aynı zamanda, veritabanının kararlı bir şekilde çalışmasını sağlayarak iş süreçlerinin aksamadan devam etmesine olanak tanır. Performans iyileştirmeleri ise kullanıcı deneyimini doğrudan etkiler. Uygulamaların daha hızlı yanıt vermesi, kullanıcıların verimliliğini artırır ve genel sistem verimliliğine olumlu katkıda bulunur. Yavaş çalışan bir veritabanı, kullanıcıların sabrını zorlayabilir, iş süreçlerini yavaşlatabilir ve hatta müşteri memnuniyetsizliğine yol açabilir.

Proaktif bakım ve optimizasyon, reaktif sorun gidermeye kıyasla uzun vadede daha faydalı ve maliyet etkin bir yaklaşımdır. Sorunlar ortaya çıktıktan sonra müdahale etmek yerine, düzenli bakım ve performans iyileştirmeleri potansiyel sorunları önceden tespit ederek daha büyük sorunların önüne geçer. Bu yaklaşım, sistemin öngörülebilir ve güvenilir olmasını sağlar, bu da iş açısından kritik uygulamaların kesintisiz çalışması için hayati öneme sahiptir. Ayrıca, iş sürekliliği ve olağanüstü durum kurtarma stratejilerinde de düzenli bakımın önemi büyüktür. Güncel ve sağlıklı bir veritabanı, olası bir felaket durumunda verilerin hızlı ve güvenilir bir şekilde geri yüklenmesini sağlar. Bu da işin devamlılığı açısından kritik bir faktördür.

Bu raporun temel amacı, MSSQL veritabanlarına yönelik kapsamlı bakım ve performans iyileştirme yöntemlerini detaylı bir şekilde açıklamaktır. Raporun kapsamına girecek ana konular arasında veritabanı yedekleme ve geri yükleme, veritabanı bütünlüğü kontrolleri, dizin bakımı ve istatistik yönetimi, işlem günlüğü yönetimi, disk alanı izleme ve temizleme, bakım planları, sorgu optimizasyonu, SQL Server yapılandırması, veritabanı tasarımı ve performans izleme ile sorun giderme yer almaktadır. Bu rapor, deneyimli SQL Server Veritabanı Yöneticileri ve MSSQL veritabanlarının yönetimi ve optimizasyonu sorumluluğunu taşıyan IT profesyonelleri hedef alınarak hazırlanmıştır. Kullanılan araştırma materyalleri, Microsoft’un resmi dokümanları, sektördeki uzmanların blog yazıları ve deneyimleri ile Stack Overflow gibi platformlardaki tartışmalardan oluşmaktadır.

2. MSSQL Veritabanı Bakımı

Veritabanı bakımı, MSSQL ortamının sağlıklı ve verimli bir şekilde çalışmasını sağlamak için düzenli olarak yapılması gereken bir dizi görevi içerir.1 Bu bölüm, temel bakım görevlerini ve bunların nasıl gerçekleştirileceğini detaylı olarak ele alacaktır.

  • Veritabanı Yedekleme ve Geri Yükleme
    Veri kaybını önlemenin ve iş sürekliliğini sağlamanın temel taşı veritabanı yedeklemesidir.2 Düzenli olarak yedek almak, donanım arızaları, yazılım hataları veya kullanıcı hataları gibi beklenmedik durumlarda verilerinizi korumanızı sağlar. MSSQL, farklı yedekleme türleri sunar:
  • Tam Yedekleme: Veritabanının ve tüm nesnelerinin (tablolar, dizinler, saklı yordamlar vb.) eksiksiz bir kopyasını oluşturur.4 Bu, geri yükleme için gereken temel yedektir.
  • SSMS Kullanarak: SQL Server Management Studio (SSMS) kullanarak tam yedekleme yapmak için Object Explorer’da ilgili veritabanına sağ tıklayın, ardından Görevler -> Yedekle seçeneğine gidin. Açılan Yedekle Veritabanı iletişim kutusunda, Yedekleme türü açılır listesinden Tam seçeneğini seçin ve yedekleme dosyasının kaydedileceği hedefi belirtin.4
  • T-SQL Kullanarak: Transact-SQL (T-SQL) kullanarak tam yedekleme yapmak için yeni bir sorgu penceresi açın ve aşağıdaki komutu çalıştırın 4:
    SQL
    BACKUP DATABASE VeritabaniAdi
    TO DISK = ‘YedeklemeDosyasiYolu\VeritabaniAdi.bak’
    WITH FORMAT,
        MEDIANAME = ‘VeritabaniYedekleri’,
        NAME = ‘Tam Yedekleme’;
    GO
    Burada VeritabaniAdi yedeklemek istediğiniz veritabanının adını, ‘YedeklemeDosyasiYolu\VeritabaniAdi.bak’ ise yedekleme dosyasının kaydedileceği yolu ve dosya adını temsil eder. WITH FORMAT seçeneği, belirtilen medyada yeni bir medya kümesi oluşturur ve mevcut yedeklemelerin üzerine yazar. Dikkatli kullanılmalıdır.4
  • PowerShell Kullanarak: PowerShell kullanarak tam yedekleme yapmak için aşağıdaki cmdlet’i kullanabilirsiniz 4:
    PowerShell
    Backup-SqlDatabase -ServerInstance “SunucuAdi\OrnekAdi” -Database “VeritabaniAdi” -BackupAction Database -BackupFile “C:\Yedekler\VeritabaniAdi.bak”
    SunucuAdi\OrnekAdi SQL Server örneğinizin adını, VeritabaniAdi yedeklemek istediğiniz veritabanının adını ve “C:\Yedekler\VeritabaniAdi.bak” ise yedekleme dosyasının kaydedileceği yolu temsil eder.
  • Fark Yedekleme: Son tam yedeklemeden bu yana yapılan tüm değişiklikleri içerir.3 Tam yedeklemeye göre daha hızlı alınır ve daha az disk alanı kaplar. Geri yükleme sırasında önce son tam yedekleme, ardından son fark yedekleme uygulanır.3
  • T-SQL Kullanarak: Fark yedekleme yapmak için aşağıdaki komutu kullanabilirsiniz:
    SQL
    BACKUP DATABASE VeritabaniAdi
    TO DISK = ‘YedeklemeDosyasiYolu\VeritabaniAdi_fark.bak’
    WITH DIFFERENTIAL;
    GO
    WITH DIFFERENTIAL seçeneği, bu yedeklemenin bir fark yedeklemesi olduğunu belirtir.
  • İşlem Günlüğü Yedeği: Tam kurtarma modelinde yapılandırılmış veritabanları için, veritabanındaki her işlemi kaydeden işlem günlüğünün yedeklenmesi mümkündür.3 Bu, veritabanını belirli bir noktaya (işlem seviyesinde) geri yükleme imkanı sağlar.3
  • T-SQL Kullanarak: İşlem günlüğü yedeği almak için aşağıdaki komutu kullanabilirsiniz:
    SQL
    BACKUP LOG VeritabaniAdi
    TO DISK = ‘YedeklemeDosyasiYolu\VeritabaniAdi_log.trn’;
    GO
    Bu komut, işlem günlüğünü belirtilen .trn uzantılı dosyaya yedekler.
  • Geri Yükleme: Yedekleme dosyalarından veritabanını önceki bir duruma döndürme işlemidir.1 Geri yükleme, veri kaybı durumlarında veya veritabanının belirli bir zamana döndürülmesi gerektiğinde kullanılır.
  • SSMS Kullanarak: SSMS kullanarak geri yükleme yapmak için Object Explorer’da Veritabanları’na sağ tıklayın ve Veritabanını Geri Yükle seçeneğine gidin. Açılan iletişim kutusunda, Geri yüklenecek veritabanı bölümünde, Geri yüklenecek veritabanı açılır listesinden geri yüklemek istediğiniz veritabanını seçin. Kaynak bölümünde, Aygıt seçeneğini işaretleyin ve ardından üç nokta (…) düğmesine tıklayarak yedekleme dosyasını seçin. Gerekirse, Seçenekler sayfasında kurtarma seçeneklerini (örneğin, WITH REPLACE, WITH NORECOVERY, WITH RECOVERY) yapılandırın ve ardından Tamam düğmesine tıklayın.
  • T-SQL Kullanarak: T-SQL kullanarak geri yükleme yapmak için aşağıdaki komutları kullanabilirsiniz:
    SQL
    — Tam yedeklemeyi geri yükleme
    RESTORE DATABASE VeritabaniAdi
    FROM DISK = ‘YedeklemeDosyasiYolu\VeritabaniAdi.bak’
    WITH REPLACE;
    GO

    — Tam yedekleme ve ardından fark yedeklemeyi geri yükleme
    RESTORE DATABASE VeritabaniAdi
    FROM DISK = ‘YedeklemeDosyasiYolu\VeritabaniAdi.bak’
    WITH NORECOVERY;
    GO
    RESTORE DATABASE VeritabaniAdi
    FROM DISK = ‘YedeklemeDosyasiYolu\VeritabaniAdi_fark.bak’
    WITH RECOVERY;
    GO

    — Tam yedekleme, fark yedekleme ve ardından işlem günlüğü yedeklerini geri yükleme
    RESTORE DATABASE VeritabaniAdi
    FROM DISK = ‘YedeklemeDosyasiYolu\VeritabaniAdi.bak’
    WITH NORECOVERY;
    GO
    RESTORE DATABASE VeritabaniAdi
    FROM DISK = ‘YedeklemeDosyasiYolu\VeritabaniAdi_fark.bak’
    WITH NORECOVERY;
    GO
    RESTORE LOG VeritabaniAdi
    FROM DISK = ‘YedeklemeDosyasiYolu\VeritabaniAdi_log1.trn’
    WITH NORECOVERY;
    GO
    RESTORE LOG VeritabaniAdi
    FROM DISK = ‘YedeklemeDosyasiYolu\VeritabaniAdi_log2.trn’
    WITH RECOVERY;
    GO
    WITH REPLACE seçeneği, mevcut veritabanının üzerine yazılmasına izin verir. WITH NORECOVERY seçeneği, veritabanını geri yükleme işlemine hazır tutar, böylece ek yedeklemeler (fark veya işlem günlüğü) uygulanabilir. WITH RECOVERY seçeneği ise geri yükleme işlemini tamamlar ve veritabanını kullanıma açar.
  • En İyi Uygulamalar: Düzenli bir yedekleme planı oluşturmak (tam, fark ve işlem günlüğü yedeklemelerinin bir kombinasyonu) veri kaybını en aza indirir ve geri yükleme sürelerini optimize eder.3 Yedeklemeler, asıl veritabanı sunucusundan farklı bir fiziksel sürücüye veya ağ konumuna alınmalıdır.2 Bu, sunucu arızası veya yerel bir felaket durumunda verilerin korunmasını sağlar. Yedeklemelerin düzenli olarak geri yüklenerek test edilmesi, yedekleme stratejisinin etkinliğini ve geri yükleme sürecinin güvenilirliğini doğrulamak için kritik öneme sahiptir.2 Yedekleme sıkıştırması (compression) kullanmak, yedekleme dosyalarının boyutunu ve yedekleme süresini önemli ölçüde azaltabilir.4 Hassas veriler içeren veritabanları için yedeklemelerin şifrelenmesi ek bir güvenlik katmanı sağlar.4 Kurtarma noktası hedeflerinize (RPO) ve kurtarma süresi hedeflerinize (RTO) uygun bir yedekleme ve geri yükleme stratejisi belirlenmelidir.
  • Veritabanı Bütünlüğü Kontrolleri
    Veritabanı bütünlüğü kontrolleri, veritabanındaki mantıksal ve fiziksel tutarlılığı kontrol ederek veri bozulmalarını tespit etmeye yardımcı olur.1 Bu kontroller, veri kaybına veya sistem kararsızlığına yol açabilecek sorunların erken aşamada belirlenmesini sağlar.
  • Nasıl Yapılır: Veritabanı bütünlüğü kontrolleri için en yaygın kullanılan komut DBCC CHECKDB’dir.2
  • Temel Kullanım: Bir veritabanının bütünlüğünü kontrol etmek için SSMS’de yeni bir sorgu penceresi açın ve aşağıdaki komutu çalıştırın 9:
    SQL
    DBCC CHECKDB (VeritabaniAdi);
    GO
    Burada VeritabaniAdi kontrol etmek istediğiniz veritabanının adını temsil eder. Bu komut, veritabanındaki tüm nesneleri (tablolar, dizinler, sistem tabloları vb.) kontrol eder.
  • Onarım Seçenekleri: DBCC CHECKDB komutu, hatalar tespit edildiğinde bunları onarmak için çeşitli seçenekler sunar 7:
  • REPAIR_ALLOW_DATA_LOSS: Bildirilen tüm hataları onarmaya çalışır. Bu onarımlar veri kaybına neden olabilir ve yalnızca son çare olarak kullanılmalıdır.7
  • REPAIR_REBUILD: Veri kaybı riski olmayan onarımları gerçekleştirir. Bu seçenek genellikle dizinleri yeniden oluşturmayı içerir.7
  • REPAIR_FAST: Yalnızca sözdizimi uyumluluğu için kullanılır ve herhangi bir onarım eylemi gerçekleştirmez.7 Onarım seçeneklerini kullanmak için komut aşağıdaki gibi yazılır:

SQL
DBCC CHECKDB (VeritabaniAdi, REPAIR_REBUILD);
GO
Veya veri kaybına izin veriliyorsa:SQL
DBCC CHECKDB (VeritabaniAdi, REPAIR_ALLOW_DATA_LOSS);
GO
Onarım yapmadan önce mutlaka veritabanının tam yedeğini almanız önerilir.7 Ayrıca, onarım seçeneklerini kullanmak için veritabanının tek kullanıcı modunda olması gerekebilir.7

  • Diğer Seçenekler: DBCC CHECKDB komutu, kontrolün kapsamını ve süresini etkileyen başka seçenekler de sunar 8:
  • NOINDEX: Dizinler dışındaki tüm nesnelerin mantıksal tutarlılığını kontrol eder.
  • PHYSICAL_ONLY: Yalnızca fiziksel tutarlılık kontrollerini gerçekleştirir, bu da daha hızlı bir kontrol sağlar.
  • WITH ESTIMATEONLY: Onarım için gereken tahmini tempdb alanını görüntüler.6
  • WITH TABLOCK: Kontrol sırasında veritabanında paylaşımlı bir kilit alır.6
  • Diğer DBCC Komutları: Belirli kontrol türleri için başka DBCC komutları da mevcuttur:
  • DBCC CHECKTABLE: Belirli bir tablonun bütünlüğünü kontrol eder.10
  • DBCC CHECKALLOC: Veritabanındaki sayfa tahsisini ve kullanımını kontrol eder.11 DBCC CHECKDB bu kontrolleri de içerir.
  • DBCC CHECKCATALOG: Sistem tablolarındaki tutarlılığı kontrol eder.11 DBCC CHECKDB bu kontrolü içermez, bu nedenle haftalık olarak çalıştırılması önerilir.
  • DBCC CHECKCONSTRAINTS: CHECK ve CONSTRAINT ihlallerini kontrol eder.7
  • En İyi Uygulamalar: Veritabanı bütünlüğü kontrolleri düzenli olarak (örneğin, haftalık) çalıştırılmalıdır.2 Bu kontroller, kaynak yoğun işlemler olduğundan yoğun olmayan zamanlarda planlanmalıdır.3 DBCC CHECKDB tarafından bildirilen tüm hatalar dikkatlice incelenmeli ve uygun onarım seçenekleri değerlendirilmelidir. Onarım yapmadan önce her zaman veritabanının yedeğini alın.7 Büyük ve yoğun kullanılan veritabanlarında, daha sık PHYSICAL_ONLY kontrolü yapılıp, daha kapsamlı DBCC CHECKDB kontrolleri yoğun olmayan zamanlarda planlanabilir.
  • Dizin Bakımı
    Dizinler, sorgu performansını önemli ölçüde etkileyen veritabanı nesneleridir. Ancak, zamanla veri ekleme, güncelleme ve silme işlemleri sonucu dizinler parçalanabilir, bu da sorgu performansını olumsuz etkileyebilir.1 Dizinlerin düzenli olarak yeniden düzenlenmesi (reorganize) veya yeniden oluşturulması (rebuild) performansı artırır.
  • Nasıl Yapılır:
  • Dizin Parçalanması: Dizin parçalanması, dizin sayfalarının fiziksel sırası ile dizindeki anahtar değerlerine göre mantıksal sıra arasındaki uyumsuzluktur.14 Yüksek oranda parçalanmış dizinler, sorguların daha fazla disk G/Ç’si yapmasına neden olarak performansı düşürebilir.
  • Dizinleri Yeniden Düzenleme (Reorganize): Bu işlem, dizin yaprak seviyesindeki parçalanmayı giderir ve dizin sayfalarını mantıksal sıraya daha yakın bir fiziksel sıraya getirir.5 Yeniden düzenleme işlemi her zaman çevrimiçi (online) bir işlemdir, yani genellikle sorguları engellemez.
  • SSMS Kullanarak: SSMS’de Object Explorer’da ilgili tablonun altındaki Dizinler klasörünü genişletin, yeniden düzenlemek istediğiniz dizine sağ tıklayın ve Yeniden Düzenle seçeneğini seçin.16
  • T-SQL Kullanarak: T-SQL kullanarak bir dizini yeniden düzenlemek için aşağıdaki komutu kullanabilirsiniz 16:
    SQL
    ALTER INDEX DizinAdi ON TabloAdi REORGANIZE;
    GO
    DizinAdi yeniden düzenlemek istediğiniz dizinin adını, TabloAdi ise dizinin bulunduğu tablonun adını temsil eder.
  • Dizinleri Yeniden Oluşturma (Rebuild): Bu işlem, dizini tamamen yeniden oluşturur, tüm seviyelerdeki parçalanmayı giderir ve dizinin doluluk faktörünü (fill factor) yeniden ayarlar.1 Yeniden oluşturma işlemi çevrimiçi (online) veya çevrimdışı (offline) olarak yapılabilir. Çevrimdışı yeniden oluşturma işlemi, işlem sırasında tabloya erişimi engeller. Çevrimiçi yeniden oluşturma işlemi daha az engelleyici olsa da, işlem sırasında biraz performans ek yükü olabilir.
  • SSMS Kullanarak: SSMS’de Object Explorer’da ilgili tablonun altındaki Dizinler klasörünü genişletin, yeniden oluşturmak istediğiniz dizine sağ tıklayın ve Yeniden Oluştur seçeneğini seçin.16 Açılan Rebuild Indexes iletişim kutusunda, Fill factor gibi seçenekleri ayarlayabilirsiniz.
  • T-SQL Kullanarak: T-SQL kullanarak bir dizini yeniden oluşturmak için aşağıdaki komutu kullanabilirsiniz 16:
    SQL
    ALTER INDEX DizinAdi ON TabloAdi REBUILD WITH (FILLFACTOR = 80, ONLINE = ON);
    GO
    FILLFACTOR dizin sayfalarının ne kadar dolu olacağını belirler (0 ile 100 arasında bir değer). ONLINE = ON seçeneği, yeniden oluşturma işleminin çevrimiçi olarak yapılmasını sağlar. Çevrimdışı bir yeniden oluşturma için ONLINE = OFF seçeneğini kullanabilir veya ONLINE seçeneğini tamamen atlayabilirsiniz.
  • Doluluk Faktörü (Fill Factor): Dizin oluşturulurken veya yeniden oluşturulurken, doluluk faktörü her dizin sayfasında bırakılacak boş alan miktarını belirler.15 Daha düşük bir doluluk faktörü, gelecekteki veri eklemeleri için daha fazla boş alan bırakır, ancak dizinin genel boyutunu artırabilir. Daha yüksek bir doluluk faktörü ise dizin boyutunu küçültür ancak sayfa bölünmelerine (page splits) yol açabilir, bu da performansı olumsuz etkileyebilir.
  • En İyi Uygulamalar: Dizin parçalanma oranı düzenli olarak kontrol edilmelidir. Bu, sys.dm_db_index_physical_stats dinamik yönetim görünümü (DMV) kullanılarak yapılabilir.12 Yüksek parçalanma oranına sahip dizinler yeniden oluşturulmalı, düşük parçalanma oranına sahip dizinler ise yeniden düzenlenebilir.12 Yoğun kullanılan sistemlerde, çevrimiçi dizin yeniden oluşturma tercih edilmelidir.12 Dizin bakımı işlemleri, sistemin en az yüklü olduğu zamanlarda planlanmalıdır.1
  • İstatistikleri Güncelleme
    SQL Server, sorgu yürütme planlarını oluşturmak için veritabanındaki verilerin dağılımı hakkında istatistikleri kullanır.1 Bu istatistikler güncel olmadığında, sorgu iyileştiricisi (query optimizer) en verimli sorgu planını oluşturamayabilir, bu da performans sorunlarına yol açabilir.
  • Nasıl Yapılır: SQL Server, istatistikleri varsayılan olarak otomatik olarak günceller.14 Ancak, büyük veri değişikliklerinden sonra veya sorgu performansında düşüş fark ettiğinizde istatistikleri manuel olarak güncellemek faydalı olabilir.
  • SSMS Kullanarak: SSMS’de Object Explorer’da ilgili tablonun altındaki İstatistikler klasörünü genişletin, güncellemek istediğiniz istatistik nesnesine sağ tıklayın ve Özellikler seçeneğini seçin. Açılan İstatistik Özellikleri iletişim kutusunda, İstatistikleri bu sütunlar için güncelleştir onay kutusunu işaretleyin ve Tamam düğmesine tıklayın.17
  • T-SQL Kullanarak: T-SQL kullanarak istatistikleri güncellemek için UPDATE STATISTICS komutunu veya sp_updatestats saklı yordamını kullanabilirsiniz 17:
  • Belirli bir istatistik nesnesi için:
    SQL
    UPDATE STATISTICS TabloAdi İstatistikAdi;
    GO
    TabloAdi tablonun adını, İstatistikAdi ise güncellemek istediğiniz istatistik nesnesinin adını temsil eder.
  • Bir tablodaki tüm istatistikler için:
    SQL
    UPDATE STATISTICS TabloAdi;
    GO
  • Bir veritabanındaki tüm tablolar için:
    SQL
    EXEC sp_updatestats;
    GO
  • Örnekleme (Sampling): İstatistikler güncellenirken, tüm veriler (FULLSCAN) taranabilir veya verinin bir örneği (SAMPLE) kullanılabilir.12 Büyük tablolarda örnekleme daha hızlı olabilir ancak tam tarama daha doğru istatistikler sağlar. UPDATE STATISTICS komutunda WITH FULLSCAN veya WITH SAMPLE seçenekleri kullanılabilir.
  • En İyi Uygulamalar: Büyük veri değişikliklerinden sonra (örneğin, toplu veri yüklemeleri) istatistikler manuel olarak güncellenmelidir.14 Yoğun olarak sorgulanan tablolardaki istatistiklerin güncel olduğundan emin olunmalıdır. Otomatik istatistik güncelleme ayarları veritabanı özelliklerinden gözden geçirilebilir.
  • İşlem Günlüğü Yönetimi
    İşlem günlüğü, veritabanındaki tüm işlemleri kaydeder ve veri kurtarma için hayati öneme sahiptir.1 Ancak, işlem günlüğünün aşırı büyümesi disk alanı sorunlarına ve performans düşüşüne neden olabilir. İşlem günlüğü yönetimi, veritabanının kurtarma modeline bağlıdır.
  • Nasıl Yapılır:
  • Kurtarma Modeli: MSSQL’de üç kurtarma modeli bulunur: Tam, Toplu Günlük ve Basit.12 Tam kurtarma modeli, tüm işlemleri kaydeder ve nokta kurtarma imkanı sunar. Toplu Günlük kurtarma modeli, toplu işlemler sırasında daha az günlük kaydı tutar. Basit kurtarma modeli ise en az günlük kaydı tutar ve nokta kurtarma imkanı sunmaz. Kurtarma modeli, veritabanı özelliklerinden ayarlanabilir. Tam kurtarma modeli kullanılıyorsa, işlem günlüğünün düzenli olarak yedeklenmesi gerekir.3
  • Günlük Yedekleri: Tam kurtarma modeli kullanılıyorsa, işlem günlüğünün düzenli olarak yedeklenmesi, günlüğün kesilmesini (truncation) ve disk alanının geri kazanılmasını sağlar.3 Günlük yedekleri sık sık (örneğin, saatte bir veya daha sık) alınabilir. Günlük yedeklemesi almak için BACKUP LOG komutu kullanılır (bkz. Bölüm 2.1).
  • Günlük Dosyası Boyutu ve Otomatik Büyüme: İşlem günlüğü dosyasının başlangıç boyutu ve otomatik büyüme ayarları doğru yapılandırılmalıdır.14 Çok küçük bir başlangıç boyutu, sık sık dosya büyümesine ve performans sorunlarına yol açabilir. Otomatik büyüme ayarları, dosyanın gerektiğinde otomatik olarak büyümesini sağlar, ancak bu ayarlar da dikkatli bir şekilde yapılandırılmalıdır. Bu ayarlar, veritabanı özelliklerindeki Dosyalar bölümünden yapılabilir.
  • Günlük Dosyasını Küçültme (Shrink): İşlem günlüğü dosyasını küçültmek bazen gerekli olabilir, ancak bu işlem fiziksel parçalanmaya neden olabileceği için nadiren yapılması önerilir.5 Günlük dosyasını küçültmek için SSMS’de veritabanına sağ tıklayıp Görevler -> Küçült -> Dosyalar seçeneği kullanılabilir veya DBCC SHRINKFILE komutu çalıştırılabilir.
  • En İyi Uygulamalar: Tam kurtarma modeli kullanılıyorsa düzenli işlem günlüğü yedekleri alınmalıdır.3 İşlem günlüğü dosyası için yeterli bir başlangıç boyutu ayarlanmalı ve uygun otomatik büyüme ayarları yapılmalıdır.14 İşlem günlüğü dosyası küçültme işleminden mümkün olduğunca kaçınılmalıdır.12
  • Disk Alanı İzleme ve Temizleme
    Veritabanı dosyaları, yedeklemeler ve işlem günlükleri için yeterli disk alanının sağlanması, MSSQL veritabanlarının performansı ve kararlılığı için kritik öneme sahiptir.14
  • Nasıl Yapılır:
  • Disk Alanı İzleme: Disk alanı kullanımı düzenli olarak izlenmelidir. Bu, işletim sisteminin araçları (örneğin, Disk Yönetimi, Performans İzleyicisi) veya SQL Server’ın kendi araçları (örneğin, sp_spaceused saklı yordamı) kullanılarak yapılabilir.14
  • Obsolete Verilerin Arşivlenmesi ve Temizlenmesi: Artık aktif olarak kullanılmayan ancak saklanması gereken veriler için arşivleme stratejileri geliştirilmelidir.2 Tamamen gereksiz hale gelmiş veriler ise veritabanından silinmelidir. Bu, veritabanı boyutunu küçülterek performansı artırabilir.
  • Veritabanı Dosyalarını Küçültme (Shrink): Veritabanı dosyalarının (hem veri hem de günlük dosyaları) boyutunu küçültmek bazen gerekebilir, ancak bu işlem dizin parçalanmasına neden olabileceği için dikkatli yapılmalıdır.5 Veritabanı dosyalarını küçültmek için SSMS’de veritabanına sağ tıklayıp Görevler -> Küçült -> Veritabanı seçeneği kullanılabilir veya DBCC SHRINKDATABASE komutu çalıştırılabilir.
  • Yedekleme Dosyalarının Yönetimi: Yedekleme dosyaları için bir saklama politikası belirlenmeli ve bu politika doğrultusunda eski yedekleme dosyaları düzenli olarak silinmelidir.12 Bu işlem, disk alanının verimli kullanılmasını sağlar. Bakım planlarında “Bakım Temizleme Görevi” (Maintenance Cleanup Task) kullanılarak eski yedekleme dosyaları otomatik olarak silinebilir.5
  • En İyi Uygulamalar: Disk alanı kullanımı düzenli olarak izlenmeli ve eşikler belirlenerek olası sorunlara karşı proaktif olunmalıdır.14 Eski ve gereksiz veriler için düzenli arşivleme ve temizleme süreçleri uygulanmalıdır.2 Veritabanı dosyalarını küçültme işlemi dikkatli yapılmalı ve mümkünse yoğun olmayan zamanlarda yapılmalıdır.5 Yedekleme dosyaları için net bir saklama politikası oluşturulmalı ve bu politika otomatik olarak uygulanmalıdır.12
  • Bakım Planları
    MSSQL, tekrarlayan bakım görevlerini otomatikleştirmek için bakım planları (maintenance plans) adı verilen bir özellik sunar.3 Bakım planları, belirli bir zamanlamaya göre çalışacak bir dizi bakım görevini tanımlamanıza olanak tanır.
  • Nasıl Yapılır: Bakım planları, SQL Server Management Studio (SSMS) kullanılarak grafiksel bir arayüz üzerinden veya T-SQL komutları ile oluşturulabilir.14
  • SSMS Kullanarak: SSMS’de Object Explorer’da Management düğümünü genişletin, ardından Maintenance Plans düğümüne sağ tıklayın ve Maintenance Plan Wizard seçeneğini seçin.3 Bakım Planı Sihirbazı, adım adım size yol göstererek temel bakım planlarını oluşturmanıza yardımcı olur. Planınıza bir ad verebilir, bir zamanlama belirleyebilir ve gerçekleştirmek istediğiniz bakım görevlerini seçebilirsiniz.
  • Manuel Bakım Planı Oluşturma: SSMS’de Maintenance Plans düğümüne sağ tıklayıp New Maintenance Plan seçeneğini seçerek de manuel olarak bir bakım planı oluşturabilirsiniz.15 Bu, tasarım yüzeyinde bakım görevlerini (örneğin, Veritabanı Yedekleme Görevi, Bütünlük Kontrolü Görevi, Dizin Yeniden Oluşturma Görevi, İstatistikleri Güncelleme Görevi, Geçmişi Temizleme Görevi vb.) sürükleyip bırakarak ve bu görevleri yapılandırarak yapılır.3 Görevlerin hangi sırada çalışacağını da belirleyebilirsiniz.
  • Bakım Planı Görevleri: Bakım planlarına eklenebilecek yaygın görevler şunlardır 3:
  • Veritabanı Yedekleme (Tam, Fark, İşlem Günlüğü)
  • Veritabanı Bütünlüğü Kontrolü (Check Database Integrity)
  • Dizinleri Yeniden Oluşturma (Rebuild Index)
  • Dizinleri Yeniden Düzenleme (Reorganize Index)
  • İstatistikleri Güncelleme (Update Statistics)
  • Bakım Geçmişini Temizleme (Clean Up History)
  • Bakım Temizleme Görevi (Maintenance Cleanup Task) (Eski yedekleme dosyalarını ve bakım raporlarını silme)
  • SQL Server Agent İşlerini Yürütme (Execute SQL Server Agent Job)
  • En İyi Uygulamalar: Bakım planları mantıklı bir şekilde adlandırılmalı ve iş gereksinimlerine uygun düzenli bir zamanlamaya göre ayarlanmalıdır.5 Farklı bakım görevleri için ayrı alt planlar oluşturulabilir ve farklı zamanlarda çalıştırılabilir.15 Bakım planı geçmişi düzenli olarak kontrol edilmeli ve herhangi bir başarısızlık durumunda bildirimler ayarlanmalıdır.14 Yeni oluşturulan veya değiştirilen bakım planları, üretim ortamında kullanıma almadan önce mutlaka bir test ortamında iyice test edilmelidir.3
  • Geçmişi Temizleme
    Bakım planları ve diğer SQL Server işlemleri zamanla önemli miktarda geçmiş verisi biriktirebilir.3 Bu veriler disk alanını doldurabilir ve yönetim araçlarının performansını etkileyebilir. Bu nedenle, düzenli olarak geçmiş verilerinin temizlenmesi önemlidir.
  • Nasıl Yapılır:
  • Bakım Temizleme Görevi (Maintenance Cleanup Task): Bakım planlarında bulunan bu görev, belirli bir süreden eski yedekleme dosyalarını ve bakım planı raporlarını otomatik olarak silmek için yapılandırılabilir.5 Görev yapılandırılırken hangi dosya türlerinin (örneğin, yedekleme dosyaları, metin raporları) ve hangi klasörlerden silineceği belirtilir.
  • SQL Server Agent İş Geçmişini Temizleme: SQL Server Agent, çalıştırdığı işlerin geçmişini tutar. Bu geçmiş, SSMS’de SQL Server Agent -> İş Geçmişi bölümünden görüntülenebilir. Eski iş geçmişi kayıtlarını temizlemek için SQL Server Agent’ta ilgili işe sağ tıklayıp Geçmişi Görüntüle seçeneğini seçebilir ve ardından silmek istediğiniz kayıtları seçerek silebilirsiniz. Bu işlem, düzenli olarak çalıştırılacak bir SQL Server Agent işi ile de otomatikleştirilebilir.
  • Yedekleme ve Geri Yükleme Geçmişini Temizleme: Yedekleme ve geri yükleme işlemleriyle ilgili bilgiler msdb sistem veritabanındaki çeşitli tablolarda (örneğin, backupset, backupmediafamily, restorehistory) saklanır. Bu tablolardaki eski kayıtları silmek için T-SQL komutları kullanılabilir. Örneğin:
    SQL
    USE msdb;
    GO
    EXEC sp_delete_backuphistory @oldest_date = ‘20240415’; — Belirtilen tarihten eski yedekleme geçmişini siler
    GO
    Bu tür işlemler dikkatli yapılmalı ve silinen verilerin geri yüklenmesi gerekebileceği durumlar göz önünde bulundurulmalıdır.
  • En İyi Uygulamalar: Geçmiş verileri için bir saklama politikası belirlenmelidir. Bu politika, iş gereksinimleri ve denetim ihtiyaçlarına göre ayarlanmalıdır. Bakım planlarında düzenli olarak geçmişi temizleme görevi çalıştırılarak eski yedekleme dosyaları ve bakım raporları otomatik olarak silinmelidir.5 SQL Server Agent iş geçmişi de düzenli olarak temizlenmelidir. Yedekleme ve geri yükleme geçmişinin temizlenmesi gerektiğinde, bu işlemler dikkatli bir şekilde ve saklama politikalarına uygun olarak yapılmalıdır.

3. MSSQL Veritabanı Performans İyileştirmeleri

MSSQL veritabanlarının performansı, kullanıcı deneyimini, uygulama yanıt süresini ve genel sistem verimliliğini doğrudan etkiler. Bu bölüm, veritabanı performansını artırmak için uygulanabilecek çeşitli yöntemleri ele alacaktır.

  • Dizin Optimizasyonu
    Doğru dizinleme, sorgu performansını önemli ölçüde artırabilir.2 İndeksler, veritabanının belirli sütunlardaki verilere hızlı bir şekilde erişmesini sağlayarak tam tablo taramalarını önler. Ancak, yanlış veya aşırı indeksleme performansı olumsuz etkileyebilir.
  • Dizin Türleri: MSSQL, çeşitli dizin türleri sunar:
  • Kümelenmiş Dizin (Clustered Index): Bir tabloda verilerin fiziksel olarak nasıl sıralanacağını belirler. Her tabloda yalnızca bir kümelenmiş dizin olabilir ve genellikle birincil anahtar (primary key) üzerinde oluşturulur.25 Kümelenmiş dizin, verilerin kendisini içerir.
  • Kümelenmemiş Dizin (Non-clustered Index): Tablodan ayrı bir yapıdır ve dizin anahtar değerlerini veri satırlarının konumlarına işaret eden göstergelerle birlikte saklar.25 Bir tabloda birden fazla kümelenmemiş dizin olabilir.
  • Sütun Depolama Dizini (Columnstore Index): Büyük veri kümeleri üzerinde analitik sorgular için optimize edilmiştir.18 Verileri satır yerine sütun bazında sıkıştırarak saklar, bu da G/Ç işlemlerini azaltır ve sorgu performansını artırır.
  • Tam Metin Dizini (Full-text Index): Metin tabanlı verilerde (örneğin, varchar(max), nvarchar(max), text, ntext, xml) kelime tabanlı arama yapmak için kullanılır.25
  • Filtrelenmiş Dizin (Filtered Index): Tablodaki verilerin yalnızca bir alt kümesi üzerinde oluşturulur.27 Bu, belirli sorguların performansını önemli ölçüde iyileştirebilir.
  • XML Dizini (XML Index): XML veri türündeki sütunlar üzerinde sorgu performansını artırmak için kullanılır.16
  • Mekansal Dizin (Spatial Index): Mekansal veri türündeki sütunlar (örneğin, geometry, geography) üzerinde mekansal sorguların performansını artırmak için kullanılır.16
  • En İyi Uygulamalar: Sık kullanılan sorgulardaki JOIN, WHERE ve ORDER BY clause’larında kullanılan sütunlar indekslenmelidir.25 Kümelenmiş dizin anahtarları mümkün olduğunca kısa tutulmalıdır.30 Mümkün olduğunca benzersiz (unique) dizinler tercih edilmelidir.30 Bileşik dizinlerde (birden fazla sütun içeren dizinler) sütun sırası, sorgu desenlerine göre belirlenmelidir; en sık kullanılan ve en seçici olan sütunlar başta olmalıdır.30 Çok sık veri değişikliği olan tablolarda aşırı indekslemeden kaçınılmalıdır, çünkü her değişiklikte indekslerin de güncellenmesi gerekir.25 Kullanılmayan veya az kullanılan dizinler tespit edilip kaldırılmalıdır. Bu, sys.dm_db_index_usage_stats dinamik yönetim görünümü (DMV) kullanılarak belirlenebilir.25 Dizin parçalanma oranı düzenli olarak kontrol edilmeli ve yüksek oranda parçalanmış dizinler yeniden oluşturulmalı veya yeniden düzenlenmelidir.27 Örtüşen (aynı veya benzer sütunları içeren) ve gereksiz (hiç kullanılmayan) dizinlerden kaçınılmalıdır.33
  • Sorgu Optimizasyonu
    Verimli yazılmış SQL sorguları, veritabanı performansını doğrudan etkiler.2 Kötü yazılmış sorgular gereksiz kaynak tüketimine ve yavaş yanıt sürelerine yol açabilir.
  • En İyi Uygulamalar: Gerekli olmayan sütunları seçmekten kaçınılmalı, SELECT * yerine yalnızca ihtiyaç duyulan sütunlar belirtilmelidir.25 WHERE clause’ı ile mümkün olduğunca erken filtreleme yapılmalıdır, böylece sonraki işlemler daha az veri üzerinde çalışır.25 Doğru JOIN türleri kullanılmalıdır; INNER JOIN genellikle OUTER JOIN’dan daha hızlıdır.25 GROUP BY ve HAVING clause’ları verimli kullanılmalıdır; WHERE clause’ı ile filtreleme yapıldıktan sonra HAVING ile toplu sonuçlar filtrelenmelidir.25 Sonuç kümeleri TOP veya FETCH-OFFSET ile sınırlandırılmalıdır, özellikle büyük sonuç kümeleri döndüren sorgularda.25 Alt sorgular (subqueries) dikkatli kullanılmalı ve mümkünse JOIN’ler tercih edilmelidir, özellikle bağımsız alt sorgular yerine ilişkili alt sorgular daha performanslı olabilir.26 Implicit veri türü dönüşümlerinden kaçınılmalı, karşılaştırılan sütunların veri tipleri uyumlu olmalıdır; gerekirse CAST veya CONVERT fonksiyonları kullanılmalıdır.25 Sorgu yürütme planları analiz edilerek performans darboğazları tespit edilmeli ve iyileştirmeler yapılmalıdır.2 Saklı yordamlar (stored procedures) kullanılarak sorguların derlenme ve yürütülme süresi azaltılabilir, kod tekrarı önlenebilir ve güvenlik artırılabilir.25 Geçici tablolar (temporary tables) veya tablo değişkenleri (table variables) kullanılarak karmaşık sorgular basitleştirilebilir ve ara sonuçlar saklanabilir.25 Eğer yinelenen satırlar sorun değilse, UNION yerine UNION ALL tercih edilmelidir çünkü UNION sonuçları sıralar ve yinelenenleri kaldırır.32 HAVING clause’ı yalnızca toplu sonuçları filtrelemek için kullanılmalı, WHERE clause’ı ile aynı amaçla kullanılmamalıdır.25 Varlık kontrolü için alt sorgularda COUNT(*) yerine EXISTS operatörü kullanılmalıdır çünkü EXISTS ilk eşleşmeyi bulduğunda aramayı durdurur.26 LIKE operatöründe başa wildcard (%) eklemekten kaçınılmalıdır çünkü bu, indeks kullanımını engelleyebilir.25 Sorgularda her zaman şema adı belirtilmelidir (örneğin, dbo.TabloAdi).27 SET NOCOUNT ON ifadesi kullanılarak etkilenen satır sayısının döndürülmesi engellenebilir ve ağ trafiği azaltılabilir.27 Veritabanı işlemleri mümkün olduğunca kısa tutulmalıdır.27
  • SQL Server Yapılandırması
    SQL Server’ın doğru yapılandırılması, donanım kaynaklarının etkin kullanımını sağlayarak performansı önemli ölçüde artırabilir.2
  • Temel Yapılandırma Ayarları:
  • Maksimum Sunucu Belleği (Maximum Server Memory): SQL Server’ın kullanabileceği maksimum bellek miktarı ayarlanmalıdır. Bu değer, sunucudaki toplam fiziksel belleğin bir kısmını (işletim sistemi ve diğer uygulamalar için yeterli bellek bırakılarak) temsil etmelidir.14 Bu ayar, SQL Server Management Studio’da sunucu özelliklerindeki Bellek bölümünden yapılabilir.
  • En Fazla Paralellik Derecesi (Max Degree of Parallelism – MAXDOP): Paralel sorgu yürütme için kullanılacak işlemci çekirdeği sayısını belirler.19 Çok yüksek bir değer, aşırı iş parçacığına ve performans düşüşüne neden olabilir. Genellikle, fiziksel çekirdek sayısının yarısı veya daha azı önerilir. Bu ayar, sunucu özelliklerindeki Gelişmiş bölümünden yapılandırılabilir.
  • Paralellik Eşiği Maliyeti (Cost Threshold of Parallelism): Bir sorgunun paralel yürütülmeye başlaması için gereken minimum maliyet değeridir.19 Varsayılan değer genellikle 5’tir, ancak bazı iş yükleri için bu değerin artırılması (örneğin, 50) faydalı olabilir. Bu ayar da sunucu özelliklerindeki Gelişmiş bölümünden yapılandırılabilir.
  • Tempdb Yapılandırması: tempdb sistem veritabanı, geçici nesneler ve ara sonuçlar için kullanılır. Performansı artırmak için, tempdb için uygun sayıda veri dosyası oluşturulmalı (genellikle işlemci çekirdek sayısına kadar) ve bu dosyaların başlangıç boyutu ve otomatik büyüme ayarları doğru yapılmalıdır. tempdb dosyalarının hızlı depolama birimlerinde (SSD) bulundurulması önerilir.18 Bu ayarlar, SSMS’de veritabanı özelliklerindeki Dosyalar bölümünden yapılandırılabilir.
  • Veritabanı Dosyalarının Yapılandırması: Kullanıcı veritabanlarının veri ve işlem günlüğü dosyaları için uygun başlangıç boyutu ve otomatik büyüme ayarları yapılmalıdır.19 Mümkünse, veri ve işlem günlüğü dosyaları farklı fiziksel sürücülerde veya LUN’larda bulundurulmalıdır.19 Bu ayarlar, veritabanı özelliklerindeki Dosyalar bölümünden yapılandırılabilir.
  • Anında Dosya Başlatma (Instant File Initialization): Bu ayar etkinleştirildiğinde, veritabanı dosyaları büyütülürken diskte sıfırlama işlemi atlanır, bu da dosya büyüme süresini önemli ölçüde kısaltır.19 Bu özelliği etkinleştirmek için, SQL Server hizmet hesabına “Perform volume maintenance tasks” yetkisi verilmelidir. Bu yetki, Yerel Güvenlik İlkesi aracılığıyla atanabilir.
  • Sorgu İyileştiricisi Düzeltmeleri (Query Optimizer Hotfixes): SQL Server’ın sorgu iyileştiricisine yönelik düzeltmeleri etkinleştirmek için veritabanı düzeyinde aşağıdaki komut çalıştırılabilir 19:
    SQL
    ALTER DATABASE SCOPED CONFIGURATION SET QUERY_OPTIMIZER_HOTFIXES = ON;
    GO
  • Uyumluluk Seviyesi (Compatibility Level): Veritabanının uyumluluk seviyesi, SQL Server’ın belirli özelliklerini ve davranışlarını etkiler.19 Genellikle, en son uyumluluk seviyesinin kullanılması önerilir, ancak bazen geriye dönük uyumluluk gerekebilir. Bu ayar, veritabanı özelliklerindeki Seçenekler bölümünden yapılandırılabilir.
  • En İyi Uygulamalar: Donanım gereksinimleri iş yüküne ve performans beklentilerine göre planlanmalıdır.27 SQL Server kurulumu sırasında performans dikkate alınmalıdır.27 Veritabanı yapılandırması performans hedeflerine uygun olmalıdır.27 Disk bölümü hizalaması (disk partition alignment) doğru yapılmalıdır.20 Veri, tempdb ve işlem günlüğü dosyaları mümkünse ayrı LUN’larda bulundurulmalıdır.19
  • Veritabanı Tasarımı
    İyi bir veritabanı tasarımı, performans, ölçeklenebilirlik ve sürdürülebilirlik açısından temel oluşturur.27
  • En İyi Uygulamalar: Uygun veri tipleri seçilmelidir; gereksiz yere büyük veri tiplerinden kaçınılmalıdır.25 Tablolar normalize edilmeli, veri tekrarı en aza indirilmelidir.27 Birincil ve yabancı anahtarlar (primary and foreign keys) doğru şekilde tanımlanmalıdır.1 Sorgu performansını artırmak için uygun indeksler oluşturulmalıdır.27 Büyük tablolar gerektiğinde bölümlendirilebilir (partitioning).29 Saklı yordamlar ve görünümler (views) kullanılarak karmaşık sorgular basitleştirilebilir.27 İlişkisel bütünlük (referential integrity) sağlanmalıdır.1 Sürrogate anahtarlar (otomatik artan ID’ler) doğal anahtarlara (natural keys) göre genellikle daha iyi bir seçenektir.29 NULL değerlerin kullanımı dikkatli planlanmalıdır; sabit uzunluklu alanlarda NULL’dan kaçınılmalıdır.38
  • Performans İzleme ve Sorun Giderme
    Veritabanı performansını sürekli olarak izlemek ve olası sorunları erken tespit etmek, sistemin sağlıklı ve verimli çalışmasını sağlamak için kritik öneme sahiptir.2
  • İzleme Araçları: MSSQL, performans izleme ve sorun giderme için çeşitli araçlar sunar:
  • SQL Server Management Studio (SSMS): Activity Monitor 19, Performance Dashboard 23, Execution Plan 23, Query Store.13
  • Windows Performance Monitor (PerfMon):.14
  • Extended Events:.23
  • Dynamic Management Views (DMVs) ve Dynamic Management Functions (DMFs):.11
  • DBCC Komutları:.6
  • Üçüncü Taraf İzleme Araçları:.14
  • Performans Sorunlarını Giderme: CPU, bellek, disk G/Ç, bekleme istatistikleri ve engelleme gibi temel performans metrikleri izlenmelidir.14 İlgili sayaçlar Performance Monitor’da ve DMV’lerde bulunabilir.
  • En İyi Uygulamalar: Performans sorunlarını gidermek için sistematik bir yaklaşım benimsenmeli ve normal çalışma koşullarında performans temelleri oluşturulmalıdır.19 Performans değişikliklerini izlemek için sürekli veri toplanmalı ve uygulama katmanı da kontrol edilmelidir.40 SQL Server hata günlükleri düzenli olarak incelenmeli ve gerekirse sunucu ve işletim sistemi düzeyinde de izleme yapılmalıdır.14
  • Donanım Hususları
    SQL Server’ın performansı, altında yatan donanım kaynaklarından önemli ölçüde etkilenir.2 Yetersiz veya yanlış yapılandırılmış donanım, performans sorunlarına yol açabilir.
  • Temel Donanım Bileşenleri: İşlemci (CPU) 14, Bellek (RAM) 14, Depolama (Storage) 14, Ağ (Network).14
  • En İyi Uygulamalar: Donanım gereksinimleri iş yüküne göre belirlenmeli, SSD’ler tercih edilmeli, RAID 10 kullanılmalı, veri ve log dosyaları ayrı depolama birimlerinde olmalı, yeterli RAM sağlanmalı ve 64-bit mimari kullanılmalıdır.19

4. Sonuç

MSSQL veritabanlarının sürekliliği ve performansı, düzenli bakım ve bilinçli performans iyileştirme stratejileri ile sağlanır. Bu rapor, temel bakım görevlerinden ileri düzey optimizasyon tekniklerine kadar geniş bir yelpazede bilgi sunarak, veritabanı yöneticilerine ve IT profesyonellerine rehberlik etmeyi amaçlamaktadır. Düzenli yedeklemeler, bütünlük kontrolleri, dizin ve istatistik yönetimi gibi temel bakım görevleri, veri kaybını önler ve sistemin kararlılığını sağlar. Performans optimizasyonu ise doğru dizinleme, verimli sorgu yazma, uygun sunucu yapılandırması ve iyi bir veritabanı tasarımı ile elde edilir. Sürekli performans izleme ve sorun giderme, olası darboğazların erken tespit edilmesine ve giderilmesine olanak tanır. Son olarak, uygun donanım seçimi ve yapılandırması, tüm bu çabaların temelini oluşturur. Veritabanı yöneticileri ve IT profesyonelleri, bu kılavuzda sunulan en iyi uygulamaları benimseyerek MSSQL veritabanlarının sağlıklı, güvenilir ve yüksek performanslı bir şekilde çalışmasını sağlayabilirler.

Key Tablolar:

  1. Bakım Planı Görevleri ve Önerilen Sıklığı
Görev AdıÖnerilen SıklıkNotlar
Tam YedeklemeHaftalıkYoğun olmayan zamanlarda çalıştırılmalı
Fark YedeklemeGünlükTam yedeklemeden sonra daha sık aralıklarla alınabilir
İşlem Günlüğü YedeğiSaatte birTam kurtarma modelinde
Veritabanı Bütünlüğü KontrolüHaftalıkYoğun olmayan zamanlarda çalıştırılmalı
Dizinleri Yeniden OluşturmaHaftalık/AylıkYüksek parçalanma oranına sahip dizinler için yoğun olmayan zamanlarda
Dizinleri Yeniden DüzenlemeGünlük/HaftalıkDüşük parçalanma oranına sahip dizinler için yoğun olmayan zamanlarda
İstatistikleri GüncellemeGünlük/HaftalıkBüyük veri değişikliklerinden sonra manuel olarak çalıştırılabilir
Geçmişi TemizlemeGünlük
Bakım Temizleme GöreviGünlükEski yedekleme dosyalarını ve bakım raporlarını siler
  1. Performans İzleme Araçları ve Temel Kullanım Alanları
Araç AdıTemel Kullanım AlanlarıAvantajlarıDezavantajları
Activity MonitorAnlık işlem takibi, kaynak kullanımı, bekleyen istekler, G/Ç etkinliğiKullanımı kolay, anlık görünüm sağlarTek bir sunucu örneğini izleyebilir
Performance MonitorCPU, bellek, disk, ağ gibi sistem kaynaklarının kullanımı, SQL Server özel sayaçlarıDetaylı sistem ve SQL Server metrikleri sunar, uzun süreli veri toplama imkanıYapılandırması ve yorumlanması karmaşık olabilir
Query StoreSorgu performans geçmişi, yürütme planları, performans regresyonlarını tespit etme, plan zorlamaSorgu performansı hakkında detaylı geçmiş bilgi sağlar, plan değişikliklerini izleme ve yönetme imkanı sunarVeritabanı düzeyinde etkindir, sunucu genelindeki performansı izlemez
Extended EventsYapılandırılabilir olay izleme, düşük performans etkisiHafif, esnek ve özelleştirilebilir, detaylı olay takibi sağlarYapılandırması biraz daha teknik bilgi gerektirebilir
Dynamic Management ViewsSunucu durumu, performans metrikleri, aktif işlemler, bekleyen istekler hakkında bilgi almaGerçek zamanlı ve detaylı bilgi sağlar, SQL sorguları ile erişilebilirAnlık bilgi sağlar, geçmiş verisi tutmaz
DBCC KomutlarıVeritabanı tutarlılığını kontrol etme, performans istatistiklerini görüntülemeÇeşitli bakım ve teşhis görevleri için kullanılırKaynak yoğun olabilir, bazı komutlar veritabanını kilitleyebilir

Yorum bırakın

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

Scroll to Top