Pregunta

Tengo cuatro bases de datos de SQL Server.Según los requisitos de carga máxima, cada archivo de base de datos puede tener un tamaño de entre 1 y 2 TB.El disco duro es un DAS multidisco con aproximadamente 9 TB de espacio.Durante una actualización de la base de datos, el archivo de registro de transacciones de una única base de datos puede crecer hasta 4 TB de tamaño.(Sí, agregué una nueva columna a una tabla de miles de millones de filas). Las bases de datos están en el modelo de recuperación simple.

No encuentro ninguna recomendación (o regla general) de Microsoft sobre cuánto espacio en disco necesito para un tamaño de base de datos determinado.Entiendo que puede variar mucho.Si mi comprensión es correcta, es la transacción más grande que debo considerar, ya que el espacio interno del archivo de registro se reutiliza para diferentes transacciones.Creo que el crecimiento logarítmico está establecido en 10%, pero incluso si estuviera establecido en incrementos de 1 o 2 Gigas, creo que aún así lo estaría acortando.

¿Debo emplear alguna estrategia para evitar archivos de registro tan grandes o simplemente necesito más espacio en disco para evitar quedarme sin espacio durante una actualización?Si estoy haciendo algo mal, quiero aprender a hacerlo de la manera correcta.

Estoy usando SQL Server 2012.¡Gracias!

¿Fue útil?

Solución

(Sí, agregué una nueva columna a una tabla de miles de millones de filas).

Agregar una columna a una tabla muy grande puede tener implicaciones, pero existe una forma inteligente de agregar columnas también.

De : Agregar columnas NOT NULL como operación en línea

A partir de SQL Server 2012 Enterprise Edition, agregar una columna NOT NULL con un valor predeterminado es una operación en línea cuando el valor predeterminado es una constante de tiempo de ejecución.Esto significa que la operación se completa casi instantáneamente independientemente del número de filas de la tabla.

La adición de una columna NOT NULL con un valor predeterminado que no es una constante de tiempo de ejecución siempre se realiza sin conexión y se adquiere un bloqueo exclusivo (SCH-M) durante la operación.

Edición de Empresa (funciona en la edición estándar 2008 R2 según el comentario) tiene ALTER TABLE source_table SWITCH TO new_destination_table

Las bases de datos están en el modelo de Recuperación Simple.

En el modelo de recuperación simple, sólo una CHECKPOINT truncará el registro.

Si está registrando métricas de crecimiento automático durante su actualización típica, entonces un promedio de esas métricas recopiladas le daría una buena cifra inicial. este guión te ayudará a empezar (Necesitaría el seguimiento predeterminado habilitado y ejecutándose en su servidor).

Creo que el crecimiento logarítmico está establecido en 10%, pero incluso si estuviera establecido en incrementos de 1 o 2 Gigas, creo que aún así lo estaría acortando.

Yo te sugeriría que cambiar la configuración de crecimiento automático de Porcentaje a MB fijo.Como @AaronBertrand dice en su comentario:

El problema es que lleva cada vez más tiempo, ya que el 10% de un archivo en crecimiento también crece constantemente; es como un interés compuesto, pero estás pagando, no recibiendo.

Para que esté completo, asegúrese de tener habilitada la inicialización instantánea de archivos, para que el crecimiento automático del archivo de datos pueda aprovecharla.

Otros consejos

En el escenario de agregar una columna a una tabla de clase VLDB, puede valer la pena explicar la creación de una nueva tabla con la nueva estructura y en movimiento los registros de la tabla antigua a la nueva tabla en rangos pequeños.Mantendrá el tamaño de la transacción individual pequeño para que la marca de agua alta para el tlog en una recuperación simple sea relativamente baja.No puede evitar los requisitos de ácido por completo, pero si puede lote su actualización como pasos más pequeños en lugar de una sola transacción, es posible que pueda funcionar alrededor de la restricción del espacio en disco.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a dba.stackexchange
scroll top