Kurumsal IT-Teknoloji Eğitimleri-Eğitim Takvimi

Veritabanı Fiziksel Yapı Tasarımı

Data ve Log Dosyası Konumlandırma

Data ve log dosyaları ayrı diskler üzerine yerleştirilmelidir (uçtan uca tüm fiziksel seviyelerde de ayrı olarak konuşlandırılmaları tercih sebebidir). Data ve log dosyalarının aynı sürücüler üzerinde konumlandırılması, ilgili sürücü üzerinde darboğaza yol açabilir ve düşük I/O performansı gibi sonuçlar doğurur. Dosyaları ayrı sürücüler üzerine konumlandırmak data ve log dosyalarına dair I/O işlemlerinin aynı anda ve ayrılmış bir şekilde sürmesine olanak sağlar. Best practice’lere göre yeni bir database yaratılırken, ayrı sürücüler tanımlanmalı ve data ile log dosyaları bunların üzerine konumlandırılmalıdır. Mevcut database’lerin dosyalarının taşınması için ise database mutlaka offline moda çekilmelidir.

İlerdeki performans, kurtarma ve depolama hedefleri için ayrıca dosya ve filegroup’ları nasıl planlanacağı kararlaştırılmalıdır. Data file dağılımından sağlanan performans iki noktada özetlenebilir:

  • Düşük Darboğaz Oluşumu: Varsayalım ki görece olarak insert ve update aktivitesi yüksek olan bir tablo var; bu tablo ve ilgili verisi sadece bu tablonun saklanması için oluşturulmuş bir file group ve bu file group’a ait bir data file üzerinde saklanabilir ve bu dosya ayrı bir disk partisyonunda konumlandırılabilir. Bu işlem, bu tablonun disk I/O yükünü diğer tablolardan ayırır, buda sonuç olarak depolama kaynaklarında oluşan yoğunluğu azaltarak, darboğaz oluşma ihtimalini düşürür.

  • Orantılı Veri Depolama: File ve Filegroup kurgusunun doğru bir strateji ile uygulanması veri depolamasında orantılılık hedefine ulaşmayı sağlar. Örneğin, bir filegroup üzerinde 2 tane file olduğunu düşünelim, SQL Server her ikisine birden yazacaktır; dosyalara veriyi dağıtarak yazdığı için dosyaların bulundukları disklerin kaynaklarından aynı anda faydalanacak ve veri yazma sürelerinde iyileşme olacaktır.

Veriyi birden fazla data ve log dosyalarına dağıtarak bunları ayrı disklere yerleştirmenin önemli bir faydası daha bulunmaktadır. Eğer ki, tüm dosyaların aynı fiziksel diskte bulundukları sırada diskin arızalandığı bir senaryo düşünelim; tüm verileri yedekten kurtarmak gerekecektir. Bu durum kurtarma süresini uzatacak ve veri kaybı olasılığını ortaya çıkaracaktır. Dosyaları ayrı disklere konumlandırdığımız bir ortamda genel olarak kurtarma operasyonları daha kısa ve başarımı yüksek bir şekilde tamamlanabilir.

TempDB Konfigurasyonu ve Dosya Konumlandırması

Dosya konumlandırması sırasında sistem veritabanları da ayrıca planlanmalıdır. Sistem veritabanlarını ayrı bir diskte konumlamak faydalı olacaktır. Ancak, tempdb sistem veritabanı daha detaylı ele alınmalıdır çünkü pek çok farklı fonksiyon ve işlem tarafından kullanılmaktadır. Örneğin re-index'leme, cursor'lar, sorting ve temp tablolar vb. işlemler tempdb ve dolayısıyla data dosyalarının bulunduğu depolama sistemlerinin I/O kaynaklarında yüksek miktarlarda yük oluşturmaktadır. Eğer tempdb düzgün bir şekilde konfigüre edilirse, önemli bir performans kazancı sağlanır. Çok hızlı ve beklenmedik durumlarda gerçekleşen tempdb boyutundaki ani artışlar sırasında ortaya çıkacak problemler önlenmiş olur. Tempdb dosya konumlandırmasını yaparken aşağıdaki kurallar göz önünde bulundurulmalıdır:

  • Tempdb data ve log dosyaları hızlı bir IO sistemine sahip disklerde konumlandırılmalıdır.

  • Tempdb log dosyası kendisine dedike olan ve tüm I/0 kaynakları onun için rezerve edilmiş diske konumlandırılmalıdır.

  • Tempdb data dosyası her bir işlemci çekirdeğine denk gelecek şekilde parçalara ayrılmalıdır (Maksimum 8 data dosyası olacak şekilde).

  • Tempdb data file başlangıç boyutları ve autogrowth konfigurasyonları eşit ve sıklıkla otomatik büyümeyi tetiklemeyecek şekilde olmalıdır.

 

Yedek ve Data Dosyası Konumlandırma

Yedek dosyaları, data dosyalarından ayrı disklere konumlandırılmalıdırlar. Yedek ve data dosyalarının aynı diske konumlandırıldığı bir ortamda bu diskin bozulması hem yedek hem de data dosyalarının erişilemez hale gelmesine yol açacağından operasyonlarımızın sürekliliğini tehlikeye atan bir durum oluşturmaktadır. Performans açısından da yedek ve data dosyalarını ayrı disklere koymak depolama ünitelerinin I/O kaynaklarını daha verimli kullanılmasını sağlayacak ve hem yedek hem de operasyonların performansında iyileşmeler olacaktır.