Como leer planes de ejecución - edición 2015

Enrique Catala Bañuls
Enrique Catala BañulsTechnical Leader at @SolidQ and Microsoft Data Platform MVP
Como leer planes de
ejecución
Enrique Catala Bañuls
MVP , Mentor SolidQ
ecatala@solidq.com | enrique@enriquecatala.com
Twitter: @enriquecatala
www.enriquecatala.com
3 Sponsor Sessions at 11:15
 Don’t miss them, they might be getting
distributing some awesome prizes!
 HP
 SolidQ
 Pyramid Analytics
 Also Raffle prizes at the end of the
event provided by
HP, SolidQ, Pyramid Analytics, Altran &
Microsoft
Our Main Sponsors:
Agenda
 Repaso rápido
 Generación de planes
 Procesamiento lógico
 Operadores join
 Operadore exchange
 Demos!
Planes de ejecución
¿Sabemos interpretarlos?
5
Optimizador de
consultas
Sentencia SQL Plan de ejecución
Mágia
Generación de plan de ejecución
 El optimizador utiliza dos tipos de clave
 Tiempo E/S: Coste de leer páginas de un
subsistema de disco
 Tiempo CPU: Coste de aplicar predicados y tuplas
en memoria
Estimación de costes
Generación de plan de ejecución
 En cada join, se incrementa
exponencialmente el nº de soluciones
posibles
Cuidado con el timeout!
Visualizar plan de ejecución
SELECT *
FROM dbo.Pedidos p
INNER JOIN dbo.Items i
ON p.ID_Pedido = i.ID_Pedido
INNER JOIN dbo.Clientes c
ON p.ID_Cliente = c.ID_Cliente
INNER JOIN dbo.Produtos p
ON i.ID_Produto = p.ID_Produto
Para no Clikear
presionar CTRL-L
Operadores
¿Qué son?
10
 Casi todo operador funciona pidiendo
filas de uno o mas hijos y devolviéndolas
al que se las ha pedido
Caso especial
Common Table Spool
Operadores columnares
 Cada operador devuelve de 1 fila en 1
fila
 *No todos
Planes de ejecución
Flechas
11
¿Ves la diferencia en el grosor de la flecha? 
Estimación un poco equivocada! 
1. Analiza el grosor de las flechas
2. Compara los valores del plan estimado vs. el real
Planes de ejecución
Comparar planes
12
 Fíjate en los % de consulta
Operadores join
Nested loops
13
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
Operadores join
Merge join
14
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
}
Operadores join
Hash join
15
 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)
}
EQ_ROWS = Cantidad de líneas que poseen el último valor de la muestra
Ej: Existen 64 líneas para la mostra 111 (línea 5)
DISTINCT_RANGE_ROWS = Cantidad de valores distintos dentro de un intervalo. El
valor de RANGE_HI_KEY está EXCLUIDO
Ej: En la línea 5 (108 hasta 110) tenemos 3 valores distintos
Debería llamarse DISTINCT_RANGE_VALUES
AVG_RANGE_ROWS = Media de valores en el rango (RANGE_ROWS/ DISTINCT_RANGE_ROWS)
Ej: En la linea 5 tenemos 160 / 3 = 53,33333
RANGE_HI_KEY = Valor clave de cada muestra
Ej: En la línea 5 tenemos el valor 111 que va de 108 (107 (Línea 4)
+ 1) hasta 111
RANGE_ROWS = Cantidad de líneas que poseen valores iguales a los de la muestra
excluyendo el valor de RANGE_HI_KEY
Ej: La línea 5 va de 108 a 110 (excluyendo el valor
111(RANGE_HI_KEY)). Dentro de este rango tenemos 160 líneas
El valor buscado (110) está entre las líneas 4 y
5
SELECT *
FROM Items1
WHERE Quantity = 110
DBCC SHOW_STATISTICS (Items1, Stats_Quantity) WITH HISTOGRAM
DBCC SHOW_STATISTICS
DEMO
18
Leamos planes!
Propiedades
Sort
Propiedades
Sort
Propiedades
Key lookup
Propiedades
Operador paralelo
Operadores exchange
Distribute Streams
Hash
Los valores de
filas obtienen
hash y cada hilo
se
responsabiliza
de un rango
hash
Round
Robin
Los valores de
las filas se
envían al
siguiente hilo de
la lista
Range
Determina a que
hilo enviar la fila
evaluando una
funcion de
rango sobre una
columna
Rara y usada en
algunos parallel
index recreation
Broadcast
Todas las filas
se envian a
todos los hilos
Demand
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
24
 Consume múltiples fuentes y produce multiples fuentes
 No se modifican las filas
 Se reducen filas si aparece un operador bitmap
Operadores exchange
Gather streams
 Consume múltiples hilos y produce un único hilo
 Combina resultados
 Es el que mayor % de esperas suele generar
Procesamiento lógico
De una consulta
26
1. FROM
2. WHERE
3. GROUP BY
4. HAVING
5. SELECT
1. Evaluar expresiones
2. Eliminar duplicados
6. ORDER BY
7. OFFSET-FETCH/TOP
Conclusión
27
1. Repasar aspectos fundamentales de operadores
2. Ser capaces de leer los planes de ejecución mas
habituales
Como leer planes de
ejecución
Enrique Catala Bañuls
MVP , Mentor SolidQ
ecatala@solidq.com | enrique@enriquecatala.com
Twitter: @enriquecatala
www.enriquecatala.com
1 of 26

Recommended

Como leer planes de ejecución by
Como leer planes de ejecuciónComo leer planes de ejecución
Como leer planes de ejecuciónEnrique Catala Bañuls
3.7K views24 slides
Planes de ejecucion 1 by
Planes de ejecucion 1Planes de ejecucion 1
Planes de ejecucion 1Enrique Catala Bañuls
1.2K views23 slides
Planes de ejecución en sql server 2014 by
Planes de ejecución en sql server 2014Planes de ejecución en sql server 2014
Planes de ejecución en sql server 2014Enrique Catala Bañuls
936 views30 slides
Optimiza tus queries desde abajo by
Optimiza tus queries desde abajoOptimiza tus queries desde abajo
Optimiza tus queries desde abajoEnrique Catala Bañuls
1.9K views28 slides
Como leer planes de ejecución by
Como leer planes de ejecuciónComo leer planes de ejecución
Como leer planes de ejecuciónSpanishPASSVC
1.1K views19 slides
Practicas4 Secuencia de Repetición For loop by
Practicas4 Secuencia de Repetición For loopPracticas4 Secuencia de Repetición For loop
Practicas4 Secuencia de Repetición For loopSaul Olaf Loaiza Meléndez
1.1K views4 slides

More Related Content

What's hot

Informatica presentacion(adrianadamian) by
Informatica presentacion(adrianadamian)Informatica presentacion(adrianadamian)
Informatica presentacion(adrianadamian)Adriana Damián
247 views18 slides
Algoritmo by
AlgoritmoAlgoritmo
Algoritmojose alejandro betancourt
23 views1 slide
Expo_Int by
Expo_IntExpo_Int
Expo_IntRogDer
459 views28 slides
Fundamentos de Programacion - Unidad 5 arreglos (vectores) by
Fundamentos de Programacion - Unidad 5 arreglos (vectores)Fundamentos de Programacion - Unidad 5 arreglos (vectores)
Fundamentos de Programacion - Unidad 5 arreglos (vectores)José Antonio Sandoval Acosta
1.9K views26 slides
Manual hp2 by
Manual hp2Manual hp2
Manual hp2ANDRES DIAZ
558 views39 slides
Tarea 1 bash by
Tarea 1 bashTarea 1 bash
Tarea 1 bashDiana Cobos
377 views14 slides

Viewers also liked

24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala by
24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala
24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique CatalaSpanishPASSVC
553 views35 slides
SQL Saturday 254 10- Cosas que no se deben de hacer en una BD by
SQL Saturday 254   10- Cosas que no se deben de hacer en una BDSQL Saturday 254   10- Cosas que no se deben de hacer en una BD
SQL Saturday 254 10- Cosas que no se deben de hacer en una BDAdrian Miranda
910 views25 slides
Indices columnares | SolidQ Summit 2012 by
Indices columnares | SolidQ Summit 2012Indices columnares | SolidQ Summit 2012
Indices columnares | SolidQ Summit 2012SolidQ
473 views27 slides
Creacion de indices y constraints en sql server by
Creacion de indices y constraints en sql serverCreacion de indices y constraints en sql server
Creacion de indices y constraints en sql serverZeleneMorita
492 views17 slides
Novedades en seguridad en SQL Server 2012 v1 | SolidQ Summit 2012 by
Novedades en seguridad en SQL Server 2012 v1 | SolidQ Summit 2012Novedades en seguridad en SQL Server 2012 v1 | SolidQ Summit 2012
Novedades en seguridad en SQL Server 2012 v1 | SolidQ Summit 2012SolidQ
1.3K views28 slides
Escribiendo código T-SQL eficientemente by
Escribiendo código T-SQL eficientementeEscribiendo código T-SQL eficientemente
Escribiendo código T-SQL eficientementeJoseph Lopez
914 views64 slides

Viewers also liked(20)

24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala by SpanishPASSVC
24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala
24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala
SpanishPASSVC553 views
SQL Saturday 254 10- Cosas que no se deben de hacer en una BD by Adrian Miranda
SQL Saturday 254   10- Cosas que no se deben de hacer en una BDSQL Saturday 254   10- Cosas que no se deben de hacer en una BD
SQL Saturday 254 10- Cosas que no se deben de hacer en una BD
Adrian Miranda910 views
Indices columnares | SolidQ Summit 2012 by SolidQ
Indices columnares | SolidQ Summit 2012Indices columnares | SolidQ Summit 2012
Indices columnares | SolidQ Summit 2012
SolidQ473 views
Creacion de indices y constraints en sql server by ZeleneMorita
Creacion de indices y constraints en sql serverCreacion de indices y constraints en sql server
Creacion de indices y constraints en sql server
ZeleneMorita492 views
Novedades en seguridad en SQL Server 2012 v1 | SolidQ Summit 2012 by SolidQ
Novedades en seguridad en SQL Server 2012 v1 | SolidQ Summit 2012Novedades en seguridad en SQL Server 2012 v1 | SolidQ Summit 2012
Novedades en seguridad en SQL Server 2012 v1 | SolidQ Summit 2012
SolidQ1.3K views
Escribiendo código T-SQL eficientemente by Joseph Lopez
Escribiendo código T-SQL eficientementeEscribiendo código T-SQL eficientemente
Escribiendo código T-SQL eficientemente
Joseph Lopez914 views
Creación de aplicaciones de bases de datos con MS SQL Server 2012 by Joseph Lopez
Creación de aplicaciones de bases de datos con MS SQL Server 2012Creación de aplicaciones de bases de datos con MS SQL Server 2012
Creación de aplicaciones de bases de datos con MS SQL Server 2012
Joseph Lopez795 views
Diplomado Técnico SQL Server 2012 - Sesión 6/8 by John Bulla
Diplomado Técnico SQL Server 2012 - Sesión 6/8Diplomado Técnico SQL Server 2012 - Sesión 6/8
Diplomado Técnico SQL Server 2012 - Sesión 6/8
John Bulla858 views
Toolbox SQL Server para optimización by SolidQ
Toolbox SQL Server para optimizaciónToolbox SQL Server para optimización
Toolbox SQL Server para optimización
SolidQ352 views
BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos by SolidQ
BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos
BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos
SolidQ3K views
Buenas prácticas de codificación para capas de acceso a datos de aplicaciones... by SolidQ
Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...
Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...
SolidQ7.3K views
Planes de ejecución 1 by SolidQ
Planes de ejecución 1Planes de ejecución 1
Planes de ejecución 1
SolidQ234 views
Diseño de aplicaciones de bases de datos empresariales robustas con MS SQL Se... by Joseph Lopez
Diseño de aplicaciones de bases de datos empresariales robustas con MS SQL Se...Diseño de aplicaciones de bases de datos empresariales robustas con MS SQL Se...
Diseño de aplicaciones de bases de datos empresariales robustas con MS SQL Se...
Joseph Lopez1.5K views
MS SQL Server 2012 SP1 para desarrolladores by Joseph Lopez
MS SQL Server 2012 SP1 para desarrolladoresMS SQL Server 2012 SP1 para desarrolladores
MS SQL Server 2012 SP1 para desarrolladores
Joseph Lopez2.6K views
Novedades en el manejo de Grandes volúmenes de datos con SQL Server 2014 by Enrique Puig
Novedades en el manejo de Grandes volúmenes de datos con SQL Server 2014Novedades en el manejo de Grandes volúmenes de datos con SQL Server 2014
Novedades en el manejo de Grandes volúmenes de datos con SQL Server 2014
Enrique Puig1.5K views
Fundamentos en el diseño de bases de datos con MS SQL Server 2012 by Joseph Lopez
Fundamentos en el diseño de bases de datos con MS SQL Server 2012Fundamentos en el diseño de bases de datos con MS SQL Server 2012
Fundamentos en el diseño de bases de datos con MS SQL Server 2012
Joseph Lopez1.7K views

Similar to Como leer planes de ejecución - edición 2015

Fundamentos de programación en scilab by
Fundamentos de programación en scilabFundamentos de programación en scilab
Fundamentos de programación en scilabGabriel Romero
89.5K views51 slides
Lista de Comandos by
Lista de ComandosLista de Comandos
Lista de ComandosElizabeth Reyna
383 views31 slides
Comandos de Raptor,C# y Java by
Comandos de Raptor,C# y JavaComandos de Raptor,C# y Java
Comandos de Raptor,C# y JavaAna Ruth G H
405 views16 slides
Enunc tp350-2017-1 by
Enunc tp350-2017-1Enunc tp350-2017-1
Enunc tp350-2017-1Pablo Mora
140 views8 slides
Módulo 4 (sin estilo) by
Módulo 4 (sin estilo)Módulo 4 (sin estilo)
Módulo 4 (sin estilo)Emiliano Siracusa
394 views29 slides
Módulo 4 by
Módulo 4Módulo 4
Módulo 4Emiliano Siracusa
152 views29 slides

Similar to Como leer planes de ejecución - edición 2015(20)

Fundamentos de programación en scilab by Gabriel Romero
Fundamentos de programación en scilabFundamentos de programación en scilab
Fundamentos de programación en scilab
Gabriel Romero89.5K views
Comandos de Raptor,C# y Java by Ana Ruth G H
Comandos de Raptor,C# y JavaComandos de Raptor,C# y Java
Comandos de Raptor,C# y Java
Ana Ruth G H405 views
Enunc tp350-2017-1 by Pablo Mora
Enunc tp350-2017-1Enunc tp350-2017-1
Enunc tp350-2017-1
Pablo Mora140 views
Unidad 2 arquitectura del computador by Cristhixn Leon
Unidad 2 arquitectura del computadorUnidad 2 arquitectura del computador
Unidad 2 arquitectura del computador
Cristhixn Leon3.1K views
Fundamentos de computación(ICM) en octave by Gabriel Romero
Fundamentos de computación(ICM) en octaveFundamentos de computación(ICM) en octave
Fundamentos de computación(ICM) en octave
Gabriel Romero12.1K views
Algoritmos y Diagramas de flujo.ppt by DjJoss
Algoritmos y Diagramas de flujo.pptAlgoritmos y Diagramas de flujo.ppt
Algoritmos y Diagramas de flujo.ppt
DjJoss5 views
Algoritmos y clase by daosma
Algoritmos y claseAlgoritmos y clase
Algoritmos y clase
daosma7.8K views

More from Enrique Catala Bañuls

Sql server ha muerto, larga vida a sql server by
Sql server ha muerto, larga vida a sql serverSql server ha muerto, larga vida a sql server
Sql server ha muerto, larga vida a sql serverEnrique Catala Bañuls
303 views51 slides
Capas de acceso a datos .net escalables de verdad contra SQL Server by
Capas de acceso a datos .net escalables de verdad contra SQL ServerCapas de acceso a datos .net escalables de verdad contra SQL Server
Capas de acceso a datos .net escalables de verdad contra SQL ServerEnrique Catala Bañuls
534 views27 slides
Paralelismo en SQL Server by
Paralelismo en SQL ServerParalelismo en SQL Server
Paralelismo en SQL ServerEnrique Catala Bañuls
386 views30 slides
Aplicando R al análisis de rendimiento de un servidor by
Aplicando R al análisis de rendimiento de un servidorAplicando R al análisis de rendimiento de un servidor
Aplicando R al análisis de rendimiento de un servidorEnrique Catala Bañuls
152 views20 slides
Técnicas avanzadas para resolver tus problemas de sql server by
Técnicas avanzadas para resolver tus problemas de sql serverTécnicas avanzadas para resolver tus problemas de sql server
Técnicas avanzadas para resolver tus problemas de sql serverEnrique Catala Bañuls
1.7K views28 slides
Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el... by
Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el...Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el...
Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el...Enrique Catala Bañuls
1.4K views26 slides

More from Enrique Catala Bañuls(20)

Capas de acceso a datos .net escalables de verdad contra SQL Server by Enrique Catala Bañuls
Capas de acceso a datos .net escalables de verdad contra SQL ServerCapas de acceso a datos .net escalables de verdad contra SQL Server
Capas de acceso a datos .net escalables de verdad contra SQL Server
Técnicas avanzadas para resolver tus problemas de sql server by Enrique Catala Bañuls
Técnicas avanzadas para resolver tus problemas de sql serverTécnicas avanzadas para resolver tus problemas de sql server
Técnicas avanzadas para resolver tus problemas de sql server
Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el... by Enrique Catala Bañuls
Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el...Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el...
Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el...
Como hacer tuning a capas de acceso a datos en .NET (dotNetConference2016) by Enrique Catala Bañuls
Como hacer tuning a capas de acceso a datos en .NET (dotNetConference2016)Como hacer tuning a capas de acceso a datos en .NET (dotNetConference2016)
Como hacer tuning a capas de acceso a datos en .NET (dotNetConference2016)
HERRAMIENTA CASE PARA MODELADO DE ALMACENES DE DATOS BASADA EN LENGUAJES ESPE... by Enrique Catala Bañuls
HERRAMIENTA CASE PARA MODELADO DE ALMACENES DE DATOS BASADA EN LENGUAJES ESPE...HERRAMIENTA CASE PARA MODELADO DE ALMACENES DE DATOS BASADA EN LENGUAJES ESPE...
HERRAMIENTA CASE PARA MODELADO DE ALMACENES DE DATOS BASADA EN LENGUAJES ESPE...

Recently uploaded

BOLETIN AGORA CONSULTORIAS COMPARATIVO DELITOS DE MAYOR IMPACTO SOCIAL E... by
BOLETIN AGORA CONSULTORIAS  COMPARATIVO DELITOS  DE  MAYOR IMPACTO  SOCIAL  E...BOLETIN AGORA CONSULTORIAS  COMPARATIVO DELITOS  DE  MAYOR IMPACTO  SOCIAL  E...
BOLETIN AGORA CONSULTORIAS COMPARATIVO DELITOS DE MAYOR IMPACTO SOCIAL E...Orlando Hernandez
301 views25 slides
Portafolio acción psicosocial y trabajo.pdf by
Portafolio acción psicosocial y trabajo.pdfPortafolio acción psicosocial y trabajo.pdf
Portafolio acción psicosocial y trabajo.pdfadela928205
12 views94 slides
Análisis de preguntas Grafotécnicas by
Análisis de preguntas GrafotécnicasAnálisis de preguntas Grafotécnicas
Análisis de preguntas GrafotécnicasShuduSnuff
5 views8 slides
BOLETIN AGΩRA CONSULTORIAS DELITOS DE MAYOR IMPACTO SOCIAL EN COLOMBIA ... by
BOLETIN AGΩRA CONSULTORIAS  DELITOS  DE  MAYOR IMPACTO  SOCIAL  EN  COLOMBIA ...BOLETIN AGΩRA CONSULTORIAS  DELITOS  DE  MAYOR IMPACTO  SOCIAL  EN  COLOMBIA ...
BOLETIN AGΩRA CONSULTORIAS DELITOS DE MAYOR IMPACTO SOCIAL EN COLOMBIA ...Orlando Hernandez
14 views20 slides
Santo Grial (2).pptx by
Santo Grial (2).pptxSanto Grial (2).pptx
Santo Grial (2).pptxVictorCarreteroMoren
22 views14 slides
GRUPO1_ TAREA N3.pdf by
GRUPO1_ TAREA N3.pdfGRUPO1_ TAREA N3.pdf
GRUPO1_ TAREA N3.pdfVictorMendozaLlaja
9 views20 slides

Recently uploaded(20)

BOLETIN AGORA CONSULTORIAS COMPARATIVO DELITOS DE MAYOR IMPACTO SOCIAL E... by Orlando Hernandez
BOLETIN AGORA CONSULTORIAS  COMPARATIVO DELITOS  DE  MAYOR IMPACTO  SOCIAL  E...BOLETIN AGORA CONSULTORIAS  COMPARATIVO DELITOS  DE  MAYOR IMPACTO  SOCIAL  E...
BOLETIN AGORA CONSULTORIAS COMPARATIVO DELITOS DE MAYOR IMPACTO SOCIAL E...
Orlando Hernandez301 views
Portafolio acción psicosocial y trabajo.pdf by adela928205
Portafolio acción psicosocial y trabajo.pdfPortafolio acción psicosocial y trabajo.pdf
Portafolio acción psicosocial y trabajo.pdf
adela92820512 views
Análisis de preguntas Grafotécnicas by ShuduSnuff
Análisis de preguntas GrafotécnicasAnálisis de preguntas Grafotécnicas
Análisis de preguntas Grafotécnicas
ShuduSnuff5 views
BOLETIN AGΩRA CONSULTORIAS DELITOS DE MAYOR IMPACTO SOCIAL EN COLOMBIA ... by Orlando Hernandez
BOLETIN AGΩRA CONSULTORIAS  DELITOS  DE  MAYOR IMPACTO  SOCIAL  EN  COLOMBIA ...BOLETIN AGΩRA CONSULTORIAS  DELITOS  DE  MAYOR IMPACTO  SOCIAL  EN  COLOMBIA ...
BOLETIN AGΩRA CONSULTORIAS DELITOS DE MAYOR IMPACTO SOCIAL EN COLOMBIA ...
Proyecto Tercer Periodo Informática - 9-2 -1.pdf56 by DanielDavila95
Proyecto Tercer Periodo Informática - 9-2 -1.pdf56Proyecto Tercer Periodo Informática - 9-2 -1.pdf56
Proyecto Tercer Periodo Informática - 9-2 -1.pdf56
DanielDavila9520 views
FUTBOL-CLUB-BARCELONA-CLUB-DE-FORMACION-.pdf by juliagili
FUTBOL-CLUB-BARCELONA-CLUB-DE-FORMACION-.pdfFUTBOL-CLUB-BARCELONA-CLUB-DE-FORMACION-.pdf
FUTBOL-CLUB-BARCELONA-CLUB-DE-FORMACION-.pdf
juliagili7 views
Taller Fundamentos de Electricidad y Electrónica..pdf by angelica gutierrez
Taller Fundamentos de Electricidad y Electrónica..pdfTaller Fundamentos de Electricidad y Electrónica..pdf
Taller Fundamentos de Electricidad y Electrónica..pdf
Desarrollo de Habilidades de Pensamiento tecnologia.docx by Saritaxuvu
Desarrollo de Habilidades de Pensamiento tecnologia.docxDesarrollo de Habilidades de Pensamiento tecnologia.docx
Desarrollo de Habilidades de Pensamiento tecnologia.docx
Saritaxuvu10 views
Informe What Worries the World_Resumen global - Octubre 2023.pdf by AproximacionAlFuturo
Informe What Worries the World_Resumen global - Octubre 2023.pdfInforme What Worries the World_Resumen global - Octubre 2023.pdf
Informe What Worries the World_Resumen global - Octubre 2023.pdf

Como leer planes de ejecución - edición 2015

  • 1. Como leer planes de ejecución Enrique Catala Bañuls MVP , Mentor SolidQ ecatala@solidq.com | enrique@enriquecatala.com Twitter: @enriquecatala www.enriquecatala.com
  • 2. 3 Sponsor Sessions at 11:15  Don’t miss them, they might be getting distributing some awesome prizes!  HP  SolidQ  Pyramid Analytics  Also Raffle prizes at the end of the event provided by HP, SolidQ, Pyramid Analytics, Altran & Microsoft
  • 4. Agenda  Repaso rápido  Generación de planes  Procesamiento lógico  Operadores join  Operadore exchange  Demos!
  • 5. Planes de ejecución ¿Sabemos interpretarlos? 5 Optimizador de consultas Sentencia SQL Plan de ejecución Mágia
  • 6. Generación de plan de ejecución  El optimizador utiliza dos tipos de clave  Tiempo E/S: Coste de leer páginas de un subsistema de disco  Tiempo CPU: Coste de aplicar predicados y tuplas en memoria Estimación de costes
  • 7. Generación de plan de ejecución  En cada join, se incrementa exponencialmente el nº de soluciones posibles Cuidado con el timeout!
  • 8. Visualizar plan de ejecución SELECT * FROM dbo.Pedidos p INNER JOIN dbo.Items i ON p.ID_Pedido = i.ID_Pedido INNER JOIN dbo.Clientes c ON p.ID_Cliente = c.ID_Cliente INNER JOIN dbo.Produtos p ON i.ID_Produto = p.ID_Produto Para no Clikear presionar CTRL-L
  • 9. Operadores ¿Qué son? 10  Casi todo operador funciona pidiendo filas de uno o mas hijos y devolviéndolas al que se las ha pedido Caso especial Common Table Spool Operadores columnares  Cada operador devuelve de 1 fila en 1 fila  *No todos
  • 10. Planes de ejecución Flechas 11 ¿Ves la diferencia en el grosor de la flecha?  Estimación un poco equivocada!  1. Analiza el grosor de las flechas 2. Compara los valores del plan estimado vs. el real
  • 11. Planes de ejecución Comparar planes 12  Fíjate en los % de consulta
  • 12. Operadores join Nested loops 13 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
  • 13. Operadores join Merge join 14 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 }
  • 14. Operadores join Hash join 15  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) }
  • 15. EQ_ROWS = Cantidad de líneas que poseen el último valor de la muestra Ej: Existen 64 líneas para la mostra 111 (línea 5) DISTINCT_RANGE_ROWS = Cantidad de valores distintos dentro de un intervalo. El valor de RANGE_HI_KEY está EXCLUIDO Ej: En la línea 5 (108 hasta 110) tenemos 3 valores distintos Debería llamarse DISTINCT_RANGE_VALUES AVG_RANGE_ROWS = Media de valores en el rango (RANGE_ROWS/ DISTINCT_RANGE_ROWS) Ej: En la linea 5 tenemos 160 / 3 = 53,33333 RANGE_HI_KEY = Valor clave de cada muestra Ej: En la línea 5 tenemos el valor 111 que va de 108 (107 (Línea 4) + 1) hasta 111 RANGE_ROWS = Cantidad de líneas que poseen valores iguales a los de la muestra excluyendo el valor de RANGE_HI_KEY Ej: La línea 5 va de 108 a 110 (excluyendo el valor 111(RANGE_HI_KEY)). Dentro de este rango tenemos 160 líneas El valor buscado (110) está entre las líneas 4 y 5 SELECT * FROM Items1 WHERE Quantity = 110 DBCC SHOW_STATISTICS (Items1, Stats_Quantity) WITH HISTOGRAM DBCC SHOW_STATISTICS
  • 21. Operadores exchange Distribute Streams Hash Los valores de filas obtienen hash y cada hilo se responsabiliza de un rango hash Round Robin Los valores de las filas se envían al siguiente hilo de la lista Range Determina a que hilo enviar la fila evaluando una funcion de rango sobre una columna Rara y usada en algunos parallel index recreation Broadcast Todas las filas se envian a todos los hilos Demand 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
  • 22. Operadores exchange Repartition streams 24  Consume múltiples fuentes y produce multiples fuentes  No se modifican las filas  Se reducen filas si aparece un operador bitmap
  • 23. Operadores exchange Gather streams  Consume múltiples hilos y produce un único hilo  Combina resultados  Es el que mayor % de esperas suele generar
  • 24. Procesamiento lógico De una consulta 26 1. FROM 2. WHERE 3. GROUP BY 4. HAVING 5. SELECT 1. Evaluar expresiones 2. Eliminar duplicados 6. ORDER BY 7. OFFSET-FETCH/TOP
  • 25. Conclusión 27 1. Repasar aspectos fundamentales de operadores 2. Ser capaces de leer los planes de ejecución mas habituales
  • 26. Como leer planes de ejecución Enrique Catala Bañuls MVP , Mentor SolidQ ecatala@solidq.com | enrique@enriquecatala.com Twitter: @enriquecatala www.enriquecatala.com

Editor's Notes

  1. Select * from sys.dm_exec_query_optimizer_info Where counter in('optimizations, trivial plan', 'search 0', 'search 1', 'search 2') Order by counter
  2. Los operadores de tipo índice columnar y los de tipo Exchange paralelos, que funcionan enviando paquetes de filas
  3. Esto es mucho mas frecuente de lo que parece. ¡Actualiza tus estadísticas!
  4. Es el operador mas sencillo Es un doble bucle
  5. Lee simultáneamente las dos entradas Ambas entradas deben estar ordenadas
  6. 37’ Si se estima menos memoria para hash, aparecen los temidos hash warnings…
  7. Notas Hash Join: -La existencia de Hash Join cuando la tabla inner no es sustancialmente menor típicamente indica que falta algun filtro. -Hay que estar vigilantes ante Hash Warning Events – Profiler -Altamente ineficiente si las tablas son muy grandes
  8. Esto es necesario para entender la demo
  9. Estimated CPU Cost Coste de uso de CPU por el operador. Este número debe ser el menor posible. Estimated I/O Cost Coste de toda la actividad de I/O realizada por el operador. Este número debe ser el menor posible. Estimated Operator Cost Coste para el optimizador de consultas al ejecutar esta operación. Muestra entre paréntesis el porcentaje total del coste del operador en relación a todo el plan. Estimated Number of Executions Estimación del número de veces que el operador será ejecutado en el plan. Estimated Number of Rows Estimación del número de filas que el operador devolverá. Estimated Row Size Media estimada del tamaño del registro (en bytes) leido por el operador. Estimated SubTree Cost Suma del coste de todos los operadores ejecutados antes de este operador.
  10. Estimated CPU Cost Coste de uso de CPU por el operador. Este número debe ser el menor posible. Estimated I/O Cost Coste de toda la actividad de I/O realizada por el operador. Este número debe ser el menor posible. Estimated Operator Cost Coste para el optimizador de consultas al ejecutar esta operación. Muestra entre paréntesis el porcentaje total del coste del operador en relación a todo el plan. Estimated Number of Executions Estimación del número de veces que el operador será ejecutado en el plan. Estimated Number of Rows Estimación del número de filas que el operador devolverá. Estimated Row Size Media estimada del tamaño del registro (en bytes) leido por el operador. Estimated SubTree Cost Suma del coste de todos los operadores ejecutados antes de este operador.
  11. Estimated CPU Cost Coste de uso de CPU por el operador. Este número debe ser el menor posible. Estimated I/O Cost Coste de toda la actividad de I/O realizada por el operador. Este número debe ser el menor posible. Estimated Operator Cost Coste para el optimizador de consultas al ejecutar esta operación. Muestra entre paréntesis el porcentaje total del coste del operador en relación a todo el plan. Estimated Number of Executions Estimación del número de veces que el operador será ejecutado en el plan. Estimated Number of Rows Estimación del número de filas que el operador devolverá. Estimated Row Size Media estimada del tamaño del registro (en bytes) leido por el operador. Estimated SubTree Cost Suma del coste de todos los operadores ejecutados antes de este operador.
  12. Estimated CPU Cost Coste de uso de CPU por el operador. Este número debe ser el menor posible. Estimated I/O Cost Coste de toda la actividad de I/O realizada por el operador. Este número debe ser el menor posible. Estimated Operator Cost Coste para el optimizador de consultas al ejecutar esta operación. Muestra entre paréntesis el porcentaje total del coste del operador en relación a todo el plan. Estimated Number of Executions Estimación del número de veces que el operador será ejecutado en el plan. Estimated Number of Rows Estimación del número de filas que el operador devolverá. Estimated Row Size Media estimada del tamaño del registro (en bytes) leido por el operador. Estimated SubTree Cost Suma del coste de todos los operadores ejecutados antes de este operador.
  13. Esto es importantísimo para entender los planes de ejecución