Está en la página 1de 99

SQL Server 2008 Boot Camp – Día 1

SQL Server 2008


Novedades en Transact-SQL
Información sobre versión Beta
• Toda la información es relativa a la beta pública
CTP5 de SQL Server 2008

• Comandos y funcionalidades pueden diferir de


la versión RTM final

Solid Quality Mentors 2


Agenda
• Mejoras T-SQL • Seguimiento de datos
• Constructores de fila • Captura de datos
• Parámetros de tabla modificados
• Sentencia MERGE • Seguimiento de
• INSERT sobre DML cambios
• Agrupación de conjuntos • Auditoría
(Grouping Sets) • Consejos y bloqueos
• Dependencias • Service Broker

Solid Quality Mentors 3


Mejoras T-SQL
Mejoras generales

• IntellisSense en el editor de consultas de


Transact-SQL
• Ventana de listado de errores
• Mejoras en DECLARE
• Operadores de asignación
– +=, -=, *=, /=, %=
• CONVERT
– Estilos para datos hexadecimales
• ALTER DATABASE para nivel de compatibilidad
– En lugar del procedimiento del sistema
sp_dbcmptlevel
Solid Quality Mentors 4
Mejoras T-SQL
Intellisense

• Características
– Finalización de palabras
– Sentencias resumen (outline statements)
– Subrayado de errores
– configurable
• ¿Cuando no está disponible?
– Existe un código de error sobre el cursor
– Estas dentro de un comentario
– Estas dentro de una cadena literal
– Las opciones automáticas están desactivadas

Solid Quality Mentors 5


Demo 01

Mejoras T-SQL
Solid Quality Mentors 6
Constructores de fila
Constructores de fila

• Nueva sintaxis para cláusula VALUE


– Ahora devuelve una tabla relacional con múltiples
filas

• Uso con la sentencia INSERT


– Para insertar múltiples filas como una operación
atómica

• Uso para definir una expresión de tabla virtual

Solid Quality Mentors 7


Demo 02

Constructores de fila
Solid Quality Mentors 8
Parámetros de tabla
Motivación

• Escenarios
• Actualización en lotes del servidor
• Parámetros en lote para usar en consultas
• Pasar una tabla entre rutinas
• Migración de otras bases de datos
– Los datos almacenados son tabulares!
– Criterio común
– Gran cantidad de datos pasados desde el cliente al
servidor
– Aplicación de lógica de negocio antes de actualizar
datos de forma persistente
– Ej. Data mining, sistemas de inventariado, herramientas
ETL

Solid Quality Mentors 9


Parámetros de tabla
Introducción

• Soluciones actuales
– Uso de arrays de parámetros, XML o blobs
propietarios
– Re-ensamblado de filas en el lado servidor
• Lógica de programación compleja
• Sin soporte para operaciones de conjuntos
• Bajo rendimiento debido a múltiples viajes de ida y vuelta
• Parámetros de tabla
– Tipo de datos definidos por el usuario para datos tabulares
– Paso de datos tabulares a
• Procedimientos almacenados y funciones
– Completo soporte en la pila del cliente

Solid Quality Mentors 10


Parámetros de tabla
Beneficios: empaquetado de lógica de negocio

• Procedimientos almacenados
– Procesa transacciones de negocio completas
– Un procedimiento hace todo en orden de llegada

• Mejor modelo de programación


– Programación simple
– Mejor rendimiento a través de reducción de viajes de
ida y vuelta
– Mejor manejabilidad
• Mejor lógica de negocio en procedimientos almacenados

Solid Quality Mentors 11


Parámetros de tabla
Beneficios: tipado fuerte

• Tipo de datos seguro


– Tipos de datos intercambiados con el servidor
• Información de tipos compleja
– En contraste con los parámetros escalares o los
parámetros de array
• Información de esquema esparcido por múltiples parámetros
– ej. CustomerID, CustomerName, etc.
• No se puede descubrir el tipo de datos
– ej. CustomerTableType
– Soluciones típicas
• Cadenas separadas por comas o XML
• Código complejo para capturar la solución
• Impactos de rendimiento

Solid Quality Mentors 12


Parámetros de tabla
Beneficios: rendimiento

• Reducción de los viajes de ida y vuelta al


servidor
– Puede enviarse datos potencialmente sueltos
– Transporte de datos muy grande
• Envío de múltiples lotes usando TVPs para conseguir un
buen balance entre concurrencia y rendimiento
• Operadociones basadas en conjuntos
– Ejecutar lógica de negocio en el servidor
• Transporte de datos eficiente
– El cliente puede especificar órdenes ordenadas por
clave única para mejora de la optimización de la
consulta
Solid Quality Mentors 13
Parámetros de tabla
Detalles del tipo de datos Tabla

• Tipos de tabla definidos por usuario


– Un nuevo tipo definido por el usuario
– Alineado con la definición de tabla inline para tablas
variables
– Sintaxis basada en CREATE TYPE
– Se puede usarse para la declaración de variables de
tabla
– Se puede definir índices y restricciones
– Nueva vista catalogada para tipos de datos tabla
Sys.table_types

Solid Quality Mentors 14


Parámetros de tabla
Detalles de TVPs

• Table Valued Parameter (TVP)


– Parámetros de tipo “Table Type”
– Entrada de parámetros para
• Procedimientos almacenados
• funciones
– Es necesario definirlo como READONLY
– Se necesita permiso REFERENCES en el tipo de
tabla
– Su ámbito es el cuerpo del procedimiento o función
• Sin soporte para CLR
– Las TVPs no se pueden pasar como parámetros a
procedimientos/funciones del CLR
Solid Quality Mentors 15
Parámetros de tabla
Escenarios de uso

• Actualizaciones por lotes en el servidor


– Aplicación de lógica de negocio antes de modificar
las tablas persistentes
• Parámetros por lotes usados en consultas
– Operadores orientados a conjuntos sobre datos
persistentes
• Pasar datos de tabla entre subrutinas
– Actualmente solo es posible usar tablas temporales
• Migración de otras bases de datos
– Los desarrolladores de Oracle se quejaban de esto

Solid Quality Mentors 16


Demo 03

Parámetros de tabla
Solid Quality Mentors 17
Parámetros de tabla
Soporte: soporte a pilas cliente

• Soporte desde todos los tipos de cliente


– ADO.Net
• Dentro de .NET 3.5 (Visual Studio 2008)
– SNAC: ODBC & OLEDB
– HTTP: SOAP
– Datos de tabla enlazados a memoria como parámetro
ADO.NET ODBC OLE DB

SqlParameter ahora acepta Array de buffers lincado a los Introducido IRowset que soporta
DataTable arrays de parámetros análogos buffering

– Pasar datos de fila al proveedor


ADO.NET ODBC OLE DB

DbDataReader e IEnumerable Creado en el paradigma data- IRowset específico de


<SqlDataRecord> at-execution aplicación

Solid Quality Mentors 18


Parámetros de tabla
Soporte: soporte de herramientas y replicación

• Herramientas
– Soportado desde SSMS
– Soporte SMO
– Soporte del Profiler con Replay

• Replicación
– La replicación soporta SPs que contienen TVPs
– Replicación de tipos de datos tabla

Solid Quality Mentors 19


Parámetros de tabla
Rendimiento

• Se comporta como un BCP dentro del servidor

• Basado en tablas temporales


– Puede beneficiar el cacheo de tablas temporales

• Paso de gran cantidad de datos al servidor


– Menor viajes de ida y vuelta
– Optimizaciones en TDS

Solid Quality Mentors 20


Parámetros de tabla
Rendimiento: comparación con otras tecnologías

Data Source Server Logic # of Rows Bulk TVP


File Direct Insert < 1000 X
File Direct Insert > 1000 X
File Complex < 1000 X
File Complex > 1000 X
Client Direct Insert < 1000 X
Client Direct Insert > 1000 X
Client Complex < 1000 X
Client Complex > 1000 X

File = entrada de un archivo de datos formateado en el servidor


Client = la entrada proviene de un proceso remoto
Direct Insert = una sentencia bulk insert singular
Complex = lógica adicional que no se puede manejar desde una sentencia bulk insert singular

Solid Quality Mentors 21


Parámetros de tabla
Restricciones

• No se mantienen estadísticas en columnas de


TVPs
• Soporte solo para parámetros de entrada
– Han de ser pasados como READONLY
• TVPs no pueden utilizarse como destino de
– SELECT INTO (pueden usarse como fuente)
– INSERT EXEC (pueden aparecer en el cuerpo)

Solid Quality Mentors 22


Sentencia Merge
Introducción

• Nueva sentencia MERGE


– También conocida como UPSERT (que también
soporta deletes)
– Lógica de combinación para operaciones atómicas
para
• INSERT
• UPDATE
• DELETE
– Llevar a cabo manipulaciones de datos contra
• Una tabla singular
• Una tabla fuente (o expresión de tabla)
– Concordante al SQL 2006 (con extensiones)
Solid Quality Mentors 23
Sentencia Merge
Escenarios MERGE

• Inserción o actualización OLTP (UPSERT)


• Inserción o actualización en Data warehouse
• Sincronización con fuente
– insert/update/delete

Solid Quality Mentors 24


Sentencia Merge
Vistazo a la sintaxis

• Sentencia MERGE
MERGE <source>
USING (SELECT <expression>FROM <target>) <alias>
ON <intersection>
WHEN MATCHED
THEN <UPDATE | DELETE>
WHEN TARGET NOT MATCHED [AND <conditions>]
THEN <INSERT>
WHEN SOURCE NOT MATCHED [AND <conditions>]
THEN <UPDATE | DELETE>

Solid Quality Mentors 25


Sentencia Merge
Componentes: fuente y objetivos

• MERGE INTO
– Tabla objetivo
• USING
– Tabla fuente (o expresión de tabla)
• ON
– Definición de predicado similar al join

Solid Quality Mentors 26


Sentencias Merge
Componentes: concordancia en predicados y acciones

• WHEN MATCHED [AND]


– Sentencia para lanzarse cuando se encuentra una
concordancia en el objetivo
• WHEN [TARGET] NOT MATCHED [AND]
– Sentencia a lanzarse cuando no se encuentra
concordancia en el objetivo
• WHEN SOURCE NOT MATCHED [AND]
– Sentencia a lanzarse cuando no se encuentra
concordancia en el origen

• Usar $action con la cláusula OUTPUT para


conseguir acción
Solid Quality Mentors 27
Demo 04

Sentencia MERGE
Solid Quality Mentors 28
Sentencia Merge
Limitaciones

• El destino no puede ser


– Una tabla remota
• Puede lanzarse contra un servidor remoto mediante
EXECUTE AT
– Vista particionada
• No está soportado Parametrización SIMPLE
– Solo se soporta FORCED
• Uso del hint USE PLAN no está soportado
(todavía)
• Solo se reportan el nº de filas acumulados
– Sin desglose por INSERT, UPDATE y DELETE
Solid Quality Mentors 29
Sentencia Merge
Triggers

• Los triggers relevantes de INSTEAD OF y AFTER se


activan según las acciones de la sentencia MERGE
– WHEN NOT MATCHED THEN INSERT
•  activación de triggers insert
– WHEN MATCHED THEN DELETE
•  activación de triggers delete

• Las tablas inserted y deleted solo contienen la


información relevante para la acción
– Ejemplo: En un trigger INSERT, las inserciones solo contienen
filas procesadas por la cláusula WHEN NOT MATCHED THEN
INSERT

Solid Quality Mentors 30


Sentencia Merge
Triggers (continuación)

• Los triggers están asociados a sentencias DML múltiples


se lanzan una vez por cada coincidencia
– Ej: Un trigger para insert y update se lanzan dos veces en una
sentencia MERGE que contiene acciones INSERT y UPDATE

• Los triggers INSTEAD OF han de existir para todas o


para ninguna de las acciones incluidas en la sentencia
MERGE

• No existen nuevos triggers específicos para MERGE


– La lógica de negocio, restricciones y reglas se valida como
siempre
– No necesitamos escribir nuevos triggers cuando usamos
MERGE
Solid Quality Mentors 31
Sentencia Merge
Actualizaciones no determinísticas

• La sentencia UPDATE pueden ser no determinístas


– Si un UPDATE contiene un join uno a muchos entre una fuente
y un objetivo, se elige una estrategia “random”
– El resultado es dependiente del plan de ejecución y no
determinista
• MERGE es determinista
– Restringe múltiples actualizaciones en la misma fila
– Lanza un error de ejecución cuando intenta:
• Actualizar una fila mas de una vez
• Actualizar y borrar la misma fila
– El comportamiento es predecible y consistente con otros
vendedores
– Intentos repetidos de borrar la misma fila se ignoran

Solid Quality Mentors 32


Sentencia Merge
Rendimiento

• El plan de consulta une (join) fuente y destino


– Unión optimizado como una consulta SELECT normal
– Preferible si ambas tienen un índice en las claves de une
• La mezcla tiene rendimiento óptimo cuando:
– El índice del origen es único y con cobertura
– Actualizar la misma fila mas de una vez no se permite
– El índice de unión es clustered
• Cuando un origen y un destino tienen tamaño similares, la
unión de mezcla toma el plan mas óptimo
– Ambas tablas se escanean una sola vez y no hay necesidad de
ordenación
• Cuando la fuente es mas pequeña que el destino, se opta por
un loop anidado
– La búsqueda es mas eficiente si se realiza sobre datos ordenados
Solid Quality Mentors 33
Sentencia Merge
Escenario BULK

• Meta: Mezclar eficientemente datos desde un fichero


• La fuente de un MERGE puede ser una sentencia
OPENROWSET(BULK…)
– No existe nueva sentencia BULK MERGE
– El proceso completo se realiza en un único lote
• Las operaciones están completamente logeadas
– BULK INSERT contra índices (clústered o non-clustered) son
mínimamente loggeadas solo cuando una tabla está vacía
– El objetivo de un MERGE normalmente no está vacio
– UPDATE y DELETE siempre están logeados

Solid Quality Mentors 34


Sentencia Merge
Nuevos consejos para OPENROWSET(BULK)

• El rendimiento de Merge es óptimo solo cuando la fuente


tenga las claves únicas, aunque los archivos no tengan
índices
• Nuevos consejos de OPENROWSET (BULK…) vencen las
limitaciones y permiten escenarios de mezcla de alto
rendimiento
– ORDER ( { column [ ASC | DESC ] } [ ,... n ] ) [ UNIQUE ]
• Consejos validados en tiempo de ejecución mediante una
función secuencial
– Se lanza un error si el flujo de datos no es conforme a dichos consejos
– Validación no costosa – se comparan claves actual contra anterior

• Ordenamiento y unicidad para garantizar


rendimiento eficiente sin ordenamiento al realizar
uniones
• Nuevos consejos usables desde fuera del MERGE
Solid Quality Mentors 35
INSERT sobre DML
Introducción

• Habilidad para tener


– Sentencia INSERT que consuma resultados de un DML
– Filtrado en la salida de un DML con una cláusula where
• Mejora de la cláusula OUTPUT INTO <table>

• ¿Por qué?
– Historial de dimensiones lentamente cambiantes
– Vertido de secuencias de datos DML en una tabla
secundaria para post-procesado

Solid Quality Mentors 36


INSERT sobre DML
Restricciones

• Restricciones en objetivo iguales a OUTPUT


INTO
– El objetivo debe ser una tabla local o variable
– Sin restricciones de clave ajena
– Restricciones check permitidas en Katmai
– Triggers INSTEAD OF o AFTER no permitidos
• Restricciones en predicados de filtro
– Subconsultas
– UDFs de acceso a datos
– acceso a datos full-text

Solid Quality Mentors 37


Demo 05

INSERT sobre DML


Solid Quality Mentors 38
Agrupación de conjuntos
Introducción

• Definición: un conjunto de columnas agrupadas


• Mejoras relativas a agrupación de conjuntos:
– Nueva cláusula ISO en GROUP BY
• GROUPING SETS, CUBE, ROLLUP
– Nueva función GROUPING_ID
• Identifica una asociación de agrupación de conjuntos

• Nueva sub cláusula permite un mejor


rendimiento con conjuntos de resultados
lógicamente equivalentes de múltiples de
consultas con GROUP BY
Solid Quality Mentors 39
Agrupación de conjuntos
Sub cláusulas

• Define múltiples agrupaciones en una misma


consulta
• Se usan NULLs utilizados como marcadores
• CUBE
– Abreviación para una superagrupación de conjuntos
construida desde elementos de entrada(2^n
agrupaciones de elementos para n elementos)
• ROLLUP
– Abreviación para el subconjunto de agrupación de
conjuntos que es relevante en un escenario
jerárquico ( n+1 agrupación de conjuntos para n
elementos)
Solid Quality Mentors 40
Demo 06

Agrupación de conjuntos
Solid Quality Mentors 41
Agrupación de conjuntos
Alternativa a los cubos de Analisis Services

• Nueva agrupación de conjuntos relativa a


características que te permiten materializar e
indexar agregados eficientemente en el almacén
de datos relacional

• Nueva sentencia MERGE puede usarse para


realizar actualizaciones incrementales (solo
medidas aditivas)

• Puede considerarse una alternativa a cubos


básicos de Analisis Services
Solid Quality Mentors 42
Dependencias de objetos
Introducción

• Descubrimiento de dependencias fiable


– Entre objetos
• Procedimientos almacenados, tablas, vistas, funciones,
triggers, UDTs, etc.…
• Objetos vinculados y no vinculados a esquemas

Solid Quality Mentors 43


Dependencias de objetos
Escenarios

• Descubrir todos los objetos


– Del que un objeto depende
– Que depende de un objeto
– Que depende de otra BBDD
– Realizando consultas distribuidas usando nombre de
4 partes <servidor, bd, esquema, objeto>

Solid Quality Mentors 44


Dependencias de objetos
Extensiones de catálogo
sys.sql_expression_dependencies
• Nueva vista de catálogo; reemplaza a sys.sql_dependencies
• Realiza seguimiento tanto de las que poseen esquema, como
las que no lo hacen
• Realiza seguimiento entre bases de datos y entre servidores
referenciados ( por nombre)
sys.dm_sql_referenced_entities
• Nueva función de administración dinámica; reemplaza
sp_depends
• Devuelve una fila para cada entidad referenciada por la entidad
dada
• Ej. Muéstrame todo los objetos referenciados por el PA
sys.dm_sql_referencing_entities
Nueva función de administración dinámica;
reemplaza sp_depends
• Devuelve una fila por cada entidad que referencie a la entidad
dada
• Ej. Muéstrame todos los objetos que se romperían si borro la
tabla t1
Solid Quality Mentors 45
Demo 07

Dependencias de objeto
Solid Quality Mentors 46
Introducción al seguimiento de datos
Entendiendo el cambio

• ¿Por qué estamos realmente interesados en los


cambios?

• Conocer las especificaciones del cambio es muy


valioso
– Qué cambió
– Cuándo se cambio
– Cómo se cambió
– Quién lo cambió

Solid Quality Mentors 47


Introducción al seguimiento de datos
Beneficios de entender las especificaciones de los cambios

• Provee interioridades a la raíz de las causas del


problema
• Cumple con regulaciones gubernamentales
• Mejora el proceso de toma de decisiones
• Ayuda a construir soluciones eficientes

Solid Quality Mentors 48


Introducción al seguimiento de datos
¿qué necesitas saber?

• Depende! Algunos ejemplos:


– Seguimiento de datos
• Conocer sobre los estados intermedios es importante
– Seguimiento de envío de paquetes
• No necesitas saber todos los lugares por donde pasó
– Seguimiento de cuentas bancarias
• Quieres conocer cada cambio y quién lo hizo
– Seguimiento de ventas en el mercado
• Necesitas hacer seguimiento de llamada de teléfono

Solid Quality Mentors 49


Introducción al seguimiento de datos
Ejemplos de escenarios computacionales

Procesado de • ¿Que cambios realizó John?


palabra

Servicios de Active • ¿Qué cambios de configuración ocurrieron desde la última vez que
sincronice?
Directory

• ¿Qué atributos y contenidos cambiaron?


Sistema de ficheros • ¿Quién hizo el cambio?

• Historia de todos los cambios realizados al fichero


Control fuente • ¿Fue el fichero modificado al mismo tiempo por dos personas?

• ¿Qué filas cambiaron?


Base de datos • ¿Qué columna cambió?
• ¿Quién hizo el cambio?

Solid Quality Mentors 50


Introducción al seguimiento de datos
Cambiar atributos

• ¿Qué tipos de cambios necesitamos seguir


Ámbito para responder las preguntas?

• ¿Cuánta información histórica está disponible


Dato modificado para el cambio?
• ¿Son necesarios los estados intermedios?

Información del • Cantidad de información relativa al cambio


cambio • ¿Quién hizo el cambio , como y cuándo?

Disponibilidad • ¿Cuándo esta disponible la información del


del cambio cambio?

Solid Quality Mentors 51


Introducción al seguimiento de datos
La suma de todo

• Las preguntas de las que quieres respuestas


determinan la eliminación de información que no
necesitas

• Cuantas mas respuestas necesitas, mas


seguimiento debes hacer
– Seguir una variedad de cambios
– Seguir el histórico de esos cambios
– Capturar mas información específica de dichos
cambios
– Proveer la información sobre los cambios de una
forma temporal
Solid Quality Mentors 52
Introducción al seguimiento de datos
Seguimiento de cambios de BBDD

• Proporcionar conocimientos clave en el sistema


• Ayuda a construir aplicaciones eficientes
– Auditoria
– Replicación
– Sincronización
– ETL
– Resolución de problemas

• Cada escenario requiere un nivel de información


de cambios

Solid Quality Mentors 53


Introducción al seguimiento de datos
Métodos tradicionales de seguimiento

• Provee diferentes niveles de cambio de


información
• Puede ser intrusivo
– Seguimiento basado en triggers
– Columnas temporales
– Consultas con join
– Tablas adicionales para seguimiento de borrados

• El escenario de requerimientos varia!


– La misma forma de seguimiento a todo no es el mejor
planteamiento a la hora de construir soluciones de
este tipo
Solid Quality Mentors 54
Introducción al seguimiento de datos
Características de seguimiento de datos en SQL Server 2008

Captura de • Información de seguimiento rica,


datos proveniente del log
modificados

Seguimiento de • Ligereza a la hora de proveer seguimiento


de cambios
cambios

Auditoria de • Pequeño impacto a la hora de dar


SQL información de auditoria

Solid Quality Mentors 55


Captura de modificaciones de datos
Atributos

• Todos los cambios DML


Ámbito • Información de cambios DDL para ALTER
TABLE

• Todos los cambios


Cambio de • Todas los valores de columna
datos • Imagen de antes y después de la
actualización

• Columnas actualizadas
Información de • Tipo de operación
cambio • Información transaccional

Disponibilidad • Cambios asíncronos unos segundos


del cambio después del commit

Solid Quality Mentors 56


Captura de modificaciones de datos
Conceptos clave

• Objeto fuente
– Objeto del cual quieres seguir los cambios
– De momento solo tablas
• Instancia de captura
– Cada instancia de captura crea una tabla con los
cambios
– Cada tabla puede tener 2 instancias de captura
– Diferentes instancias para capturar diferentes
esquemas

Solid Quality Mentors 57


Captura de modificaciones de datos
Conceptos clave ( continuación)

• Proceso de captura
– Lee el log de transacciones y rellena las tablas de
cambio
• Tablas de cambio
– Contienen los cambios de las tablas con seguimiento
– Esquema similar al objeto fuente
– Metadatos adicionales
• APIs de enumeración
– TVF(funciones de tabla)
– Usado para el acceso a los datos de seguimiento

Solid Quality Mentors 58


Captura de modificaciones de datos
Arquitectura

• Trabajo de agente de SQL


Server
– Aprovecha la infraestructura del
agente de lectura del log
– Consistencia transaccional en
caso de fallos
– Captura imágenes del log antes
y después
– El trabajo puede pararse para
minimizar el impacto en la fuente
• Trabajo de limpieza de
retención
– Purga las tablas con cambios
– Por defecto 72 horas
• Metadatos
– Proveen información sobre la
configuración CDC

Solid Quality Mentors 59


Captura de modificaciones de datos
Configuración

• Habilitado a nivel de base de datos


– Requiere privilegios sysadmin
– Se crea un usuario y esquema cdc

• Habilitado a nivel individual de tabla


– Requiere privilegios db_owner
– Soporta captura solo de un subconjunto de columnas
• Por razones de privacidad o rendimiento

• Soportado solo en la versión enterprise

Solid Quality Mentors 60


Captura de modificaciones de datos
Tablas de cambios: base

• Generalmente no accedido directamente


– Solo por administradores
– Acceso normal vía funciones TVF
• Seguimiento de operaciones DML
– 1 fila para insertar y borrar
– 2 filas para actualizar
• Contiene 5 columnas con metadatos adicionales
– Información perteneciente a transacciones (LSNs)
– Mascara de actualización

Solid Quality Mentors 61


Captura de modificaciones de datos
Tablas de cambios: cambios de esquema

• Insensible a las modificaciones del esquema del


objeto fuente
– Añadiendo/eliminando columnas
– Excepción
• Cambios de tipo de datos
• Catalogo de reportes de columnas modificadas (por
procesos externos)
• Usa una segunda instancia con un nuevo
esquema
– Seguimiento de cambios en ambas instancias
– Útil cuando aplicaciones o ETL no puede cambiarse
inmediatamente
Solid Quality Mentors 62
Captura de modificaciones de datos
Tablas de cambios: tamaño y rendimiento

• Pueden ponerse en un grupo de ficheros aparte


• Job de limpieza previene tamaño excesivo
– Puede configurarse
– Predeterminado cada 72 horas
• Captura solo un subconjunto de columnas
– Ej. No captura columnas LOBs

Solid Quality Mentors 63


Captura de modificaciones de datos
Acceso a los datos modificados: base

• Dos funciones de tabla (TVFs)


– Para cada tabla modificada
– Permite consultas basadas en rangos
– Opción de filtrado de filas para el filtrado del conjunto
resultado
– La consistencia del conjunto resultado se garantiza
cuando se utilizan rangos temporales

Solid Quality Mentors 64


Captura de modificaciones de datos
Acceso a los datos modificados: TVFs

• Todos los cambios TVF


– Útil para extraer todos los cambios de forma eficiente
– Opcionalmente provee una imagen antes y después
de la actualización
• Cambios TVF Net
– Identifica fielmente operaciones netas de una fila en
un rango
– Provee información sobre que columna(s) han
cambiado para la fila neta modificada
– Dependiendo de las opciones de filtrado puede
resultar una consulta mas costosa

Solid Quality Mentors 65


Captura de modificaciones de datos
Accediendo a los datos modificados: Avanzado

• Funciones avanzadas del sistema


– Provee mapeo y otras funcionalidades
• La funcion de mapeo de tiempo al LSN habilita el rango para
ser especificado usando tiempo
• Resulta fácil determinar la marca mínima y máxima para que
los cambios estén disponibles en las tablas de cambio
• Determina que columna ha cambiado, dando una máscara
de bits

Solid Quality Mentors 66


Captura de modificaciones de datos
Acceso a los datos modificados: seguridad

• Modelo de seguridad
– Acceso a los datos modificados mediante TVF´s
– Como mínimo se requiere acceso a todas las
columnas con seguimiento de la tabla base
– El rol CDC provee una capa adicional de seguridad

Solid Quality Mentors 67


Captura de modificaciones de datos
Administración

• Funciones del sistema


– Administración mediante trabajos del agente de SQL
Server
• Añadir, configurar, borrar
– Administración de tablas de cambio
• Borrado manual
• Inicio de escaneo manual
• Metadatos ricos
– Histórico de cambios DDL al esquema fuente
– Configuración de CDC, objetos fuente y tablas de cambio
– Precisión, latencia y estado actual del escaneo del log
– errores

Solid Quality Mentors 68


Captura de modificaciones de datos
Ejemplo de rendimiento

CDC (capture running) 4,8

CDC (capture stopped) 4,4

No CDC 4,3

1 1,5 2 2,5 3 3,5 4 4,5 5


tiempo de DML (en secs) para una carga mixta de 300.000 comandos

Solid Quality Mentors 69


Captura de modificaciones de datos
Consideraciones de rendimiento

• Cuenta para sobrecarga de almacenamiento


adicional
– Las tablas de cambio residen en la misma BBDD
– El subsistema de discos tendrá que soportar el coste
adicional E/S
– Se minimiza el coste del seguimiento si solo se
realiza seguimiento a las tablas y columnas
necesarias
• Almacenamiento de tablas en
– Un grupo de ficheros aparte
– En un disco separado de los archivos de datos y de
los logs
Solid Quality Mentors 70
Captura de modificaciones de datos
Consideraciones de rendimiento (continuación)

• Consultas de enumeración de cambios netos


– Son típicamente un poco mas costosas que todas las
consultas de cambios
– Las agregaciones y las mascaras de computación de
columnas requieren mas procesado

Solid Quality Mentors 71


Demo 08

Captura de modificaciones de datos (CDC)


Solid Quality Mentors 72
Seguimiento de cambios
Introducción

• ¿Qué filas han cambiado de una tabla?


– Solo necesitamos saber que fila ha cambiado
– No cuantas veces ha cambiado
– O los valores intermedios de los cambios
– Obtener el último dato directamente desde la tabla de
seguimiento
• ¿Ha cambiado una fila?
– Necesitamos saber de forma fiable si una fila ha
cambiado
– Necesitamos inmediatamente la información sobre
las modificaciones

Solid Quality Mentors 73


Seguimiento de cambios
Atributos

Ámbito • Todos lo cambios DML (Insert, Update, Delete)

• Cambios netos – una fila ha cambiado y puedes


Cambio de obtener los últimos datos
• Solo se almacenan las columnas de clave
datos primaria para identificar la fila

• Operación (Insert, Update, Delete)


Información de • Máscara de bit de columnas actualizadas
cambio • Contexto definido por la aplicación

Disponibilidad • Seguimiento inmediato mediante DML


del cambio
Solid Quality Mentors 74
Seguimiento de cambios
Escenarios

Caching
Ej. Catálogos de producto de
solo lectura Web
Service
SQL Server 2008:
Seguimiento de
Cliente(s) con cache
cambios

Guardados offline
Ej. Ordenes de producto
actualizables , modo de
cacheo de outlook, repartir el
estado de los registros
SQL Server 2008:
Seguimiento de
Cliente(s) con almacenamiento offline cambios

Solid Quality Mentors 75


Seguimiento de cambios
Arquitectura

• Los cambios se registran automáticamente


– En tablas internas del sistema
– Solo vía valores de clave primaria (con metadatos
adicionales)
– En tiempo de commit (no en el momento de la
ejecución DML)
• Se accede a los cambios
– Vía una nueva función del sistema
– Usando nuevas funciones del sistema para obtener
información de versiones

Solid Quality Mentors 76


Seguimiento de cambios
Configuración

• Habilitando a nivel de BBDD


– Comandos T-SQL DDL y SSMS
– Periodo de retención configurable
– Tarea de auto-limpieza configurable
– Recomendado nivel de aislamiento de instantánea
• Evitar problemas de concurrencia con limpieza
• Consistencia ante cambios
• Habilitando a nivel de tabla individual
– Comandos T-SQL DDL y SSMS
– Seguimiento de actualización de columnas
configurables

Solid Quality Mentors 77


Seguimiento de cambios
Acceso a datos modificados: nuevas funciones del sistemas

• Función CHANGETABLE()
– Devuelve una tabla
– Parámetro CHANGES
• Devuelve las filas modificadas basadas en una versión
específicas
• La versión ha de mantenerse llamando a la aplicación
– Parámetro VERSION
• Siempre se devuelve la última versión de las filas
• Útil para chequear versiones ante conflictos
• Otras funciones
– Para obtener versiones antiguas o actuales de una
tabla
– Para chequear mascaras de bits ante actualizaciones
Solid Quality Mentors 78
Seguimiento de cambios
Acceso a datos modificados: seguridad

• Debe tener permisos SELECT


– En al menos columnas de clave primaria
• Nuevo permiso VIEW CHANGE TRACKING
– En las tabla asegurables
– Requerido por las siguientes razones
• Los usuarios ven los valores de clave primaria después del
borrado
• Los usuarios ven que un valor ha cambiado (aunque no vean
el valor actual porque no tienen permisos)

Solid Quality Mentors 79


Seguimiento de cambios
Administración

• Periodo de retención
– Determina la cantidad de datos sobre seguimiento de
cambios almacenada
– Especificado como parte de la configuración de
BBDD
– Tarea en background del motor para realizar las
limpiezas
– Los clientes deben sincronizarse con mas frecuencia
que el periodo de retención
• Información sobre configuración
– Disponible desde SSMS y vistas del catálogo

Solid Quality Mentors 80


Seguimiento de cambios
Impacto: bases

• Una fila añadida a una tabla interna por cada


– Fila modificada
– Transacción commiteada

• En comandos DML
– Cerca del mantenimiento de índices en una tabla

Solid Quality Mentors 81


Seguimiento de cambios
Impacto: almacenamiento

• Para cada fila modificada:


– 18 bytes
– Tamaño de PK
– Hasta 128 bytes de contexto (opcionales)
– 4 bytes (columnas actualizadas)

• Para cada transacción confirmada:


– 76 bytes

Solid Quality Mentors 82


Seguimiento de cambios
Impacto: ejemplo

• Ejemplo de espacio utilizado


– 10,000 filas modificadas
– 2 filas por transacción
– 2 columnas actualizadas

– ((18 + 8 + 0 + 8) * 10000) + (76 * 10000/2) = ~700KB

Solid Quality Mentors 83


Seguimiento de cambios
Performance: DML overhead

10K Operations 10K Operations

5% 38%
INSERT INSERT
10% 10%

13% 68%
UPDATE UPDATE
11% 11%

11% 36%
DELETE DELETE
17% 17%

0% 10% 20% 0% 20% 40% 60% 80%


Second Index Change Tracking Trigger-based Tracking Change Tracking

Solid Quality Mentors 84


Seguimiento de cambios
Servicios de sincronización para ADO.NET

ADO.NET
SyncAdapter
DataAdapter

Local / SQL Database


Offline Server
Server
Store Compact

• APIs de .NET habilitadas para sincronizar los almacenes de datos


– Facilitan la creación de aplicaciones offline
– Provee un modelo de trabajo hacia cualquier almacenamiento
– Provee soporte para SQL Server CE
• Sincronización de adaptador para servidor
– Puede tomar ventaja sobre seguimiento de cambios integrados
– Evita añadir columnas, triggers y tablas; mejor rendimiento

Solid Quality Mentors 85


Demo 09

Seguimiento de cambios
Solid Quality Mentors 86
Auditoria
Introducción

• Nuevos objetos de configuración de auditoria


– Nueva configuración de auditoria por T-SQL
• Nuevos permisos para controlar la configuración de auditoria
– Ej. “ALTER ANY AUDIT”, “ALTER ANY AUDIT SPECIFICATION”
• Filtrado de auditoria basado en acciones, objetos y principales a
nivel de servidor y de BBDD
– Compatibilidad hacia atras para grupos eventos SQLTrace
– Audición para acciones Select, Insert, Update, Delete
• Cambios a Management Studio y SMO

Audit Locations
Audit File
Specification
App Log
Audit
Specification Security Log

Solid Quality Mentors 87


Seguimiento de cambios
atributos

• Intentos de login al servidor


• DML/Select
Ámbito • DDL (Create, Alter, Etc)
• Permisos (Grant, Revoke, Deny)

• Todos los cambios para entidades


Datos configuradas
cambiados • Todos los cambios para auditarlas a si
mismas

• Qué acción ocurrió


Información del • Cuándo ocurrió la acción
cambio • Quién fue el responsable
• Dónde estaba el responsable de la acción

Solid Quality Mentors 88


Auditoria
Disponibilidad

• Probablemente en CTP6
• Disponible solo en la versión Enterprise
• Ejemplos
AUDIT LOGON TO MyAuditFolder

AUDIT UPDATE(Salary)
ON dbo.Employee
TO MyAuditFolder
WHERE Salary>200000,

– Nota: sintaxis supuesta

Solid Quality Mentors 89


Seguimiento de datos en SQL 2008
Resumen
Seguimiento de Captura de datos Auditoria
cambios modificados
Ámbito DML DML Login, Logout
Ciertas DDL DML, Select
DDL
Permisos (grant, etc..)
Cambio de Cambios netos – una Todos los cambios Todos los cambios
datos fila modificada Todos los valores de Acción
Solo valores de clave columna Objetivo
primaria Correcto/fallo
Información Operación DML Operación DML Cuándo
del cambio Columnas actualizadas Columnas Actualizadas Quién
Información de transacción
Disponibilidad Inmediatamente Retraso configurable Eventos extendidos
del cambio mediante DML Trabajo de captura que lee
el log de transacciones
Escenarios Sincronización de ETL incremental para Auditoria
clave aplicaciones de ida o almacenes de datos
ida y vuelta

Ediciones Todas las ediciones Solo versión Enterprise Solo versión Enterprise
Disponibilidad CTP de noviembre CTP de Junio CTP6
Solid Quality Mentors 90
Bloqueos y consejos
Escalado de bloqueos

• Nueva opción para ALTER TABLE


• Permite deshabilitar el escalado a nivel de tabla
– En tablas particionadas se pueden habilitar bloqueos
para escalar a las particiones
• En lugar de a la tabla completa
• Puede mejorar la concurrencia reduciendo la contención por
bloqueos

Solid Quality Mentors 91


Bloqueos y consejos
Métodos de escalado de bloqueos

• AUTO
– El motor elige la granularidad de escalado apropiada
para el esquema de tabla
• Si la tabla es particionada: granularidad HoBT
• Sino : granularidad de TABLA
• TABLE
– Escalado granulado a nivel de tabla
– Mismo comportamiento que en SQL Server 2005
– Método por defecto
• DISABLE
– Previene el escalado de bloqueo en la mayoría de los
casos
Solid Quality Mentors 92
Bloqueos y consejos
FORCESEEK

• Nuevo hint FORCESEEK


– Fuerza las búsquedas por índices en la tabla
– Trabaja con índices clustered y non-clustered
– Facilita al optimizador de consultas su uso
• Intersección de índices (predicados AND)
• Uniones por índices (predicados OR)
– Puede ayudar a consultas que usan LIKE e IN
• Problema usualmente por pésima estimación de cardinalidad
– Si se usa en una vista, se propaga
• Los consejos de índice se ignoran
• Error si todas las tablas base no tienen como mínimo un
índice cada una

Solid Quality Mentors 93


Bloqueos y consejos
Ejemplo FORCESEEK

• Ejemplo y detalles en BOL

can

Solid Quality Mentors 94


Bloqueos y consejos
Mejores prácticas FORCESEEK

• Antes de usarlo
– Asegura que las estadísticas estén actualizadas y fiables!
– Habilita la auto creación/actualización manual
– Evaluación de cardinalidad pobre en estimaciones de
coste
– Los consejos siempre limitan las elecciones del
optimización
• No usar
– Consejo INDEX(0) con FORCESEEK
• Fuerza un escaneo de la tabla base para el que no se
encuentra ningún plan (error)
– Consejo USE PLAN con FORCESEEK
• El último se ignora
Solid Quality Mentors 95
Bloqueos y consejos
Consejos de tabla en consejos de consulta

• Nuevo consejo de consulta TABLE HINT


– Permite especificar hints de tabla como hints de
consulta
– Apunta a objetos específicos
– Uso recomendado en contextos de plan guides
– Puede causar que la semántica de la consulta varíe
– Asegurarse de entender todas las implicaciones
• Consejos que afectan a la semántica
• Consejos que no afectan a la semántica
– Bien documentado con muchos ejemplos en BOL

Solid Quality Mentors 96


Service Broker
Mejoras

• Diagnósticos
• Prioridades de conversación

Solid Quality Mentors 97


Novedades en Transact-SQL
• Preguntas y respuestas

Solid Quality Mentors 98


Links de SQL Server 2008
• Sitio web de SQL Server 2008
– http://www.microsoft.com/sql/2008

• Ejemplos de SQL Server 2008


– http://www.codeplex.com/SqlServerSamples

Solid Quality Mentors 99

También podría gustarte