Ada dua bagian untuk pertanyaan ini: kapan menambahkan FILEGROUP baru, dan kapan menambahkan FILE baru di filegroup. Pertama mari kita bicara teori:
Mark benar tentang alasan utama kinerja.
Alasan kedua adalah pemulihan bencana. Dengan SQL Server 2005 dan yang lebih baru, Anda dapat melakukan pemulihan filegroup. Ketika bencana terjadi, Anda dapat memulihkan filegroup utama Anda terlebih dahulu dan membawa database secara online untuk permintaan. Pengguna dapat menjalankan kueri saat Anda memulihkan filegroup lainnya. Ini berguna untuk basis data dengan sejumlah besar data historis yang mungkin tidak diperlukan segera, atau gudang data yang perlu memuat data ke dalam tabel saat ini tanpa memerlukan data historis untuk akses.
Alasan lain adalah profil baca / tulis dari kelompok data. Jika Anda memiliki beberapa data yang terus-menerus ditulis, dan data lain yang mendapat aktivitas baca berat, Anda dapat membangun berbagai jenis penyimpanan untuk mengakomodasi kebutuhan tersebut. Anda bisa meletakkan barang-barang berat di raid 10, dan meninggalkan hal-hal yang bias baca di raid yang lebih murah 5.
Sekarang, mari kita bicara file versus filegroup. Ketika Anda menempatkan objek di SQL Server, Anda harus menempatkannya di tingkat grup berkas. Anda bisa mendaratkan tabel atau indeks di filegroup, tetapi Anda tidak bisa memilih file tertentu. Jadi semua yang telah kita diskusikan sejauh ini tentang kapan menambahkan filegroup - tetapi kapan Anda menambahkan file?
Jika Anda mendesain penyimpanan, dan Anda memiliki 80 hard drive, ada beberapa cara untuk memecahnya:
- Satu kumpulan 80 drive
- Dua kolam 40 drive
- Empat kumpulan 20 drive, dll ...
Subsistem penyimpanan yang berbeda memiliki profil kinerja yang berbeda. Saya telah bekerja dengan beberapa SAN yang berkinerja terbaik dengan array 12-16 drive, dan apa pun yang lebih besar dari itu tidak memiliki peningkatan kinerja. Contoh lain adalah SAN dengan multipathing: jika Anda memiliki beberapa HBA yang menghubungkan server Anda ke penyimpanan Anda, dan jika perangkat lunak multipathing Anda tidak benar-benar aktif / aktif, maka Anda mungkin perlu satu larik per jalur untuk mendistribusikan beban. Empat jalur, empat kumpulan drive akan mendapatkan kinerja yang lebih baik pada tipe drive tersebut.
Dalam kasus tersebut, Anda berakhir dengan empat array berbeda, empat drive berbeda di bawah Windows (kecuali jika Anda menggunakan titik mount, dan bahkan kemudian itu folder yang berbeda) dan Anda akan memerlukan empat file terpisah di SQL Server. File-file yang terpisah dapat berada di filegroup yang sama.
Alasan utamanya adalah kinerja. Ketika Anda kehabisan kapasitas IOPS pada drive disk filegroup utama Anda, Anda harus memperluas ke filegroup kedua untuk membagi IOPS menjadi beberapa disk / LUN tergantung pada konfigurasi penyimpanan.
EDIT: Brad Wilson membuat komentar yang bagus tentang SSD. Jika Anda menggunakan sistem penyimpanan SSD / SATA / FC komposit, Anda mungkin ingin memiliki grup file yang berbeda pada berbagai jenis penyimpanan. Anda kemudian dapat menempatkan tabel persyaratan IOPS ekstrem Anda ke SSD filegropus, sementara tabel histori / statistik dapat disimpan pada filegroup SATA murah.
sumber
Saya juga akan menunjukkan ada aspek ketersediaan data recoverabiltiy / untuk pertanyaan ini juga. Dengan menggunakan beberapa grup file, dan tidak menempatkan objek yang ditentukan pengguna pada grup file utama, Anda memiliki lebih banyak fleksibilitas dalam mengaktifkan pemulihan online. ini memungkinkan pemulihan sedikit demi sedikit di tingkat grup file.
Pengembalian online tersedia dalam edisi Enterprise dan Developer sql server lebih dari 2005
Pikiran lain yang muncul dalam pikiran adalah untuk memisahkan hanya membaca data referensi statis dari data transaksional. Untuk basis data yang lebih besar, ini dapat mengurangi jumlah waktu dan / atau ruang yang dibutuhkan untuk melakukan pencadangan.
sumber