Aturan dasar praktis adalah memisahkan file ke volume yang berbeda untuk menghindari pertikaian, namun jumlah peningkatan kinerja yang Anda dapatkan sangat bervariasi menurut subsistem I / O dan beban kerja. Sebagai contoh, beberapa file pada satu spindel fisik akan menyedot sejauh kinerja berjalan, tetapi pengaturan yang sama dengan volume berada di SAN LUN dengan beberapa ratus drive dari array RAID 10 mungkin baik-baik saja. Penghitung panjang antrian disk adalah teman Anda sebagai cara paling sederhana untuk mengetahui apakah Anda mengalami bottleneck I / O.
Anda sedang melihat pola I / O pada basis data - baca-saja, baca-kebanyakan, baca-tulis, tulis-kebanyakan, tulis-saja - dan mendasarkan hal itu. Anda juga perlu memilih level RAID yang tepat dan memastikan offset partisi disk Anda, ukuran strip RAID, dan ukuran unit alokasi NTFS diatur dengan benar. Beberapa orang suka memisahkan indeks yang tidak dikelompokkan menjadi filegroup yang terpisah, tetapi peningkatan kinerja di sini bervariasi seperti yang telah saya jelaskan di atas.
Serta kinerja, Anda harus mempertimbangkan pengelolaan dan pemulihan. Memiliki satu, file data monolitik untuk database 100GB berarti unit pemulihan Anda adalah file itu. Membagi menjadi 4 25GB filegroup berarti Anda dapat menggunakan ketersediaan basis data parsial dan pengembalian sedikit demi sedikit hanya perlu mengembalikan satu filegroup jika rusak. Dengan mempartisi tabel dan indeks dalam beberapa grup file, Anda juga dapat membatasi bagian mana dari basis data yang dipengaruhi oleh operasi pemeliharaan (misalnya penghapusan indeks fragmentasi).
Tempdb adalah kasus khusus, dan saya akan menunjukkan Anda di posting blog saya yang menjelaskan semua tentang mengapa dan bagaimana membagi tempdb - ada banyak kesalahpahaman di luar sana.
Tanpa memberi Anda rekomendasi 'penyapuan generalisasi' di sini, saya akan mengarahkan Anda ke sekelompok whitepaper dan posting blog untuk Anda baca:
Semoga ini bisa membantu Anda!