Base de datos con múltiples archivos .mdf


10

He buscado en línea pero no he encontrado lo que estoy buscando.

El problema / consulta es, que yo sepa, una base de datos en SQL Server debe tener un archivo .mdf y quizás algunos archivos .ndf y un archivo .log.

He visto muchas bases de datos con un mdf y múltiples archivos ndf. Pero recientemente encontré alguna base de datos en un servidor donde cada base de datos tenía múltiples archivos mdf.

Hice una copia de seguridad de alguna base de datos, las moví a otro servidor y restauré el archivo primario como .mdf y todos los demás archivos como .ndf, obviamente, excepto el archivo de registro que se restauró como .log.

Ahora mis preguntas son:

  1. ¿Hay alguna sabiduría en tener múltiples archivos .mdf para una base de datos?
  2. ¿Hay algún inconveniente de tener múltiples archivos .mdf?

Era SQL Server 2008 R2 64bit Enterprise Edition

Cualquier consejo o puntero en la dirección correcta es muy apreciado. Gracias.

Respuestas:


14

Pero recientemente encontré alguna base de datos en un servidor donde cada base de datos tenía múltiples archivos mdf.

Eso se debe a una convención de nomenclatura incorrecta. Microsoft dice que cada base de datos tiene un archivo de datos primarios, pero eso no significa que solo puede tener un "archivo de datos mdf", la base de datos puede tener muchos archivos de datos con .mdfextensión, pero solo uno será un archivo de datos primario. Es mejor dar mdfextensión al archivo de datos primarios y ndfal archivo de datos secundarios para tener una demarcación adecuada, pero esta no es una regla estricta y rápida, también puede dar la extensión .abc al archivo de datos primarios, por lo que lo que presenció es normal. De hecho, puede dar cualquier extensión que desee.

¿Hay alguna sabiduría en tener múltiples archivos .mdf para una base de datos?

Si te refieres a:

¿Hay alguna sabiduría en tener múltiples archivos primarios para una base de datos?

La respuesta es no, una base de datos solo puede tener un archivo de datos primario.

Pero si te refieres a:

¿Hay alguna sabiduría en tener múltiples archivos de datos (.mdf, .ndf o con un nombre diferente) para una base de datos?

Depende, puede y no puede tener ventaja con múltiples archivos de datos. Si se distribuyen en diferentes unidades físicas (estoy hablando de husillos), vería alguna ventaja con la aplicación de escritura intensiva. Si todos están en las mismas particiones lógicas, no tendrá ninguna ventaja porque subyacentes estarían usando recursos comunes. El uso de archivos y grupos de archivos mejora el rendimiento de la base de datos, ya que permite crear una base de datos en varios discos, múltiples controladores de disco o sistemas RAID (matriz redundante de discos independientes). Por ejemplo, si su computadora tiene cuatro discos, puede crear una base de datos compuesta por tres archivos de datos y un archivo de registro, con un archivo en cada disco. A medida que se accede a los datos, cuatro cabezales de lectura / escritura pueden acceder a los datos en paralelo al mismo tiempo.

Según este artículo de MSDN BOL

Los grupos de archivos usan una estrategia de relleno proporcional en todos los archivos dentro de cada grupo de archivos. A medida que los datos se escriben en el grupo de archivos, el Motor de base de datos de SQL Server escribe una cantidad proporcional al espacio libre en el archivo en cada archivo dentro del grupo de archivos, en lugar de escribir todos los datos en el primer archivo hasta que esté lleno. Luego escribe en el siguiente archivo. Por ejemplo, si el archivo f1 tiene 100 MB libres y el archivo f2 tiene 200 MB libres, se asigna una extensión desde el archivo f1, dos extensiones desde el archivo f2, y así sucesivamente. De esta manera, ambos archivos se llenan casi al mismo tiempo, y se logra una simple división.

Otra ventaja que conozco es considerar una base de datos de 1 TB si tuviera un solo archivo de datos y desea restaurar esta base de datos en otro servidor, es muy poco probable que tenga 1 TB de espacio libre. Ahora, si la misma base de datos se distribuye en diferentes archivos, cada uno con un tamaño de 250 G, se hace más fácil la restauración. Puede que este no sea realmente su escenario, pero ayuda mucho es poco fácil encontrar un servidor con cuatro unidades de 250 G que una unidad de 1 TB

Yo diría que en lugar de muchos archivos de datos, es mejor tener diferentes grupos de archivos, pero nuevamente no hay muchos entornos. Las bases de datos formadas por múltiples grupos de archivos se pueden restaurar por etapas mediante un proceso conocido como restauración gradual. La restauración gradual funciona con todos los modelos de recuperación, pero es más flexible para los modelos completos y de registro masivo que para el modo simple. Los archivos o grupos de archivos en una base de datos se pueden respaldar y restaurar individualmente. Esto le permite restaurar solo los archivos dañados sin tener que restaurar el resto de la base de datos. Los archivos en una copia de seguridad de grupo de archivos se pueden restaurar individualmente o en grupo


Si DB tiene más de un archivo, los archivos de datos, es decir, ndf y primario, es decir, todavía predeterminados. Con esto, si uno de los archivos DB se usa para crear tablas / índices, ¿crea algún rendimiento por encima? Quiero decir que el grupo de archivos predeterminado sigue siendo primario, pero la tabla y los índices creados están en los archivos de datos.
Hola10
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.