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.