Crear una nueva base de datos con un gran tamaño inicial

8

Quiero crear una nueva base de datos con un archivo de datos de 200GB ( .mdf) y un archivo de registro de 50GB ( .ldf).

Pero es muy lento (son unos 15 minutos y aún no se ha creado). y lleva mucho tiempo. ¿Eso es normal? en caso afirmativo, ¿qué hace que lleve tiempo? ¿Puedo mejorar su velocidad de creación?

Estoy usando SQL Server 2008 R2, Windows Server 2008R2, 16 GB de RAM (que limité a 12 GB en ssms) y Core i7 Cpu

Mehrdad Kamelzadeh
fuente
2
Para la creación de una gran base de datos, la E / S de disco está mucho más limitada que cualquier otra cosa. Si IFI está habilitado (según las respuestas), puede omitir la inicialización (puesta a cero) del archivo de datos, pero no importa lo que tenga que inicializar. Si está utilizando un disco espinoso de consumo típico que podría tomar hasta media hora solo para el archivo de registro.
Simon Righarts

Respuestas:

17

A menos que esté utilizando la Inicialización instantánea de archivos , SQL Server debe poner a cero todos los sectores para los archivos. Este es un proceso que consume mucho tiempo, especialmente para 250 GB (datos + registro). Para acelerar las cosas, habilite esta característica y luego SQL Server no pondrá a cero el espacio para los archivos de datos.

Tenga en cuenta que SQL Server siempre pondrá a cero el archivo de registro , por lo que aún estará limitado por eso. Otra referencia para la inicialización del archivo de registro

Mike Fal
fuente
¿Qué sucede exactamente en el disco duro zero out all sectorsy cuándo y por qué SQL siempre pone a cero el archivo de registro? ¿Cuál es la ventaja de hacer eso?
Mehrdad Kamelzadeh
Este es el proceso de borrar datos en su disco. Básicamente, la inicialización instantánea de archivos omite eso. Sin embargo, debido a cómo funciona internamente el archivo de registro, SQL Server debe ponerlo a cero por completo para poder usarlo. Puede encontrar más detalles al respecto aquí .
Mike Fal
@MehrdadKamelzadeh El servidor SQL que pone a cero el archivo SOLO se aplica a los archivos de datos . Los archivos de registro no pueden ser cero inicializar. Consulte ( sqlskills.com/blogs/paul/… ). Consulte también ¿Cómo saber si tiene habilitada la inicialización instantánea? ( sqlskills.com/blogs/paul/… ).
Kin Shah
1
@Kin: los archivos de registro deben tener inicialización cero, pero con IFI puede omitir la inicialización cero de los archivos de datos.
Simon Righarts
7

Si ejecuta, secpol.msc¿cuál es el valor de las políticas locales, la asignación de derechos de usuario Perform Volume Maintenance Tasks?

Mi suposición en este punto es que la cuenta de servicio de SQL Server no tiene este derecho y, por lo tanto, pone a cero el mdf y el LDF. No se puede evitar que el LDF se ponga a cero, pero puede omitirlo para el MDF.

SecPol

Referencia: http://timradney.com/2012/05/30/instant-file-initialization-for-sql-server-performance/

billinkc
fuente