Hay dos partes en esta pregunta: cuándo agregar un nuevo FILEGROUP y cuándo agregar un nuevo ARCHIVO en un grupo de archivos. Primero hablemos de teoría:
Mark tiene razón sobre que la razón principal es el rendimiento.
La razón secundaria es la recuperación ante desastres. Con SQL Server 2005 y versiones posteriores, puede hacer restauraciones de grupos de archivos. Cuando ocurre un desastre, puede restaurar solo su grupo de archivos principal primero y poner la base de datos parcialmente en línea para consultas. Los usuarios pueden ejecutar consultas mientras restaura otros grupos de archivos. Esto es útil para bases de datos con una gran cantidad de datos históricos que pueden no ser necesarios de inmediato, o almacenes de datos que necesitan cargar datos en las tablas actuales sin necesitar datos históricos para acceder.
Otra razón es el perfil de lectura / escritura de grupos de datos. Si tiene algunos datos que se escriben constantemente y otros datos que generan mucha actividad de lectura, puede crear diferentes tipos de almacenamiento para satisfacer esas necesidades. Podrías poner las cosas de escritura pesada en la incursión 10, y dejar las cosas con sesgo de lectura en la incursión más barata 5.
Ahora, hablemos de archivos versus grupos de archivos. Cuando coloca objetos en SQL Server, debe colocarlos en el nivel de grupo de archivos. Puede aterrizar una tabla o un índice en un grupo de archivos, pero no puede elegir un archivo específico. Entonces, todo lo que hemos discutido hasta ahora ha sido sobre cuándo agregar un grupo de archivos, pero ¿cuándo agrega un archivo?
Si está diseñando almacenamiento y tiene 80 discos duros, hay algunas maneras de dividirlo:
- Un grupo de 80 unidades
- Dos grupos de 40 unidades
- Cuatro grupos de 20 unidades, etc.
Los diferentes subsistemas de almacenamiento tienen diferentes perfiles de rendimiento. He trabajado con algunas SAN que funcionaron mejor con arreglos de unidades 12-16, y cualquier cosa más grande que eso no tuvo una mejora en el rendimiento. Otro ejemplo son las SAN con rutas múltiples: si tiene varios HBA que conectan su servidor a su almacenamiento, y si su software de rutas múltiples no es realmente activo / activo, entonces puede necesitar una matriz por ruta para distribuir la carga. Cuatro caminos, cuatro grupos de unidades obtendrán un mejor rendimiento en esos tipos de unidades.
En esos casos, termina con cuatro matrices diferentes, cuatro unidades diferentes en Windows (a menos que use puntos de montaje, e incluso entonces son carpetas diferentes) y necesitará cuatro archivos separados en SQL Server. Esos archivos separados pueden estar en el mismo grupo de archivos.