Si quiero crear una base de datos de 5GB con
CREATE DATABASE [test]
CONTAINMENT = NONE
ON PRIMARY
( NAME = N'test', FILENAME = N'E:\2012\test.mdf' , SIZE = 5529600KB , FILEGROWTH = 1024KB )
LOG ON
( NAME = N'test_log', FILENAME = N'E:\2012\test_log.ldf' , SIZE = 1024KB , FILEGROWTH = 10%)
Tarda 1 minuto en mi SSD.
Pero cuando agrego usuario de SQL Server a Perform volume maintenance tasks
Solo toma 1-2 segundos .
¿Porqué es eso? ¿Alguien puede explicarme cuáles son las razones de esto?
sql-server
performance
Nikolay Kostov
fuente
fuente
Respuestas:
Eso se debe a la inicialización instantánea de archivos . En resumen, SQL Server puede aprovechar este privilegio para los archivos de datos de la base de datos (no los archivos de registro de transacciones). Lo que esto significa es que SQL Server no tiene que poner a cero los archivos de datos al inicializar.
Sin el privilegio "Realizar tareas de mantenimiento de volumen" otorgado a la cuenta del Servicio SQL, tras la creación de la base de datos, SQL Server necesita poner a cero "test.mdf" y "test_log.ldf".
Con el conjunto de permisos de privilegio "Realizar tareas de mantenimiento de volumen" , SQL Server solo necesita poner a cero "test_log.ldf". Una sobrecarga significativamente menor, por lo tanto, minimiza la duración de la
CREATE DATABASE
prueba.Referencias
Cómo y por qué habilitar la inicialización instantánea de archivos Inicialización
instantánea: ¿qué, por qué y cómo?
fuente
Esto no afectará a los archivos .ldf (archivos de registro), al menos no de acuerdo con el artículo de MS
¿Por que hacerlo? Velocidad
¿Por qué no hacerlo? Posible riesgo de seguridad. Alguien podría hackear su caja y posiblemente leer los espacios de memoria distintos de cero y recuperar esos datos. Pequeño riesgo, pero sigue siendo un riesgo. Es por eso que no está habilitado de forma predeterminada.
Explicación detallada: cómo y por qué habilitar la inicialización instantánea de archivos
fuente