You are on page 1of 25

Creando escenarios para reportes con bases de datos SNAPSHOT

Hctor Meza Salgado


Arquitecto de Software www.sqlpasschile.cl
hector.meza@sqlpasschile.cl

Agenda
Esquema de un SNAPSHOT de Base de Datos
Que es? Para que sirve? Funcionamiento Metadatos

Requisitos y Limitaciones Aplicacin


Crear una SNAPSHOT Revertir una SNAPSHOT Eliminar una SNAPSHOT Cuando no usar SNAPSHOT

Copyright 2012, SQL PASS Chile. All rights reserved.

Professional Association for SQL Server

Agenda
Escenarios de uso Tpicos Avanzados
Mirroring + SNAPSHOT SNAPSHOT Isolation Uso de memoria (cach de datos) Sparse Files

Copyright 2012, SQL PASS Chile. All rights reserved.

Professional Association for SQL Server

Esquema de un SNAPSHOT de BD
Que es una SNAPSHOT
Una vista esttica de slo lectura de una BD origen. Pueden existir varias SNAPSHOT de una BD coexistiendo en la misma instancia de servidor.

Copyright 2012, SQL PASS Chile. All rights reserved.

Professional Association for SQL Server

Esquema de un SNAPSHOT de BD
Para que sirve una SNAPSHOT
Crear una BD para reportes. Devolver una BD al punto en que se creo la SNAPSHOT. Prevencin de errores por uso administrativo o de usuarios de la BD. Utilizar una BD en Mirroring que est en mantenimiento. Obtener una imagen de una BD antes de aplicar un cambio importante (paso a produccin). Administrar escenarios de pruebas de desarrollo y QA.

Copyright 2012, SQL PASS Chile. All rights reserved.

Professional Association for SQL Server

Esquema de un SNAPSHOT de BD
Funcionamiento
Trabaja a nivel de pginas de datos. Antes de modificar una pgina original la copia a la BD SNAPSHOT (copy-on-write). Almacena las pginas originales en archivos dispersos (sparse files, esencialmente una entrada File allocation table de NTFS). Al momento de crear la SNAPSHOT las transacciones no confirmadas son descartadas.

Copyright 2012, SQL PASS Chile. All rights reserved.

Professional Association for SQL Server

Esquema de un SNAPSHOP de BD
Funcionamiento
No hay almacenamiento redundante en la SNAPSHOT, las pginas no modificadas se leen de la BD Original. El espacio en disco de una SNAPSHOT depende la cantidad de pginas diferentes son modificadas de la BD original. El patrn de actualizacin de una BD incide directamente sobre las operaciones de lectura e ndice de crecimiento del tamao de los archivos de la BD SNAPSHOT.

Copyright 2012, SQL PASS Chile. All rights reserved.

Professional Association for SQL Server

Esquema de un SNAPSHOT de BD
METADATOS
Una BD SNAPSHOT expone los metadatos de la BD original. No expone metadatos de una BD en Mirroring o de BD con funciones de Full-Text Search activados. En sys.database_files de una BD SNAPSHOT la columna physical_name siempre almacena el nombre de los archivos de la BD de origen. Al revertir una BD desde una SNAPSHOT los Metadatos no se alteran. Las BD SNAPSHOT se crean con la opcin ALLOW_SNAPSHOT_ISOLATION en ON.

Copyright 2012, SQL PASS Chile. All rights reserved.

Professional Association for SQL Server

Requisitos y Limitaciones
Requisitos
Slo disponible en SQL Server 2005 Enterprice y versiones superiores. Espacio en disco, dependiendo del nivel de actualizacin de la BD origen. Aplicable a cualquier BD de usuario, independiente si tienes otras opciones del motor activadas:
Rplicacin Log Shipping Mirroring (en modo sincronizado) Fail Over Clustering

Copyright 2012, SQL PASS Chile. All rights reserved.

Professional Association for SQL Server

Requisitos y Limitaciones
Limitaciones
Se crear en la misma instancia de la BD de origen. No admite operaciones de Backup/Restore. Hereda esquema de seguridad de la BD de origen y no puede ser alterado. En combinacin con Log Shipping, slo admite SNAPSHOT sobre la BD primaria. Los archivos FILESTREAM no son compatibles con una SNAPSHOT. Una BD original con SNAPSHOT no puede:
Ser eliminada, des-atachada ni restaurada. Reduce su rendimiento por el aumento de E/S. No se pueden eliminar archivos de la BD ni se sus SNAPSHOTS.

Copyright 2012, SQL PASS Chile. All rights reserved.

Professional Association for SQL Server

Requisitos y Limitaciones
Limitaciones
No permite operaciones de Full-text indexing. Slo de pueden crear SNAPSHOTS sobre NTFS (no FAT32 ni RAW). Si una BD origen queda en RECOVERY_PENDING es probable que no se tenga acceso a sus SNAPSHOTS. Una BD SNAPSHOT no se puede configurar como una BD compartida escalable. Las BD SNAPSHOT heredan el estado de los grupos de archivos al momento de crearla, on line y off line. Si al momento de grabar una pgina en una BD SNAPSHOT se produce un error, por espacio en disco, la BD queda SUSPECT.

Copyright 2012, SQL PASS Chile. All rights reserved.

Professional Association for SQL Server

Aplicacin
Crear una SNAPSHOT
Se crea a partir de Transact-SQL.
CREATE DATABASE AdventureWorks2008R2_dbss1800 ON ( NAME = AdventureWorks2008R2_Data, FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Data\AdventureWorks20 08R2_data_1800.ss' ) AS SNAPSHOT OF AdventureWorks2008R2; GO

Se pueden crear N SNAPSHOT a partir de una BD original, diferencindolas por el nombre. Para conectarse a la BD SNAPSHOT los clientes deben conocer el la instancia y el nombre.

Copyright 2012, SQL PASS Chile. All rights reserved.

Professional Association for SQL Server

Aplicacin
Crear una SNAPSHOT

Copyright 2012, SQL PASS Chile. All rights reserved.

Professional Association for SQL Server

Aplicacin
Revertir una BD original a partir de una SNAPSHOT
Se revierte va Transact-SQL.
USE master; GO RESTORE DATABASE AdventureWorks2008R2 from DATABASE_SNAPSHOT = 'AdventureWorks2008R2_dbss1800'; GO

Cualquier usuario con privilegios de RESTORE DATABASE en la BD de origen puede revertirla a una SNAPSHOT determinada.

Copyright 2012, SQL PASS Chile. All rights reserved.

Professional Association for SQL Server

Aplicacin
Revertir una BD original a partir de una SNAPSHOT

Copyright 2012, SQL PASS Chile. All rights reserved.

Professional Association for SQL Server

Aplicacin
Revertir una BD original a partir de una SNAPSHOT
Para revertir la BD a una SNAPSHOT en particular se debe:
Borrar cualquier SNAPSHOT adicional. La BD de origen no puede tener sus archivos comprimidos o de slo lectura. No debe haber archivos sin conexin, a menos que estuvieran as al momento de crear la SNAPSHOT.

La reversin sobre-escribe cualquier actualizacin posterior a la creacin de la SNAPSHOT. Se vuelve a crear el Transaction Log, por lo que se interrumpe la secuencia de backups (rompe el Log Shipping). Durante la reversin la BD original ni la SNAPSHOT estn disponibles (In Restore).

Copyright 2012, SQL PASS Chile. All rights reserved.

Professional Association for SQL Server

Aplicacin
Eliminar una SNAPSHOT
Va Management Studio o Transact-SQL.
DROP DATABASE AdventureWorks2008R2_dbss1800

Al eliminar una SNAPSHOT se borran todos los archivos dispersos asociados. Se terminan todas las conexiones de usuario. Cualquier usuario con privilegios de DROP DATABASE puede eliminar una SNAPSHOT.

Copyright 2012, SQL PASS Chile. All rights reserved.

Professional Association for SQL Server

Aplicacin
Cuando no usar una SNAPSHOT
No se debe usar como alternativa de Alta Disponibilidad. No reemplaza un esquema regular de Backups. Una BD SNAPSHOT no protege contra errores de disco o corrupcin de la BD de origen.

Copyright 2012, SQL PASS Chile. All rights reserved.

Professional Association for SQL Server

Escenarios de Uso
Informes por perodo Bases de datos para ambientes de prueba Recuperacin de Emergencia en Produccin Seguridad para operaciones crticas Bases de datos para reportes

Copyright 2012, SQL PASS Chile. All rights reserved.

Professional Association for SQL Server

Tpicos Avanzados
Mirroring + Snapshot

Copyright 2012, SQL PASS Chile. All rights reserved.

Professional Association for SQL Server

Tpicos Avanzados
SNAPSHOT Isolation
Se basa en MVCC (Multi version concurrency control) Ventajas: Mayor nivel de consistencia incluso que un repetable red, con mayor nivel de concurrencia, ya que no realiza lockeos. Contras: Mayor overhead para mantener las distintas versiones de un conjunto de datos, lo que impacta en la performance. Uso Habitual: Cuando se necesita obtener informacin muy consistente y en entornos de alta concurrencia.

Copyright 2012, SQL PASS Chile. All rights reserved.

Professional Association for SQL Server

Tpicos Avanzados
Uso de Memoria
El SNAPSHOT de base de datos combina los datos que mantiene la BD Original + los cambios sucedidos desde la creacin del snapshot, cada base de datos es independiente, y los datos que necesita leer, residirn en su propia rea de memoria, ejemplo:
La BD Original en el momento de creacin del Snapshot tena 100 pginas. Con el paso del tiempo de la original se borraron 30 pginas, por lo que en la Snapshot se registraron las 30 pginas "cambiadas".

Al realizar lecturas de pginas suceder lo siguiente:


Lecturas en la BD Snapshot de la tabla original devolver 100 pginas, y en su rea de memoria contendr las 100 pginas. Lecturas en la BD Original leern las 70 pginas, y en su rea de memoria contendr las 70 pginas.

Copyright 2012, SQL PASS Chile. All rights reserved.

Professional Association for SQL Server

Tpicos Avanzados
Sparse Files

Copyright 2012, SQL PASS Chile. All rights reserved.

Professional Association for SQL Server

Referencias
Books on line
http://msdn.microsoft.com/en-us/library/ms175158.aspx

Tech Net
http://technet.microsoft.com/en-us/library/bb418432(SQL.10).aspx

Copyright 2012, SQL PASS Chile. All rights reserved.

Professional Association for SQL Server

Preguntas?

Hctor Meza Salgado


Arquitecto de Software www.sqlpasschile.cl
hector.meza@sqlpasschile.cl

You might also like