Funcionamiento de las instantáneas de la base de datos

Las instantáneas de la base de datos proporcionan una vista estática de sólo lectura de una base de datos de origen en el estado en que se encontraba en el momento de crear la instantánea, excepto las transacciones no confirmadas. Las transacciones no confirmadas se revierten durante la creación de una nueva instantánea de la base de datos, ya que Motor de base de datos ejecuta la recuperación después de crear la instantánea (no afecta a las transacciones de la base de datos).

Las instantáneas de la base de datos dependen de la base de datos de origen. Las instantáneas de la base de datos deben residir en la misma instancia de servidor que la base de datos. Además, si la base de datos deja de estar disponible por alguna razón, todas sus instantáneas también dejan de estar disponibles.

Las instantáneas se pueden utilizar para crear informes. Además, en el caso de que se produzca un error de usuario en una base de datos de origen, ésta se puede revertir al estado en que se encontraba cuando se creó la instantánea. La pérdida de datos se limita a las actualizaciones de la base de datos efectuadas desde la creación de la instantánea. Asimismo, la creación de una instantánea de la base de datos puede ser útil inmediatamente antes de realizar un cambio importante en una base de datos, como cambiar el esquema o la estructura de una tabla. Para obtener más información acerca de los usos de las instantáneas, vea Usos generales de instantáneas de base de datos.

Aunque no es esencial conocer el funcionamiento de las instantáneas para poder utilizarlas, puede resultar útil. Las instantáneas de la base de datos funcionan en el nivel de página de datos. Antes de modificar por primera vez una página de la base de datos de origen, la página original se copia de la base de datos de origen a la instantánea. Este proceso se denomina operación "copiar al escribir". La instantánea almacena la página original y conserva los registros de datos en el estado en que se encontraban cuando se creó la instantánea. Las actualizaciones sucesivas de los registros de una página modificada no afectan al contenido de la instantánea. El mismo proceso se repite para cada página que se modifica por primera vez. De esta forma, la instantánea conserva las páginas originales de todos los registros de datos que se han modificado alguna vez desde que se realizó la instantánea.

Para almacenar las páginas originales copiadas, la instantánea utiliza uno o varios archivos dispersos. Inicialmente, un archivo disperso es básicamente un archivo vacío que no contiene datos de usuario y al que todavía no se ha asignado espacio en el disco para datos de usuario. A medida que se actualizan páginas en la base de datos de origen, el tamaño del archivo aumenta. Cuando se realiza una instantánea, el archivo disperso ocupa poco espacio en el disco. Sin embargo, al actualizar la base de datos con el tiempo, el archivo disperso puede aumentar hasta alcanzar un tamaño considerable. Para obtener más información acerca de los archivos dispersos, vea Descripción del tamaño de los archivos dispersos en instantáneas de bases de datos.

En la siguiente ilustración se muestra una operación "copiar al escribir". En el diagrama de la instantánea, los rectángulos de color gris claro representan espacio potencial en un archivo disperso que todavía está sin asignar. Al recibir la primera actualización de una página en la base de datos de origen, el Motor de base de datos escribe en el archivo y el sistema operativo asigna espacio en los archivos dispersos de la instantánea y copia ahí la página original. A continuación, el Motor de base de datos actualiza la página en la base de datos de origen. En la siguiente ilustración se muestra la operación "copiar al escribir".

Operación de lectura en instantánea después de actualizar página

Nota importanteImportante

Debido a que las instantáneas de la base de datos no tienen almacenamiento redundante, no protegen frente a errores de disco u otro tipo de daños. La realización periódica de copias de seguridad y las pruebas del plan de restauración son operaciones fundamentales para la protección de una base de datos. Si tiene que restaurar la base de datos de origen al momento en que creó una instantánea de base de datos, implemente una directiva de copia de seguridad que le permita hacerlo.

Operaciones de lectura en una instantánea de la base de datos

Para el usuario, la instantánea de la base de datos no parece cambiar nunca, ya que las operaciones de lectura en una instantánea siempre tienen acceso a las páginas de datos originales, con independencia de dónde residan.

Si la página no se ha actualizado todavía en la base de datos de origen, la operación de lectura en la instantánea lee la página original de la base de datos de origen. En la siguiente ilustración se muestra una operación de lectura en una instantánea recién creada, cuyo archivo disperso, por lo tanto, no contiene ninguna página. Esta operación realiza la lectura únicamente en la base de datos de origen.

Operación de lectura antes de copiar la primera página en una instantánea

Tras actualizarse una página, la operación de lectura en la instantánea sigue teniendo acceso a la página original, que ahora se encuentra almacenada en un archivo disperso. En la siguiente ilustración se muestra una operación de lectura en la instantánea que tiene acceso a una página después de actualizarse en la base de datos de origen. La operación de lectura lee la página original en el archivo disperso de la instantánea.

Operación de copia por escritura

Efecto del patrón de actualización en el aumento de tamaño de la instantánea de la base de datos

Si la base de datos de origen es bastante grande y está preocupado por el uso del espacio de disco, en algún momento deberá reemplazar una instantánea antigua por una nueva. La duración idónea de una instantánea depende de su índice de crecimiento y el espacio de disco disponible para los archivos dispersos. El espacio de disco que requiere una instantánea depende de cuántas páginas diferentes de la base de datos de origen se actualicen durante la existencia de la instantánea. En consecuencia, si la mayoría de las actualizaciones se realizan en un subconjunto pequeño de páginas que se actualizan repetidamente, el índice de crecimiento disminuirá con el tiempo y los requisitos de espacio de la instantánea seguirán siendo relativamente pequeños. Por el contrario, si todas las páginas originales acaban actualizándose al menos una vez, la instantánea aumentará hasta igualar el tamaño de la base de datos de origen. Si el espacio del disco empieza a agotarse, las instantáneas compiten entre sí por dicho espacio. Si la unidad de disco se llena, se producirán errores en las operaciones de escritura en todas las instantáneas.

Nota

Para obtener información acerca de cómo conocer los tamaños real y potencial de una instantánea, vea Descripción del tamaño de los archivos dispersos en instantáneas de bases de datos.

Por ello, es útil conocer los patrones típicos de actualización de una base de datos al planear cuánto espacio será necesario durante la vida prevista de una instantánea. En algunas bases de datos, la tasa de actualizaciones puede ser bastante constante; por ejemplo, en una base de datos de inventario se pueden actualizar muchas de sus páginas diariamente, con lo que resulta conveniente reemplazar las instantáneas antiguas cada día o cada semana. En otras bases de datos, la proporción de páginas actualizadas puede variar durante el ciclo de negocio; por ejemplo, una base de datos de catálogo puede actualizarse principalmente una vez cada trimestre, con actualizaciones intermedias de forma ocasional; la creación de instantáneas justo antes y después de cada actualización trimestral sería una estrategia lógica. La instantánea previa a la actualización permitiría la reversión si se produjera un error importante en la actualización y la instantánea posterior a la actualización se podría utilizar para la generación de informes en el siguiente trimestre.

En la siguiente ilustración se muestran los efectos de dos patrones de actualización en contraste respecto del tamaño de una instantánea. El patrón de actualización A refleja un entorno en el que sólo el 30 por ciento de las páginas originales se actualizan durante la vida de la instantánea. El patrón de actualización B refleja un entorno en el que el 80 por ciento de las páginas originales se actualizan durante la vida de la instantánea.

Patrones de actualización alternativos y tamaño de instantánea

Metadatos acerca de las instantáneas de la base de datos

Para las instantáneas de la base de datos, los metadatos incluyen la propiedad source_database_id, que se almacena en una columna de la vista de catálogo sys.databases. Para obtener más información acerca de esta propiedad, vea sys.databases (Transact-SQL).

En general, una instantánea de la base de datos no expone metadatos propios, sino metadatos de su base de datos de origen. Estos metadatos incluyen, por ejemplo, los datos que devuelve la siguiente instrucción:

USE <database_snapshot> SELECT * FROM sys.database_files 

donde <database_snapshot>es el nombre de una instantánea de la base de datos.

Las únicas excepciones se producen cuando la base de datos de origen utiliza las funciones de búsqueda de texto o de creación de reflejo de la base de datos, que se deshabilitan a sí mismas en una instantánea mediante la modificación de algunos valores en los metadatos de la instantánea.