Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Agenda
Mejoras T-SQL Constructores de fila Parmetros de tabla Sentencia MERGE INSERT sobre DML Agrupacin de conjuntos (Grouping Sets) Dependencias Seguimiento de datos Captura de datos modificados Seguimiento de cambios Auditora Consejos y bloqueos Service Broker
Mejoras T-SQL
Mejoras generales
IntellisSense en el editor de consultas de Transact-SQL Ventana de listado de errores Mejoras en DECLARE Operadores de asignacin
+=, -=, *=, /=, %=
CONVERT
Estilos para datos hexadecimales
Mejoras T-SQL
Intellisense
Caractersticas
Finalizacin de palabras Sentencias resumen (outline statements) Subrayado de errores configurable Existe un cdigo de error sobre el cursor Estas dentro de un comentario Estas dentro de una cadena literal Las opciones automticas estn desactivadas
5
Demo 01
Mejoras T-SQL
Solid Quality Mentors
Constructores de fila
Constructores de fila
Demo 02
Constructores de fila
Solid Quality Mentors
Parmetros de tabla
Motivacin
Escenarios
Actualizacin en lotes del servidor Parmetros en lote para usar en consultas Pasar una tabla entre rutinas Migracin de otras bases de datos
Parmetros de tabla
Introduccin
Soluciones actuales
Uso de arrays de parmetros, XML o blobs propietarios Re-ensamblado de filas en el lado servidor
Lgica de programacin compleja Sin soporte para operaciones de conjuntos Bajo rendimiento debido a mltiples viajes de ida y vuelta
Parmetros de tabla
Tipo de datos definidos por el usuario para datos tabulares Paso de datos tabulares a
Procedimientos almacenados y funciones
10
Parmetros de tabla
Beneficios: empaquetado de lgica de negocio
Procedimientos almacenados
Procesa transacciones de negocio completas Un procedimiento hace todo en orden de llegada
11
Parmetros de tabla
Beneficios: tipado fuerte
Soluciones tpicas
Cadenas separadas por comas o XML Cdigo complejo para capturar la solucin Impactos de rendimiento
Solid Quality Mentors
12
Parmetros de tabla
Beneficios: rendimiento
13
Parmetros de tabla
Detalles del tipo de datos Tabla
14
Parmetros de tabla
Detalles de TVPs
Es necesario definirlo como READONLY Se necesita permiso REFERENCES en el tipo de tabla Su mbito es el cuerpo del procedimiento o funcin
15
Parmetros de tabla
Escenarios de uso
16
Demo 03
Parmetros de tabla
Solid Quality Mentors
17
Parmetros de tabla
Soporte: soporte a pilas cliente
SNAC: ODBC & OLEDB HTTP: SOAP Datos de tabla enlazados a memoria como parmetro
ADO.NET SqlParameter ahora acepta DataTable ODBC Array de buffers lincado a los arrays de parmetros anlogos OLE DB Introducido IRowset que soporta buffering
Parmetros de tabla
Soporte: soporte de herramientas y replicacin
Herramientas
Soportado desde SSMS Soporte SMO Soporte del Profiler con Replay
Replicacin
La replicacin soporta SPs que contienen TVPs Replicacin de tipos de datos tabla
19
Parmetros de tabla
Rendimiento
20
Parmetros de tabla
Rendimiento: comparacin con otras tecnologas
Data Source File File File Server Logic Direct Insert Direct Insert Complex # of Rows < 1000 > 1000 < 1000 Bulk X X X TVP
File
Client Client Client Client
Complex
Direct Insert Direct Insert Complex Complex
> 1000
< 1000 > 1000 < 1000 > 1000
X
X X X 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 = lgica adicional que no se puede manejar desde una sentencia bulk insert singular
21
Parmetros de tabla
Restricciones
22
Sentencia Merge
Introduccin
23
Sentencia Merge
Escenarios MERGE
Insercin o actualizacin OLTP (UPSERT) Insercin o actualizacin en Data warehouse Sincronizacin con fuente
insert/update/delete
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>
25
Sentencia Merge
Componentes: fuente y objetivos
MERGE INTO
Tabla objetivo
USING
Tabla fuente (o expresin de tabla)
ON
Definicin de predicado similar al join
26
Sentencias Merge
Componentes: concordancia en predicados y acciones
27
Demo 04
Sentencia MERGE
Solid Quality Mentors
28
Sentencia Merge
Limitaciones
Vista particionada
Uso del hint USE PLAN no est soportado (todava) 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 segn las acciones de la sentencia MERGE
WHEN NOT MATCHED THEN INSERT
activacin de triggers insert
Las tablas inserted y deleted solo contienen la informacin relevante para la accin
Ejemplo: En un trigger INSERT, las inserciones solo contienen filas procesadas por la clusula WHEN NOT MATCHED THEN INSERT
30
Sentencia Merge
Triggers (continuacin)
Los triggers estn asociados a sentencias DML mltiples 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
31
Sentencia Merge
Actualizaciones no determinsticas
MERGE es determinista
Restringe mltiples actualizaciones en la misma fila Lanza un error de ejecucin 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
Cuando un origen y un destino tienen tamao similares, la unin de mezcla toma el plan mas ptimo
Ambas tablas se escanean una sola vez y no hay necesidad de ordenacin
Cuando la fuente es mas pequea que el destino, se opta por un loop anidado
La bsqueda 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
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 ]
Ordenamiento y unicidad para garantizar rendimiento eficiente sin ordenamiento al realizar uniones
Nuevos consejos usables desde fuera del MERGE
Solid Quality Mentors
35
Por qu?
Historial de dimensiones lentamente cambiantes Vertido de secuencias de datos DML en una tabla secundaria para post-procesado
36
37
Demo 05
38
Agrupacin de conjuntos
Introduccin
Nueva sub clusula permite un mejor rendimiento con conjuntos de resultados lgicamente equivalentes de mltiples de consultas con GROUP BY
Solid Quality Mentors
39
Agrupacin de conjuntos
Sub clusulas
Define mltiples agrupaciones en una misma consulta Se usan NULLs utilizados como marcadores CUBE
Abreviacin para una superagrupacin de conjuntos construida desde elementos de entrada(2^n agrupaciones de elementos para n elementos)
ROLLUP
Abreviacin para el subconjunto de agrupacin de conjuntos que es relevante en un escenario jerrquico ( n+1 agrupacin de conjuntos para n elementos)
Solid Quality Mentors
40
Demo 06
Agrupacin de conjuntos
Solid Quality Mentors
41
Agrupacin de conjuntos
Alternativa a los cubos de Analisis Services
Nueva agrupacin de conjuntos relativa a caractersticas que te permiten materializar e indexar agregados eficientemente en el almacn de datos relacional
Nueva sentencia MERGE puede usarse para realizar actualizaciones incrementales (solo medidas aditivas)
Puede considerarse una alternativa a cubos bsicos de Analisis Services
Solid Quality Mentors
42
Dependencias de objetos
Introduccin
43
Dependencias de objetos
Escenarios
44
Dependencias de objetos
Extensiones de catlogo sys.sql_expression_dependencies Nueva vista de catlogo; 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 funcin de administracin dinmica; reemplaza sp_depends Devuelve una fila para cada entidad referenciada por la entidad dada Ej. Mustrame todo los objetos referenciados por el PA sys.dm_sql_referencing_entities
Nueva funcin de administracin dinmica; reemplaza sp_depends Devuelve una fila por cada entidad que referencie a la entidad dada Ej. Mustrame todos los objetos que se romperan si borro la tabla t1
Solid Quality Mentors
45
Demo 07
Dependencias de objeto
Solid Quality Mentors
46
Por qu estamos realmente interesados en los cambios? Conocer las especificaciones del cambio es muy valioso
Qu cambi Cundo se cambio Cmo se cambi Quin lo cambi
47
Provee interioridades a la raz de las causas del problema Cumple con regulaciones gubernamentales Mejora el proceso de toma de decisiones Ayuda a construir soluciones eficientes
48
49
Procesado de palabra Servicios de Active Directory Sistema de ficheros Control fuente Base de datos
Solid Quality Mentors
Historia de todos los cambios realizados al fichero Fue el fichero modificado al mismo tiempo por dos personas?
50
mbito
Cunta informacin histrica est disponible para el cambio? Son necesarios los estados intermedios? Cantidad de informacin relativa al cambio Quin hizo el cambio , como y cundo?
Las preguntas de las que quieres respuestas determinan la eliminacin de informacin que no necesitas Cuantas mas respuestas necesitas, mas seguimiento debes hacer
Seguir una variedad de cambios Seguir el histrico de esos cambios Capturar mas informacin especfica de dichos cambios Proveer la informacin sobre los cambios de una forma temporal
Solid Quality Mentors
52
53
54
Auditoria de SQL
Solid Quality Mentors
55
mbito
Cambio de datos Informacin de cambio Disponibilidad del cambio
Solid Quality Mentors
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
57
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 enumeracin
TVF(funciones de tabla) Usado para el acceso a los datos de seguimiento
Solid Quality Mentors
58
Metadatos
Proveen informacin sobre la configuracin CDC
59
60
61
62
Pueden ponerse en un grupo de ficheros aparte Job de limpieza previene tamao excesivo
Puede configurarse Predeterminado cada 72 horas
63
64
65
66
Modelo de seguridad
Acceso a los datos modificados mediante TVFs Como mnimo se requiere acceso a todas las columnas con seguimiento de la tabla base El rol CDC provee una capa adicional de seguridad
67
Metadatos ricos
Histrico de cambios DDL al esquema fuente Configuracin de CDC, objetos fuente y tablas de cambio Precisin, latencia y estado actual del escaneo del log errores
68
4,8
4,4
No CDC
4,3
1,5
2,5
3,5
4,5
tiempo de DML (en secs) para una carga mixta de 300.000 comandos
69
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
71
Demo 08
72
Seguimiento de cambios
Introduccin
73
Seguimiento de cambios
Atributos
mbito
Cambio de datos Informacin de cambio Disponibilidad del cambio
Solid Quality Mentors
Cambios netos una fila ha cambiado y puedes obtener los ltimos datos Solo se almacenan las columnas de clave primaria para identificar la fila Operacin (Insert, Update, Delete) Mscara de bit de columnas actualizadas Contexto definido por la aplicacin
74
Seguimiento de cambios
Escenarios
Caching
Ej. Catlogos de producto de solo lectura Web Service
Cliente(s) con cache SQL Server 2008: Seguimiento de cambios
Guardados offline
Ej. Ordenes de producto actualizables , modo de cacheo de outlook, repartir el estado de los registros
Cliente(s) con almacenamiento offline
Solid Quality Mentors
Seguimiento de cambios
Arquitectura
76
Seguimiento de cambios
Configuracin
77
Seguimiento de cambios
Acceso a datos modificados: nuevas funciones del sistemas
Funcin CHANGETABLE()
Devuelve una tabla Parmetro CHANGES
Devuelve las filas modificadas basadas en una versin especficas La versin ha de mantenerse llamando a la aplicacin
Parmetro VERSION
Siempre se devuelve la ltima versin 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
79
Seguimiento de cambios
Administracin
Periodo de retencin
Determina la cantidad de datos sobre seguimiento de cambios almacenada Especificado como parte de la configuracin de BBDD Tarea en background del motor para realizar las limpiezas Los clientes deben sincronizarse con mas frecuencia que el periodo de retencin
80
Seguimiento de cambios
Impacto: bases
En comandos DML
Cerca del mantenimiento de ndices en una tabla
81
Seguimiento de cambios
Impacto: almacenamiento
82
Seguimiento de cambios
Impacto: ejemplo
83
Seguimiento de cambios
Performance: DML overhead
10K Operations 5%
INSERT INSERT
10% 13%
UPDATE UPDATE
11% 11%
DELETE
17% 0%
Second Index
Solid Quality Mentors
10%
20%
Change Tracking
Trigger-based Tracking
Change Tracking
84
Seguimiento de cambios
Servicios de sincronizacin para ADO.NET
Database Server
85
Demo 09
Seguimiento de cambios
Solid Quality Mentors
86
Auditoria
Introduccin
Audit
Audit Specification Audit Specification
Solid Quality Mentors
Locations
File App Log Security Log
87
Seguimiento de cambios
atributos
Intentos de login al servidor DML/Select DDL (Create, Alter, Etc) Permisos (Grant, Revoke, Deny)
mbito
Datos cambiados
Todos los cambios para entidades configuradas Todos los cambios para auditarlas a si mismas
Qu accin ocurri Cundo ocurri la accin Quin fue el responsable Dnde estaba el responsable de la accin
88
Auditoria
Disponibilidad
89
Cambio de datos
Cambios netos una fila modificada Solo valores de clave primaria Operacin DML Columnas actualizadas
Todos los cambios Todos los valores de columna Operacin DML Columnas Actualizadas Informacin de transaccin
Eventos extendidos
Auditoria
Ediciones Disponibilidad
Solid Quality Mentors
Bloqueos y consejos
Escalado de bloqueos
Nueva opcin 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 contencin por bloqueos
91
Bloqueos y consejos
Mtodos 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 Mtodo por defecto
DISABLE
Previene el escalado de bloqueo en la mayora de los casos
Solid Quality Mentors
92
Bloqueos y consejos
FORCESEEK
93
Bloqueos y consejos
Ejemplo FORCESEEK
can
94
Bloqueos y consejos
Mejores prcticas FORCESEEK
Antes de usarlo
Asegura que las estadsticas estn actualizadas y fiables! Habilita la auto creacin/actualizacin manual Evaluacin de cardinalidad pobre en estimaciones de coste Los consejos siempre limitan las elecciones del optimizacin
No usar
Consejo INDEX(0) con FORCESEEK
Fuerza un escaneo de la tabla base para el que no se encuentra ningn plan (error)
95
Bloqueos y consejos
Consejos de tabla en consejos de consulta
96
Service Broker
Mejoras
97
Novedades en Transact-SQL
Preguntas y respuestas
98
99