Eventos
31 mar, 23 - 2 abr, 23
Evento de aprendizaje de SQL, Fabric y Power BI más grande. 31 de marzo – 2 de abril. Use el código FABINSIDER para ahorrar $400.
Regístrate hoyEste explorador ya no se admite.
Actualice a Microsoft Edge para aprovechar las características y actualizaciones de seguridad más recientes, y disponer de soporte técnico.
Se aplica a: SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Base de datos SQL de Microsoft Fabric
Todas las bases de datos de SQL Server tienen un registro de transacciones que registra todas las transacciones y las modificaciones que hace cada transacción en la base de datos. El registro de transacciones es un componente esencial de la base de datos y, si se produce un error del sistema, podría ser necesario para volver a poner la base de datos en un estado coherente. Esta guía proporciona información acerca de la arquitectura física y lógica del registro de transacciones. Comprender la arquitectura puede mejorar la eficacia en la administración de registros de transacciones.
El registro de transacciones de SQL Server funciona desde el punto de vista lógico como si fuese una cadena de entradas de registro. Cada entrada del registro está identificada por un número de secuencia de registro (LSN, Log Sequence Number). Las nuevas entradas del registro se escriben al final lógico del registro con un LSN mayor que el de las entradas anteriores. Las entradas de registro se almacenan en una secuencia de serie a medida que se crean, de manera que si LSN2 es mayor que LSN1, el cambio descrito por la entrada de registro a la que hace referencia LSN2 se produce después del cambio descrito por la entrada de registro LSN1. Cada entrada del registro contiene el Id. de la transacción a la que pertenece. Por cada transacción, las entradas del registro asociadas a dicha transacción se vinculan individualmente en una cadena con punteros hacia atrás, para acelerar así la reversión de la transacción.
La estructura básica de un LSN es [VLF ID:Log Block ID:Log Record ID]
. Para más información, consulte las secciones VLF y bloque de registro.
Este es un ejemplo de un LSN: 00000031:00000da0:0001
, donde 0x31
es el identificador del VLF, 0xda0
es el identificador del bloque de registro y 0x1
es el primer registro de ese bloque de registro. Para ver ejemplos de LSN, examine la salida de DMV sys.dm_db_log_info y examine la columna vlf_create_lsn
.
Los registros de modificaciones de datos registran la operación lógica llevada a cabo o las imágenes anterior y posterior de los datos modificados. La imagen anterior es una copia de los datos antes de llevar a cabo la operación; la imagen posterior es una copia de los datos después de haber realizado la operación.
Los pasos para recuperar una operación dependen del tipo de registro:
Registro de la operación lógica
Registro de las imágenes anterior y posterior
En el registro de transacciones se registran muchos tipos de operaciones. Entre las operaciones se incluyen:
El inicio y el final de cada transacción.
Todas las modificaciones de los datos (inserción, actualización y eliminación). Las modificaciones de las tablas contienen, incluidas las tablas del sistema, hechas por procedimientos almacenados del sistema o por instrucciones del lenguaje de definición de datos (DDL).
Las asignaciones o cancelaciones de asignación de páginas y extensiones.
La creación o eliminación de una tabla o un índice.
También se registran las operaciones de reversión. Cada transacción reserva espacio en el registro de transacciones para asegurarse de que existe suficiente espacio de registro para admitir una reversión provocada por una instrucción de reversión explícita o cuando se produce un error. La cantidad de espacio reservado depende de las operaciones realizadas en la transacción, pero normalmente equivale a la cantidad de espacio empleado para registrar cada operación. Este espacio reservado se libera cuando se completa la transacción.
La sección del archivo de registro a partir de la primera entrada de registro que debe estar presente para una reversión correcta en toda la base de datos hasta la última entrada de registro escrita se denomina parte activa del registro, registro activo o final del registro. Esta es la sección del registro necesaria para una recuperación completa de la base de datos. No se puede truncar ninguna parte del registro activo. El número de secuencia de registro (LSN) de este primer registro se denomina el LSN de recuperación mínimo (MinLSN). Para más información sobre las operaciones admitidas por el registro de transacciones, vea El registro de transacciones.
Las copias de seguridad diferenciales y del registro posponen la base de datos restaurada a un momento posterior, correspondiente a un LSN superior.
El registro de transacciones de la base de datos está asignado a uno o varios archivos físicos. Conceptualmente, el archivo de registro es una cadena de entradas de registro. Físicamente, la secuencia de entradas del registro se almacena de forma eficaz en el conjunto de archivos físicos que implementa el registro de transacciones. Cada base de datos debe tener al menos un archivo de registro.
El motor de base de datos de SQL Server segmenta cada archivo de registro físico internamente en varios archivos de registro virtuales (VLF). Los archivos de registro virtuales no tienen un tamaño fijo y no hay un número fijo de archivos de registro virtuales para un archivo de registro físico. El motor de base de datos elige dinámicamente el tamaño de los archivos de registro virtuales al crear o ampliar los archivos de registro. El motor de base de datos intenta mantener algunos archivos virtuales. El tamaño de los archivos virtuales después de ampliar un archivo de registro equivale a la suma del tamaño del registro existente y el tamaño del nuevo incremento del archivo. El tamaño o número de archivos de registro virtuales no lo pueden configurar ni establecer los administradores.
La creación de archivos de registro virtual (VLF) sigue este método:
Si los archivos de registro crecen hasta un tamaño grande en muchos incrementos pequeños, acabará teniendo numerosos archivos de registro virtuales. Esto puede ralentizar el inicio de la base de datos, las operaciones de copia de seguridad y restauración de registros, y provocar la replicación transaccional/CDC y la latencia de la puesta al día siempre activa. Por el contrario, si los archivos de registro están establecidos en un tamaño grande con pocos o solo un incremento, contienen muy pocos archivos de registro virtuales muy grandes. Para obtener más información sobre la estimación correcta de la configuración de tamaño requerido y crecimiento automático de un registro de transacción, vea la sección Recomendaciones de Administrar el tamaño del archivo de registro de transacciones.
Se recomienda que cree sus archivos de registro con un tamaño parecido al tamaño final necesario, con los incrementos para conseguir la distribución de VLF óptima, y que tengan un valor de growth_increment relativamente alto.
Vea las recomendaciones siguientes para determinar la distribución de VLF óptima para el tamaño del registro de transacciones actual:
SIZE
de ALTER DATABASE
, es el tamaño inicial del archivo de registro.FILEGROWTH
de ALTER DATABASE
, es la cantidad de espacio que se agrega al archivo cada vez que se necesita más espacio.Para obtener más información sobre los argumentos FILEGROWTH
y SIZE
de ALTER DATABASE
, vea Opciones File y Filegroup de ALTER DATABASE (Transact-SQL).
Sugerencia
Para determinar la distribución óptima de VLF para el tamaño de registro de transacciones actual de todas las bases de datos en una instancia determinada, así como los incrementos de tamaño necesarios para conseguir el tamaño requerido, consulte este script Fixing-VLF en GitHub.
Durante las fases iniciales de un proceso de recuperación de base de datos, SQL Server detecta todas las VFS en todos los archivos de registro de transacciones y crea una lista de estas VFS. Este proceso puede tardar mucho tiempo en función del número de VLF presentes en la base de datos específica. Cuantos más VLF, más tiempo será el proceso. Una base de datos puede acabar teniendo un gran número de VFS si se detecta un crecimiento automático frecuente del registro de transacciones o un crecimiento manual en pequeños incrementos. Cuando el número de VLF alcanza el intervalo de varios cientos de miles, puede encontrar algunos o la mayoría de los síntomas siguientes:
Al examinar el registro de errores de SQL Server, es posible que vea que se dedica una cantidad significativa de tiempo antes de la fase de análisis del proceso de recuperación de la base de datos. Por ejemplo:
2022-05-08 14:42:38.65 spid22s Starting up database 'lot_of_vlfs'.
2022-05-08 14:46:04.76 spid22s Analysis of database 'lot_of_vlfs' (16) is 0% complete (approximately 0 seconds remain). Phase 1 of 3. This is an informational message only. No user action is required.
Además, SQL Server puede registrar un error MSSQLSERVER_9017 al restaurar una base de datos que tenga un gran número de VLF:
Database %ls has more than %d virtual log files which is excessive. Too many virtual log files can cause long startup and backup times. Consider shrinking the log and using a different growth increment to reduce the number of virtual log files.
Para obtener más información, consulte MSSQLSERVER_9017.
Para mantener el número total de VLF en una cantidad razonable, como un máximo de varios miles, puede restablecer el archivo de registro de transacciones para que contenga un número menor de VLF realizando los pasos siguientes:
Reduzca manualmente los archivos de registro de transacciones.
Aumente manualmente los archivos al tamaño necesario en un paso mediante el siguiente script de T-SQL:
ALTER DATABASE <database name> MODIFY FILE (NAME='Logical file name of transaction log', SIZE = <required size>);
Nota
Este paso también es posible en SQL Server Management Studio mediante la página de propiedades de la base de datos.
Después de establecer el nuevo diseño del archivo de registro de transacciones con menos VLF, revise y realice los cambios necesarios en la configuración de crecimiento automático del registro de transacciones. Esta validación de configuración garantiza que el archivo de registro evite encontrar el mismo problema en el futuro.
Antes de realizar cualquiera de estas operaciones, asegúrese de que tiene una copia de seguridad restaurable válida en caso de que encuentre problemas más adelante.
Para determinar la distribución óptima de VLF para el tamaño de registro de transacciones actual de todas las bases de datos en una instancia determinada, así como los incrementos de tamaño necesarios para conseguir el tamaño requerido, use el script de GitHub siguiente para corregir VLF.
Cada VLF contiene uno o varios bloques de registro. Cada bloque de registro consta de los registros (alineados en un límite de 4 bytes). Un bloque de registro es variable de tamaño y siempre es un entero múltiplo de 512 bytes (el tamaño mínimo de sector que admite SQL Server), con un tamaño máximo de 60 KB. Un bloque de registro es la unidad básica de E/S para el registro de transacciones.
En resumen, un bloque de registro es un contenedor de registros que se usa como unidad básica de registro de transacciones al escribir registros de registro en disco.
Cada bloque de registro dentro de un VLF se aborda de forma única mediante su desplazamiento de bloque. El primer bloque siempre tiene un desplazamiento de bloque mayor a los primeros 8 KB del VLF.
En general, un VLF siempre se rellena con bloques de registro. Es posible que el último bloque de registro de un VLF esté vacío (por ejemplo, no contiene ningún registro). Esto sucede cuando un registro que se va a escribir no cabe en el bloque de registro actual y también cuando el espacio que queda en el VLF no es suficiente para contener este registro de registro. En este caso, se crea un bloque de registro vacío que rellena el VLF. El registro de registro se inserta en el primer bloque del siguiente VLF.
El registro de transacciones es un archivo de registro circular. Considere, por ejemplo, una base de datos con un archivo de registro físico dividido en cuatro VLF. Cuando se crea la base de datos, el archivo de registro lógico empieza en el principio del archivo de registro físico. Las nuevas entradas del registro se agregan al final del registro lógico y se expanden hacia el final del archivo físico. El truncamiento del registro libera los registros virtuales cuyas entradas son anteriores al número de flujo de registro de recuperación mínimo (MinLSN). MinLSN es el número de flujo de registro de la entrada del registro más antigua necesaria para una reversión correcta de toda la base de datos. El registro de transacciones del ejemplo de la base de datos sería similar al del diagrama siguiente.
Cuando el final del registro lógico llega al final del archivo de registro físico, las nuevas entradas del registro se escriben al principio del archivo de registro físico.
El ciclo se repite indefinidamente, siempre que el final del registro lógico no alcance el inicio del registro lógico. Si las entradas antiguas se truncan con la frecuencia suficiente para disponer siempre de espacio para todas las nuevas entradas de registro que se van a crear hasta el próximo punto de comprobación, el registro no se llena nunca. Sin embargo, si el final del registro lógico llega al principio del registro lógico, se produce una de estas dos situaciones:
Si el registro tiene habilitada la opción FILEGROWTH
y hay espacio disponible en el disco, el archivo se amplía en la cantidad especificada en el parámetro growth_increment y las nuevas entradas del registro se escriben en la extensión. Para más información sobre el valor FILEGROWTH
, vea Opciones File y Filegroup de ALTER DATABASE (Transact-SQL).
Si la opción FILEGROWTH
no está habilitada o el disco que almacena el archivo de registro tiene menos espacio disponible que la cantidad especificada en growth_increment, se genera el error 9002. Para más información, vea Solución de problemas de un registro de transacciones lleno (error 9002 de SQL Server).
Si el registro contiene varios archivos de registro físicos, el registro lógico pasa por todos los archivos de registro físicos antes de volver a empezar por el principio del primer archivo de registro físico.
Importante
Para más información sobre la administración de tamaño del registro de transacciones, vea Administración del tamaño del archivo de registro de transacciones.
El truncamiento del registro es esencial para evitar que se llene. El truncamiento del registro elimina los archivos de registro virtuales inactivos del registro de transacciones lógico de una base de datos de SQL Server, liberando espacio en el registro lógico para que lo reutilice el registro de transacciones físico. Si un registro de transacciones no se trunca nunca, acabará ocupando todo el espacio de disco que se asigna a los archivos de registro físicos. Sin embargo, para que se pueda truncar el registro, se debe realizar primero una operación de punto de comprobación. Un punto de comprobación escribe en el disco las páginas modificadas en memoria actuales (denominadas páginas desfasadas) y la información del registro de transacciones de la memoria. Cuando se lleva a cabo el punto de comprobación, la parte inactiva del registro de transacciones se marca como reutilizable. A partir de ese momento, se puede liberar la parte inactiva mediante el truncamiento del registro. Para más información sobre los puntos de comprobación, vea Puntos de comprobación de base de datos (SQL Server).
En los diagramas siguientes se muestra un registro de transacciones antes y después del truncamiento. En el primer diagrama se muestra un registro de transacciones que no se ha truncado nunca. El registro lógico tiene actualmente cuatro archivos de registro virtuales en uso. El registro lógico comienza al principio del primer archivo de registro virtual y finaliza en el registro virtual 4. El registro de MinLSN está en el registro virtual 3. Los registros virtuales 1 y 2 solo contienen entradas de registro inactivas. Estas entradas pueden truncarse. El registro virtual 5 no se utiliza aún y no forma parte del registro lógico actual.
En el segundo diagrama se muestra el aspecto del registro después del truncamiento. Se han liberado los registros virtuales 1 y 2 para su reutilización. El registro lógico comienza ahora al principio del registro virtual 3. El registro virtual 5 no se utiliza aún y no forma parte del registro lógico actual.
El truncamiento del registro se produce automáticamente después de los eventos siguientes, excepto cuando se retrasa por alguna razón:
El truncamiento del registro se puede retrasar por varias factores. En caso de un retraso largo en el truncamiento del registro, el registro de transacciones se puede llenar. Para obtener información, vea Factores que pueden ralentizar el truncamiento del registro y Solución de problemas de un registro de transacciones lleno (Error 9002 de SQL Server).
En esta sección se describe el rol que desempeña el registro de transacciones de escritura anticipada en la grabación de modificaciones de datos en disco. SQL Server usa un algoritmo de registro de escritura previa (WAL), lo cual garantiza que no se escriba ninguna modificación de datos en el disco antes de escribir en él la entrada de registro asociada. Así se mantienen las propiedades ACID para una transacción.
Para más información sobre WAL, vea Aspectos fundamentales de E/S de SQL Server.
Para entender cómo funciona el registro de escritura previa en relación con el registro de transacciones, es importante saber cómo se escriben los datos modificados en el disco. SQL Server mantiene una caché del búfer (también conocido como grupo de búferes)que lee las páginas de datos cuando estos deben recuperarse. Cuando se modifica una página en la caché del búfer, no se vuelve a escribir inmediatamente en el disco; en su lugar, la página se marca como desfasada. Una página de datos puede tener más de una escritura lógica antes de que se escriba físicamente en el disco. Para cada escritura lógica, se inserta una entrada del registro de transacciones en la caché del registro que registra la modificación. Las entradas del registro se tienen que escribir en el disco antes de que la página desfasada asociada se quite de la caché del búfer y se escriba en el disco. El proceso de punto de comprobación examina periódicamente la caché del búfer en busca de búferes con páginas de una base de datos especificada y escribe todas las páginas desfasadas en el disco. Los puntos de comprobación permiten ahorrar tiempo en una recuperación posterior al crear un punto en el que se garantiza que todas las páginas desfasadas se hayan escrito en el disco.
A la escritura en el disco de una página de datos modificada desde la caché del búfer se le llama vaciar la página. SQL Server tiene una lógica que evita que una página desfasada se vacíe antes de que se escriba la entrada del registro asociada. Las entradas de registro se escriben en el disco cuando se vacían los búferes de registro. Esto ocurre siempre que se confirma una transacción o se llenan los búferes de registro.
En esta sección se presentan conceptos acerca de cómo realizar copias de seguridad y restaurar (aplicar) registros de transacciones. En los modelos de recuperación completa y de recuperación optimizada para cargas masivas de registros, es necesario realizar copias de seguridad periódicas de los registros de transacciones (copias de seguridad de registros) para recuperar datos. Puede realizar una copia de seguridad del registro mientras se está ejecutando cualquier copia de seguridad completa. Para obtener más información sobre modelos de recuperación, consulte Realizar copias de seguridad y restaurar bases de datos de SQL Server.
Antes de crear la primera copia de seguridad de registros, debe crear una copia de seguridad completa, como una copia de seguridad de la base de datos o la primera de un conjunto completo de copias de seguridad de archivos. La restauración de una base de datos utilizando únicamente copias de seguridad de archivos puede llegar a ser un proceso complejo. Por lo tanto, es recomendable que comience con una copia de seguridad de la base de datos completa si es posible. Posteriormente, será necesario realizar copias de seguridad del registro de transacciones con regularidad. De esta forma, no solo se minimiza el riesgo de pérdida de trabajo, sino que también se permite el truncamiento del registro de transacciones. Normalmente, el registro de transacciones se trunca tras cada copia de seguridad de registros convencional.
Importante
Es aconsejable realizar copias de seguridad de registros suficientemente regulares para ajustarse a los requisitos de su empresa, específicamente a la tolerancia a la pérdida de trabajo que un almacenamiento de registro dañada podría provocar.
La frecuencia adecuada para realizar copias de seguridad de registros varía en función de la tolerancia al riesgo de pérdida de trabajo y, por otra parte, de la cantidad de copias de seguridad de registros que puede almacenar, administrar y, potencialmente, restaurar. Tenga en cuenta los objetivos de tiempo de recuperación (RTO) y los objetivos de punto de recuperación (RPO) necesarios al implementar la estrategia de recuperación, específicamente el ritmo de realización de copias de seguridad de registros. Una copia de seguridad de registros cada 15 ó 30 minutos puede ser suficiente. Si su empresa necesita minimizar el riesgo de pérdida de trabajo, piense en la posibilidad de realizar copias de seguridad de registros más frecuentemente. La existencia de copias de seguridad más frecuentes de los registros tiene la ventaja añadida de aumentar la frecuencia de truncamiento del registro, lo que genera archivos de registro menores.
Para limitar el número de copias de seguridad del registro que necesita restaurar, es esencial que realice una copia de seguridad de sus datos periódicamente. Por ejemplo, podría programar una copia de seguridad completa de la base de datos cada semana y copias de seguridad diferenciales de la base de datos a diario.
Tenga en cuenta los RTO y RPO necesarios al implementar la estrategia de recuperación, específicamente el ritmo de realización de copias de seguridad de base de datos completas y diferenciales.
Para más información sobre las copias de seguridad del registro de transacciones, vea Copias de seguridad del registro de transacciones (SQL Server);.
Una secuencia continua de copias de seguridad de registros se denomina cadena de registros. Una cadena de registros empieza con una copia de seguridad completa de la base de datos. Normalmente, una cadena de registro nueva solo empieza cuando se realiza la primera copia de seguridad de la base de datos o después de que se cambie del modelo de recuperación simple al modelo de recuperación completa o al modelo de recuperación optimizado para cargas masivas de registros. A menos que se elija sobrescribir los conjuntos de copia de seguridad existentes al crear una copia de seguridad completa de la base de datos, la cadena de registros existente permanece intacta. Con la cadena de registros intacta, se puede restaurar la base de datos a partir de cualquier copia de seguridad completa de la base de datos del conjunto de medios, seguida de todas las copias de seguridad de los registros subsiguientes hasta el punto de recuperación. El punto de recuperación puede ser el final de la última copia de seguridad de registros o un punto de recuperación concreto de cualquiera de las copias de seguridad de registros. Para más información, vea Copias de seguridad del registro de transacciones (SQL Server).
Para restaurar una base de datos al momento del error, es preciso que la cadena de registros esté intacta. De esta forma, es necesario que una secuencia ininterrumpida de las copias de seguridad del registro de transacciones se extienda hasta el momento del error. El lugar en el que esta secuencia de registros debe comenzar depende del tipo de copias de seguridad de datos que esté restaurando: de base de datos, parcial o de archivos. En las copias de seguridad de base de datos o parciales, la secuencia de copias de seguridad de registros debe extenderse desde el final de la copia de seguridad de base de datos o parcial. En un conjunto de copia de seguridad de archivos, la secuencia de copias de seguridad de registros debe comenzar desde el principio del conjunto completo de copias de seguridad de archivos. Para obtener más información, vea Aplicar copias de seguridad del registro de transacciones (SQL Server).
Al restaurar una copia de seguridad de registros se ponen al día los cambios que se registraron en el registro de transacciones para volver a crear el estado exacto de la base de datos en el momento en que se inició la operación de copia de seguridad de registros. Al restaurar una base de datos, será necesario restaurar las copias de seguridad de registros creadas tras la copia de seguridad de la base de datos completa que esté restaurando o al principio de la primera copia de seguridad de archivos que esté restaurando. Normalmente, se debe restaurar una serie de copias de seguridad de registros hasta llegar al punto de recuperación después de haber restaurado la copia de seguridad de los datos o la copia de seguridad diferencial más recientes. A continuación, se realiza la recuperación de la base de datos. De esta manera, todas las transacciones que estaban incompletas cuando comenzó la recuperación se revertirán y la base de datos se conectará. Una vez recuperada la base de datos, ya no es posible restaurar más copias de seguridad. Para obtener más información, vea Aplicar copias de seguridad del registro de transacciones (SQL Server).
Los puntos de comprobación vacían las páginas de datos desfasadas en la memoria caché del búfer de la base de datos actual en el disco. De este modo, se minimiza la parte activa del registro que se debe procesar durante una recuperación completa de una base de datos. Durante una recuperación completa, se llevan a cabo los siguientes tipos de acciones:
Un punto de comprobación realiza los procesos siguientes en la base de datos:
Escribe en el archivo de registro una entrada que marca el inicio del punto de comprobación.
Guarda información registrada para el punto de comprobación en una cadena de entradas de registro de puntos de comprobación.
Una parte de la información registrada en el punto de comprobación es el número de flujo de registro (LSN) de la primera entrada del registro que debe estar presente para una reversión correcta de toda la base de datos. Este LSN se denomina LSN de recuperación mínimo (MinLSN). El MinLSN es el mínimo de:
Los registros del punto de comprobación también contienen una lista de las transacciones activas que han modificado la base de datos.
Si la base de datos utiliza el modelo de recuperación simple, marca para su reutilización el espacio que se encuentra antes del MinLSN.
Escribe en el disco todas las páginas de datos y de registro desfasadas.
Escribe en el archivo de registro un registro que marca el final del punto de comprobación.
Escribe el LSN del inicio de esta cadena en la página de arranque de la base de datos.
Los puntos de comprobación pueden darse en las situaciones siguientes:
El motor de base de datos de SQL Server genera puntos de comprobación automáticos. El intervalo entre puntos de comprobación automáticos se basa en el espacio del registro utilizado y en el tiempo transcurrido desde el último punto de comprobación. El intervalo de tiempo entre los puntos de comprobación automáticos puede ser muy variable y largo si se realizan pocas modificaciones en la base de datos. Los puntos de comprobación automáticos también se pueden producir con frecuencia si se modifican muchos datos.
El intervalo entre puntos de comprobación automáticos para todas las bases de datos de una instancia de servidor se calcula a partir de la opción de configuración del servidor recovery interval . Esta opción especifica el máximo de tiempo que el motor de base de datos debe usar para recuperar una base de datos al reiniciar el sistema. El motor de base de datos calcula cuántas entradas de registro puede procesar en el intervalo de recuperación durante una operación de recuperación.
El intervalo entre los puntos de comprobación automáticos depende también del modelo de recuperación:
Si la base de datos usa el modelo de recuperación completa o el modelo de recuperación optimizado para cargas masivas de registros, se generará un punto de comprobación automático cuando el número de entradas del registro alcance el número que el motor de base de datos estima que puede procesar durante el tiempo especificado en la opción de intervalo de recuperación.
Si la base de datos utiliza el modelo de recuperación simple, se generará un punto de comprobación automático cuando el número de registros alcance el menor de estos dos valores:
Para más información sobre la configuración del intervalo de recuperación, vea Configuración del intervalo de recuperación (mínimo) (opción de configuración del servidor).
Sugerencia
La opción de configuración avanzada -k
de SQL Server permite a un administrador de base de datos limitar el comportamiento de E/S de los puntos de control según el rendimiento de E/S para algunos tipos de puntos de control. La opción de configuración -k
es válida para los puntos de comprobación y para cualquier punto de comprobación sin limitar.
Los puntos de comprobación automáticos truncan la parte no utilizada del registro de transacciones si la base de datos utiliza el modelo de recuperación simple. No obstante, el registro no se trunca mediante puntos de comprobación automáticos si la base de datos utiliza el modelo de recuperación completa o el modelo optimizado para cargas masivas de registros. Para más información, vea El registro de transacciones.
Ahora la instrucción CHECKPOINT ofrece un argumento checkpoint_duration opcional que especifica en segundos el tiempo necesario para que finalicen los puntos de comprobación. Para obtener más información, consulte CHECKPOINT.
La parte del archivo de registro desde el MinLSN hasta el último registro escrito se denomina parte activa del registro o registro activo. Se trata de la sección del registro necesaria para una recuperación completa de la base de datos. No se puede truncar ninguna parte del registro activo. Los truncamientos del registro se deben realizar en las partes del registro anteriores al MinLSN.
En el diagrama siguiente se muestra una versión simplificada del final de un registro de transacciones con dos transacciones activas. Los registros de punto de comprobación se han compactado en un solo registro.
LSN 148 es la última entrada del registro de transacciones. En el momento en que se procesó el registro del punto de comprobación en LSN 147, Tran 1 se había confirmado y Tran 2 era la única transacción activa. Esto hace que la primera entrada del registro para Tran 2 sea la entrada de transacción activa más antigua del registro en el momento del último punto de comprobación. Esto convierte al registro de inicio del registro de transacciones para Tran 2, LSN 142, en el MinLSN.
El registro activo debe incluir cada una de las partes de todas las transacciones no confirmadas. Una aplicación que inicia una transacción y no la confirma o la revierte impide que el motor de base de datos avance hacia el valor de MinLSN. Esta situación puede causar dos tipos de problemas:
La recuperación de transacciones de larga duración y los problemas descritos en este artículo se pueden evitar mediante la recuperación acelerada de la base de datos, una característica disponible a partir de SQL Server 2019 (15.x) y en Azure SQL Database.
El Agente de registro del LOG supervisa el registro de transacciones de cada base de datos configurada para la replicación transaccional y copia las transacciones marcadas para la replicación desde el registro de transacciones a la base de datos de distribución. El registro activo debe contener todas las transacciones marcadas para la replicación, pero que aún no se han entregado a la base de datos de distribución. Si estas transacciones no se replican puntualmente, pueden evitar el truncamiento del registro. Para obtener más información, consulte Replicación transaccional.
Eventos
31 mar, 23 - 2 abr, 23
Evento de aprendizaje de SQL, Fabric y Power BI más grande. 31 de marzo – 2 de abril. Use el código FABINSIDER para ahorrar $400.
Regístrate hoyCursos
Módulo
Comprender el registro de escritura anticipada - Training
Azure Database for PostgreSQL es un servicio de base de datos compatible con ACID. El registro de escritura anticipada garantiza que los cambios sean atómicos y duraderos (A y D en ACID). Los cambios se escriben primero en el registro antes de confirmarlos en la base de datos. En este módulo, aprenderá cómo Azure Database for PostgreSQL implementa el registro de escritura anticipada y cómo se puede usar el registro para la replicación y la descodificación lógica.
Documentación
El registro de transacciones - SQL Server
Obtenga información sobre el registro de transacciones. Cada base de datos de SQL Server registra todas las transacciones y las modificaciones de base de datos que necesita si se produce un error del sistema.
Puntos de comprobación de base de datos (SQL Server) - SQL Server
Obtenga información sobre los puntos de control, los puntos conocidos desde los que el Motor de base de datos de SQL Server puede empezar a aplicar los cambios incluidos en el registro durante la recuperación.
sys.dm_db_log_space_usage (Transact-SQL) - SQL Server
La vista de administración dinámica sys.dm_db_log_space_usage devuelve información de uso del espacio para el registro de transacciones.