Gerçekten olduğunu biliyoruz üç parçalanma tür bir DBA olarak endişe gerektiğini:
Dizin Kümelenmiş dizin (tablo) parçalanması dahil SQL veri dosyalarında parçalanma. DBCC SHOWCONTIG (SQL 2000'de) veya sys.dm_ db_ index_ fiziksel_ istatistiklerini (2005+) kullanarak tanımlayın.
SQL Log dosyalarının içinde VLF Parçalanması . SQL günlük dosyalarınızın her birinde kaç VLF bulunduğunu görmek için DBCC LOGINFO'yu çalıştırın.
Sabit sürücüdeki veritabanı dosyalarının fiziksel dosya parçalanması. Windows'taki "Disk Birleştiricisi" yardımcı programını kullanarak bunu tanılayın. ( bu mükemmel blog gönderisinden esinlenerek )
Dizin parçalanmasına çok dikkat edilir ( Paul Randall'ın bu mükemmel Serverfault cevabına bakın ), bu yüzden sorumun odak noktası değil.
Veritabanı başlangıçta makul bir beklenen veri dosyası ve günlük boyutu planlayarak oluşturulduğunda fiziksel parçalanmayı (ve VLF parçalanmasını) önleyebileceğimi biliyorum , çünkü bu parçalanma çoğunlukla sık sık büyür ve küçülür, ancak nasıl düzeltileceğim hakkında bazı sorularım var belirlendikten sonra fiziksel parçalanma:
Her şeyden önce, fiziksel parçalanma bir Kurumsal SAN'da bile geçerli mi? Bir SAN sürücüsünde Windows Birleştiricisi'ni kullanabilir miyim / kullanmalıyım mı yoksa SAN ekibi dahili birleştirme yardımcı programları mı kullanmalı? Windows sürücüsünden aldığım parçalanma analizi SAN sürücüsünde çalıştırıldığında daha doğru mu?
SQL performansı üzerinde fiziksel parçalanma ne kadar büyük? (Önceki sorunun sonucunu bekleyen dahili bir sürücü dizisi olduğunu varsayalım.) Dahili dizin parçalanmasından daha BÜYÜK bir anlaşma mı? Yoksa aynı türden bir sorun mu var (sürücü sıralı okumalar yerine rastgele okumalar yapmak zorunda)
Disk fiziksel olarak parçalanmışsa, birleştirme (veya yeniden oluşturma) dizinleri zaman kaybı mıdır? Diğerini ele almadan önce birini düzeltmem gerekiyor mu?
Bir üretim SQL kutusundaki fiziksel dosya parçalanmasını düzeltmenin en iyi yolu nedir? SQL hizmetlerini kapatabildiğimi ve Windows Defrag'ı çalıştırabileceğimi biliyorum, ama aynı zamanda tam bir yedekleme yaptığınız, veritabanını bıraktığınız, ardından yedeklemeden boş bir sürücüye geri yüklediğiniz bir tekniği duydum. Bu ikinci teknik tavsiye edilir mi? Böyle bir yedekten geri yükleme mu da iç endeks parçalanması ortadan kaldırarak sıfırdan inşa endeksler? Yoksa sayfa sırasını yedeklemenin çekildiği zamana mı döndürür? (Önemliyse, Quest Lightspeed yedeklerini sıkıştırma ile kullanıyoruz.)
GÜNCELLEME : SAN sürücülerinin birleştirilip birleştirilmeyeceği (NO) ve fiziksel olarak bölünmüş sürücülerde (YES) dizin birleştirmenin hala faydalı olup olmadığı konusunda şimdiye kadar iyi yanıtlar.
Başka bir kişi gerçekten birleştirme için en iyi yöntemleri tartmak ister misiniz? Veya 500GB gibi büyük bir parçalı sürücüyü birleştirmek için ne kadar bekleyeceğinizi tahmin edersiniz? Alakalı, çünkü SQL sunucumun kapanma zamanı!
Ayrıca, herhangi birinin fiziksel parçalamayı düzelterek yaptığınız SQL performans iyileştirmeleri hakkında herhangi bir anekdot bilgisi varsa, bu da harika olurdu. Mike'ın blog gönderisi sorunun çözülmesinden bahsediyor, ancak ne tür bir iyileştirme yaptığı konusunda net değil.