Veritabanımızda şu anda yalnızca 8 GB veri içeren (tablo satırları, dizinler, tam metin kataloğu) bir PRIMARY FileGroup bulunmaktadır.
Bunu ikincil veri dosyalarına bölmenin zamanı ne zaman? Dikkat etmem gereken bazı kriterler nelerdir?
Veritabanımızda şu anda yalnızca 8 GB veri içeren (tablo satırları, dizinler, tam metin kataloğu) bir PRIMARY FileGroup bulunmaktadır.
Bunu ikincil veri dosyalarına bölmenin zamanı ne zaman? Dikkat etmem gereken bazı kriterler nelerdir?
Yanıtlar:
Bu sorunun iki bölümü vardır: ne zaman yeni bir FILEGROUP eklenir ve ne zaman bir dosya grubuna yeni bir DOSYA eklenir. İlk önce teoriyi konuşalım:
Mark, performansın birincil nedeni hakkında haklı.
İkincil neden felaket kurtarma. SQL Server 2005 ve daha yenisi ile dosya grubu geri yüklemeleri yapabilirsiniz. Olağanüstü durum geldiğinde, önce yalnızca birincil dosya grubunuzu geri yükleyebilir ve sorgular için veritabanını kısmen çevrimiçi hale getirebilirsiniz. Diğer dosya gruplarını geri yüklerken kullanıcılar sorgu çalıştırabilir. Bu, hemen gerekmeyebilecek büyük miktarda geçmiş verisi olan veritabanları veya erişim için geçmiş verilere ihtiyaç duymadan mevcut tablolara veri yüklemesi gereken veri ambarları için kullanışlıdır.
Diğer bir neden, veri gruplarının okuma / yazma profilidir. Sürekli olarak yazılan bazı verileriniz ve yoğun okuma etkinliği alan başka verileriniz varsa, bu ihtiyaçları karşılamak için farklı depolama türleri oluşturabilirsiniz. Ağır yazma şeylerini baskın 10'a koyabilir ve okuma eğilimli şeyleri daha ucuz baskın 5'e bırakabilirsiniz.
Şimdi dosyaları dosya gruplarına karşı konuşalım. Nesneleri SQL Server'a yerleştirdiğinizde, bunları dosya grubu düzeyinde yerleştirmeniz gerekir. Dosya grubuna bir tablo veya dizin indeksleyebilirsiniz, ancak belirli bir dosyayı seçemezsiniz. Şimdiye kadar tartıştığımız her şey ne zaman bir dosya grubu ekleyeceğimizle ilgiliydi - ama ne zaman dosya ekleyeceksiniz?
Depolama alanı tasarlıyorsanız ve 80 sabit sürücünüz varsa, onu bölmenin birkaç yolu vardır:
Farklı depolama altsistemlerinin farklı performans profilleri vardır. 12-16 sürücü dizileriyle en iyi performansı gösteren bazı SAN'larla çalıştım ve bundan daha büyük bir şey performans iyileştirmesi yapmadı. Diğer bir örnek, çok yollu SAN'lardır: sunucunuzu depolama alanınıza bağlayan birkaç HBA'nız varsa ve çok yollu yazılımınız gerçek etkin / etkin değilse, yükü dağıtmak için her yol için bir diziye ihtiyacınız olabilir. Dört yol, dört havuz sürücüsü, bu tür sürücülerde daha iyi performans elde edecektir.
Bu durumlarda, dört farklı dizi, Windows altında dört farklı sürücü (bağlama noktaları kullanmazsanız ve hatta farklı klasörler kullanmazsanız) ile sonuçlanır ve SQL Server'da dört ayrı dosyaya ihtiyacınız vardır. Bu ayrı dosyalar aynı dosya grubunda olabilir.
Birincil neden performanstır. Birincil dosya grubu disk sürücünüzde IOPS kapasitesiniz bittiğinde, depolama yapılandırmasına bağlı olarak IOPS'u birden çok diske / LUN'a bölmek için ikinci bir dosya grubuna genişletmeniz gerekir.
EDIT: Brad Wilson SSD'ler hakkında iyi bir yorum yaptı. Bileşik SSD / SATA / FC depolama sistemi kullanıyorsanız, farklı depolama türlerinde farklı dosya gruplarına sahip olmak isteyebilirsiniz. Daha sonra aşırı IOPS gereksinim tablolarınızı SSD dosya grubuna koyabilirsiniz, geçmiş / istatistik tabloları ucuz SATA dosya gruplarında saklanabilir.
Ben de bu soruya bir kurtarılabilirlik / veri kullanılabilirlik yönü olduğunu işaret ediyorum. Birden çok dosya grubu kullanarak ve kullanıcı tanımlı nesneleri birincil dosya grubuna yerleştirmeyerek, çevrimiçi geri yüklemeleri etkinleştirme konusunda daha fazla esnekliğe sahip olursunuz. bu, dosya grubu düzeyinde parça parça geri yüklemeye izin verir.
Çevrimiçi geri yükleme, 2005'ten sonra sql sunucusunun Enterprise ve Developer sürümlerinde kullanılabilir
Akla gelen başka bir düşünce, salt okunur statik referans verilerini işlemsel verilerden ayırmaktır. Daha büyük veritabanları için bu, yedekleme yapmak için gereken zaman ve / veya alan miktarını azaltabilir.