Planes de ejecución en SQL Server 2014



Documentos relacionados
Está por comenzar: Como leer planes de ejecución. 2 de Diciembre 2015 (8 am GMT -5) Enrique Catala

Asegurando la Calidad del Dato en mi Proyecto de BI

Descriptor del curso. Nombre del curso: Haciendo consultas en SQL Server Descripción:

1. DML. Las subconsultas

5- Uso de sentencias avanzadas

LAS SUBCONSULTAS SQL SERVER Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

Consultas con combinaciones

Base de datos I Facultad de Ingeniería. Escuela de computación.

select nombre from profesores where categoria='aso6';

8 SQL SERVER 2008 RA-MA

CONSULTAS BASICAS EN SQL SERVER

Procedimientos para agrupar y resumir datos

8 MICROSOFT SQL SERVER 2008 R2. CURSO PRÁCTICO RA-MA

6- Combinación de tablas

Procesamiento y Optimización de consultas Material Preliminar en preparación

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo.

8283: Administración y programación en Microsoft SQL Server 2012

CONSULTAS MULTITABLAS SQL SERVER Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

Tablas internas 1-12

Base de datos Procedimientos Almacenados y Funciones

Índice. iii. Objetivos... 24

Datawarehouse en tiempo real con CDC

SQL (Structured Query Language)

ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA Programación de sitios web Act 11: Reconocimiento de la unidad 3

MANUAL BÁSICO DEL LENGUAJE SQL

Son objetos cuya función es el tratamiento de varios registros exclusivamente durante la ejecución de un programa.

Conclusiones. Particionado Consciente de los Datos

DataBase Administration

ÍNDICE. Introducción... Capítulo 1. Novedades de Access

Unidad III: Lenguaje de manipulación de datos (DML) 3.1 Inserción, eliminación y modificación de registros

Capítulo 12: Indexación y asociación

CONSULTAS DE RESUMEN SQL SERVER Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

Lenguaje de Consulta Estructurado S Q. Lenguaje de Consulta Estructurado. Wael Najjar /

Fundamentos de los Bloqueos en SQL Server

OPERADORES LÓGICOS Y DE COMPARACIÓN EN PHP. PRIORIDADES. EJEMPLOS. EJERCICIOS RESUELTOS. (CU00818B)

Bases de Datos: Structured Query Language (SQL)

: COMPUTACIÓN E INFORMATICA : Ingeniería de Software Ingeniería de Redes y Comunicaciones : Administración de Bases de Datos I : T-INF127

Práctica 2 de Microsoft Access

OPTIMIZACIÓN DE CONSULTAS EN SQL. Análisis de Consultas y Transacciones Ajuste de Indices Ajuste de Consultas

Bases de Datos Relacionales

TEMA 3: EN QUÉ CONSISTE?

TUTORIAL OPERADOR CUBE

Figura 4.1 Clasificación de los lenguajes de bases de datos

MS_10774 Querying Microsoft SQL Server 2012

SYLLABUS I. DESCRIPCIÓN

BANCOS. Manejo de Bancos. Como crear una ficha de Banco? Como modificar los datos de una ficha de Banco? Como borrar una ficha de Banco?

Primeramente estudiaremos la forma básica de la sentencia SELECT, que esta formado por:

Motores MySQL. José Manuel Gómez. Departamento de Lenguajes y Sistemas Informáticos

Sub consultas avanzadas

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL

Vistas en postgresql

ST31_Querying Microsoft SQL Server

Microsoft Access 2007 (Completo)

Nociones de performance

ÍNDICE INTRODUCCIÓN...13

Tips para optimizar nuestros ETL con SSIS

BASES DE DATOS TEMA 3 MODELO ENTIDAD - RELACIÓN

Sistemas de Datos Curso: Ernesto Chinkes. Subconsultas Stored Procedures - Triggers

Esta extensión está obsoleta a partir de PHP 5.5.0, y será eliminada en el futuro

Procesamiento de Consultas. Carlos A. Olarte BDII

Entendiendo y Optimizando MySQL

Bases de Datos 2. Teórico

UNIDAD 3 ASPECTOS ASOCIADOS CON BASES DE DATOS. Diseno Físico de Bases de Datos Objetivo. 2.2 Visión General del Procesamiento de Consultas

El lenguaje SQL es un lenguaje estándar para el acceso y

T12 Vistas y tablas temporales

Tema: SUBCONSULTAS Y CREACION DE VISTAS.

Escuela Universitaria Politécnica Grado en Ingeniería Informática Fundamentos de Programación II ENUNCIADO DE PRÁCTICAS CONVOCATORIA DE SEPTIEMBRE

EJERCICIOS RESUELTOS

Entrarás a formar parte de nuestra bolsa de empleo a la que acuden las empresas en busca de nuestros alumnos.

MICROSOFT EXCEL 2007 (COMPLETO)

DISEÑO E IMPLEMENTACIÓN DE SOLUCIONES BUSINESS INTELLIGENCE CON SQL SERVER 2012

Introducción a los sistemas de bases de datos

Práctica A: Procedimientos para agrupar y resumir datos

Técnicas CA Plex Para Mejorar Rendimiento en MS SQL. 11E Eric Giron SODISA - Honduras

Seminario Profesional MS PROJECT MODULO 2: Introducción y organización de las tareas

Documento técnico Sistemas según el principio de modularidad Automatización modular con terminales de válvulas

Tema 4. Manipulación de datos con SQL

Ministerio de Educación. Base de datos en la Enseñanza. Open Office. Módulo 6: Iniciación a SQL

Informática I (Grado en Matemáticas) Práctica 1 de Excel

MICROSOFT EXCEL 2007

SSAS multidimensional mejores prácticas

4. Modelo Relacional: Manipulación de los datos.

Práctica A: Trabajo con subconsultas

Instalación del programa PSPP y obtención de una distribución de frecuencias.

- Bases de Datos - - Diseño Físico - Luis D. García

OPTIMIZACION DE CONSULTAS A BASES DE DATOS RELACIONALES

TEMA 3 PROFESOR: M.C. ALEJANDRO GUTIÉRREZ DÍAZ 2 3. PROCESAMIENTO DE CONSULTAS DISTRIBUIDAS

MATERIAL 2 EXCEL 2007

MICROSOFT EXCEL 2003

MATERIAL INSTRUCCIONAL DE APOYO

1 (2 5 puntos) Responda con brevedad y precisión a las siguientes preguntas:

3ra. Parte. Bases de Datos Relacionales

Oracle básico (IV): Programación en PL/SQL

Información importante para el proveedor de Servicios de Apoyo en el Hogar (IHSS)

Microsoft SQL Server Conceptos.

Tutorial de MS Access Un sistema de Bases de Datos Relacional. Profesores: Hugo Mora, Ignacio Casas

BASES DE DATOS SQL MÁS S DE SQL (DML) OPERADOR UNION (L30) <SELECT1> UNION <SELECT2> UNION <SELECTN> Copyright 2006, 2007 Instituto Gala

Transcripción:

Planes de ejecución en SQL Server 2014 Enrique Catala Bañuls (España) @enriquecatala MVP MCT ecatala@solidq.com www.enriquecatala.com Moderada: Freddy Angarita

Gracias a nuestros auspiciadores Database Security as Easy as A-B-C http://www.greensql.com Hardcore Developer and IT Training http://www.pluralsight.com SQL Server Performance Try PlanExplorer today! http://www.sqlsentry.com

Próximos SQL Saturday 6 de Diciembre de 2014 https://www.sqlsaturday.com/351/register.aspx 24 de Enero de 2015 https://www.sqlsaturday.com/346/register.aspx 18 de Abril de 2015 https://www.sqlsaturday.com/368/register.aspx 9 de Mayo de 2015 https://www.sqlsaturday.com/373/register.aspx

Capítulo Global PASS en Español Reuniones semanales todos los miércoles a las 12PM UTC-5 (Hora de Colombia) https://www.facebook.com/spanishpassvc 4 4

Asistencia Técnica Si requiere asistencia durante la sesión debe usar la sección de preguntas que esta en el menú de la derecha. Use el botón de Zoom para ajustar su pantalla al tamaño deseado Escriba sus preguntas en la sección de preguntas que esta en el menú de la derecha 5

Enrique Cátala Mentor en SolidQ Microsoft SQL Server MVP Ingeniero en informática Microsoft Certified Trainer (MCT), MCSE y MAP (Microsoft Active Professional). Centrado en el motor relacional SQL Server, tanto en la resolución de problemas de rendimiento y escalabilidad en sistemas OLTP como la definición e implementación de entornos de alta disponibilidad confiables, en donde ha llevado con éxito más de 90 proyectos no solo en España, sino en diferentes países como EEUU, Holanda, México, Arabia Saudí o Austria. Arquitecto principal de las soluciones para SolidQ llamadas HealthCheck, SQL2Cloud, SCODA y del generador de SSIS de SolidQ Ponente habitual del SolidQ SUMMIT, miembro y ponente en SQL PASS tanto en España como Iberoamérica ponente en varios SQLSaturday Colabora con Microsoft realizando Webcast y conferencias. Mantiene tanto su blog personal (http://www.enriquecatala.com/ ), como "El Rincón del DBA" (http://blogs.solidq.com/es/elrincondeldba ) con colegas de SolidQ. 6 6

Agenda 1. Planes de ejecución 2. Operadores 3. Cardinality estimator

Planes de ejecución Sabemos interpretarlos? Sentencia SQL Mágia Plan de ejecución Optimizador de consultas 8

Operadores Cuántos y cuales son? 11

Operadores Los básicos que debes conocer SELECT Sort Clustered Index Seek Clustered Index Scan Non-clustered index scan Non-clustered index seek Table Scan RID Lookup Key Lookup Hash Match Nested Loops Merge Join Compute Scalar Constant Scan Spool Stream Aggregate Distribute Streams Gather Streams Repartition Streams Bitmap Split Top Filter Lazy Spool Eager Spool 12

Operadores Qué son? Todo operador funciona pidiendo filas de uno o mas hijos y devolviéndolas al que se las ha pedido Caso especial Common Table Spool Cada operador devuelve de 1 fila en 1 fila *No todos 13

DEMO Operadores básicos 15

Procesamiento lógico De una consulta 1. FROM 2. WHERE 3. GROUP BY 4. HAVING 5. SELECT 1. Evaluar expresiones 2. Eliminar duplicados 6. ORDER BY 7. OFFSET-FETCH/TOP 16

Planes de ejecución Flechas 1. Analiza el grosor de las flechas 2. Compara los valores del plan estimado vs. el real Ves la diferencia en el grosor de la flecha? Estimación un poco equivocada! 17

Planes de ejecución Comparar planes Fíjate en los % de consulta 18

Operadores join Nested loops for each row R1 in the outer table for each row R2 in the inner table if R1 joins with R2 return (R1, R2) *No confundir inner table con inner join ni outer table com outer join 19

Tabla de Cursos: ID_Curso Nombre_Curso 1Paisajismo 2Fotografía 3Arte Clásico 4Matemáticas 5Física 6Química Tabla de Alumnos: ID_Alum Nombre_Aluno ID_Curso 1Luis 2 2Ana 6 3Juan 5 4Pepe 3 5Carlos 4 6Felipe 3 7Iratxe 5 8María 4 Resultado: Nombre Alumno Nombre Curso 1-Luis 2-Fotografía 4-Pepe 3-Arte Clásico 6-Felipe 3-Arte Clásico 5-Carlos 4-Matemáticas 8-María 4-Matemáticas... 20

Operadores join Merge join get first row R1 from input 1 get first row R2 from input 2 while not at the end of either input { if R1 joins with R2 { return (R1, R2) get next row R2 from input 2 } else if R1 < R2 get next row R1 from input 1 else get next row R2 from input 2 } 21

Operadores join Merge join Tabla de Cursos: ID_Curso Nombre_Curso 1Paisajismo 2Fotografía 3Arte Clásico 4Matemáticas 5Física 6Química Tabla de Alumnos: ID_Alum Nombre_Alumno ID_Curso ID_Alunos1LuísNome_Aluno ID_Cursos2 1Luís 4Pepe 23 2Ana 6Felipe 63 3Juan 5Carlos 54 4Pepe 8María 34 5Carlos 4 6Felipe 3 7Iratxe 5 8María 4 Resultado: Nombre Alumno Nombre Curso 1-Luis 2-Fotografía 4-Pepe 3-Arte Clásico 6-Felipe 3-Arte Clásico 5-Carlos 4-Matemáticas 8-María 4-Matemáticas... 22

Operadores join Hash join Ejecución en dos fases 1. Build: Cálculo de clave hash del inner 2. Prueba: Lee la outer, crea su hash y compara con hash precalculado en fase build for each row R1 in the build table { calculate hash value on R1 join key(s) insert R1 into the appropriate hash bucket } for each row R2 in the probe table { calculate hash value on R2 join key(s) for each row R1 in the corresponding hash bucket if R1 joins with R2 return (R1, R2) } 23

Nested Loop Merge Join Hash Join Recomendaciones No bloqueante Eficiencia de tabla inner (arriba) Soporta cualquier join Util cjtos pequeños No bloqueante Datos ordenados Solo equijoin Bloqueante Tabla inner muy pequeña

Propiedades

DEMO Leamos planes! 26

Operadores exchange Distribute Streams Hash Round Robin Range Broadcast Demand Los valores de filas obtienen hash y cada hilo se responsabiliza de un rango hash Los valores de las filas se envían al siguiente hilo de la lista Determina a que hilo enviar la fila evaluando una funcion de rango sobre una columna Rara y usada en algunos parallel index recreation Todas las filas se envian a todos los hilos Se usa un modo pull en lugar de push como en las otras. Envia la fila al thread que se la está pidiendo Aparece en tablas particionadas

Operadores exchange Repartition streams Consume múltiples fuentes y produce multiples fuentes No se modifican las filas Se reducen filas si aparece un operador bitmap 28

Operadores exchange Gather streams Consume múltiples hilos y produce un único hilo Combina resultados Es el que mayor % de esperas suele generar

Agenda 1. Planes de ejecución 2. Operadores 3. Cardinality estimator

Estimar selectividad del predicado Cardinality estimator El mayor cambio en el motor OnDisk desde SQL Server 7.0 Aporta el nº de registros involucrados WHERE en la sentencia (en cada paso) Estima el recuento de filas afectadas Aporta distribución de valores Aporta info distinct count Aporta info sobre duplicados 32

Cardinality estimator El mayor cambio en el motor OnDisk desde SQL Server 7.0 Se decide el algoritmo de obtención de datos Malas interpretaciones producen Malos planes de ejecución Mal rendimiento de consultas 33

Cardinality estimator Desde SQL Server 7.0 hasta SQL Server 2012 Acaso eso sucede? Independencia Distribución de datos independiente de unos campos a otros salvo que se indique lo contrario Uniformidad Los valores se distribuyen uniformemente Contenido Si algo se busca será porque existe Si una table se cruza, será porque existe el dato en ambas Inclusión El rango menor se asume contenido en el mayor En equijoin se assume que el valor existe 34

DEMO Nuevo cardinality estimator 36

Conclusión 1. Ser capaces de leer los planes de ejecución 2. Conocer el funcionamiento de los operadores mas importantes 3. Conocer algunas novedades en SQL Server 2014 37

Preguntas?

A continuación Introducción a Multidimensional Expressions (MDX) en Analysis Services Multidimensional Alan Koo

Gracias por participar