SlideShare una empresa de Scribd logo
1 de 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
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

Más contenido relacionado

La actualidad más candente (10)

Informatica presentacion(adrianadamian)
Informatica presentacion(adrianadamian)Informatica presentacion(adrianadamian)
Informatica presentacion(adrianadamian)
 
Algoritmo
AlgoritmoAlgoritmo
Algoritmo
 
Expo_Int
Expo_IntExpo_Int
Expo_Int
 
Fundamentos de Programacion - Unidad 5 arreglos (vectores)
Fundamentos de Programacion - Unidad 5 arreglos (vectores)Fundamentos de Programacion - Unidad 5 arreglos (vectores)
Fundamentos de Programacion - Unidad 5 arreglos (vectores)
 
Manual hp2
Manual hp2Manual hp2
Manual hp2
 
Tarea 1 bash
Tarea 1 bashTarea 1 bash
Tarea 1 bash
 
Sql
SqlSql
Sql
 
Introduccion clips
Introduccion clipsIntroduccion clips
Introduccion clips
 
HTML5 API WebSQL Database: Funciones de agregado
HTML5 API WebSQL Database: Funciones de agregadoHTML5 API WebSQL Database: Funciones de agregado
HTML5 API WebSQL Database: Funciones de agregado
 
Manejo y programación de la calculadora hp50g
Manejo y programación de la calculadora hp50gManejo y programación de la calculadora hp50g
Manejo y programación de la calculadora hp50g
 

Destacado

24 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 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
SpanishPASSVC
 
WebCast de optimización Sql Server - Almacenamiento e Índices
WebCast de optimización Sql Server - Almacenamiento e ÍndicesWebCast de optimización Sql Server - Almacenamiento e Índices
WebCast de optimización Sql Server - Almacenamiento e Índices
JOSE AHIAS LOPEZ PORTILLO
 

Destacado (20)

24 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 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
 
SQL 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 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
 
Indices columnares | SolidQ Summit 2012
Indices columnares | SolidQ Summit 2012Indices columnares | SolidQ Summit 2012
Indices columnares | SolidQ Summit 2012
 
Creacion de indices y constraints en sql server
Creacion de indices y constraints en sql serverCreacion de indices y constraints en sql server
Creacion de indices y constraints en sql server
 
Novedades en seguridad en SQL Server 2012 v1 | SolidQ Summit 2012
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
 
Escribiendo código T-SQL eficientemente
Escribiendo código T-SQL eficientementeEscribiendo código T-SQL eficientemente
Escribiendo código T-SQL eficientemente
 
Creación de aplicaciones de bases de datos con MS SQL Server 2012
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
 
Diplomado Técnico SQL Server 2012 - Sesión 6/8
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
 
Toolbox SQL Server para optimización
Toolbox SQL Server para optimizaciónToolbox SQL Server para optimización
Toolbox SQL Server para optimización
 
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
BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos
 
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...
Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...
 
Planes de ejecución 1
Planes de ejecución 1Planes de ejecución 1
Planes de ejecución 1
 
WebCast de optimización Sql Server - Almacenamiento e Índices
WebCast de optimización Sql Server - Almacenamiento e ÍndicesWebCast de optimización Sql Server - Almacenamiento e Índices
WebCast de optimización Sql Server - Almacenamiento e Índices
 
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...
Diseño de aplicaciones de bases de datos empresariales robustas con MS SQL Se...
 
Novedades SQL Server 2012 para desarrolladores
Novedades SQL Server 2012 para desarrolladoresNovedades SQL Server 2012 para desarrolladores
Novedades SQL Server 2012 para desarrolladores
 
MS SQL Server 2012 SP1 para desarrolladores
MS SQL Server 2012 SP1 para desarrolladoresMS SQL Server 2012 SP1 para desarrolladores
MS SQL Server 2012 SP1 para desarrolladores
 
Novedades 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 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
 
Experiencias de migraciones a sql server 2012-2014
Experiencias de migraciones a sql server 2012-2014 Experiencias de migraciones a sql server 2012-2014
Experiencias de migraciones a sql server 2012-2014
 
Agrupando datos en SQL Server
Agrupando datos en SQL ServerAgrupando datos en SQL Server
Agrupando datos en SQL Server
 
Fundamentos 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 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
 

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

Fundamentos de computación(ICM) en octave
Fundamentos de computación(ICM) en octaveFundamentos de computación(ICM) en octave
Fundamentos de computación(ICM) en octave
Gabriel Romero
 
Algoritmos y clase
Algoritmos y claseAlgoritmos y clase
Algoritmos y clase
daosma
 

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

Fundamentos de programación en scilab
Fundamentos de programación en scilabFundamentos de programación en scilab
Fundamentos de programación en scilab
 
Lista de Comandos
Lista de ComandosLista de Comandos
Lista de Comandos
 
Comandos de Raptor,C# y Java
Comandos de Raptor,C# y JavaComandos de Raptor,C# y Java
Comandos de Raptor,C# y Java
 
Enunc tp350-2017-1
Enunc tp350-2017-1Enunc tp350-2017-1
Enunc tp350-2017-1
 
Módulo 4 (sin estilo)
Módulo 4 (sin estilo)Módulo 4 (sin estilo)
Módulo 4 (sin estilo)
 
Módulo 4
Módulo 4Módulo 4
Módulo 4
 
Módulo 4
Módulo 4Módulo 4
Módulo 4
 
Comandos
ComandosComandos
Comandos
 
Compilacion parcial
Compilacion parcialCompilacion parcial
Compilacion parcial
 
Cuestionario video
Cuestionario videoCuestionario video
Cuestionario video
 
Lenguaje c
Lenguaje cLenguaje c
Lenguaje c
 
Unidad 2 arquitectura del computador
Unidad 2 arquitectura del computadorUnidad 2 arquitectura del computador
Unidad 2 arquitectura del computador
 
Fundamentos de computación(ICM) en octave
Fundamentos de computación(ICM) en octaveFundamentos de computación(ICM) en octave
Fundamentos de computación(ICM) en octave
 
Algoritmos y programas ing civil
Algoritmos y programas ing civil Algoritmos y programas ing civil
Algoritmos y programas ing civil
 
Generación código intermedio 2
Generación código intermedio 2Generación código intermedio 2
Generación código intermedio 2
 
01 alp u3
01 alp u301 alp u3
01 alp u3
 
Algoritmos y Diagramas de flujo.ppt
Algoritmos y Diagramas de flujo.pptAlgoritmos y Diagramas de flujo.ppt
Algoritmos y Diagramas de flujo.ppt
 
algoritmos3.ppt
algoritmos3.pptalgoritmos3.ppt
algoritmos3.ppt
 
Algoritmos y clase
Algoritmos y claseAlgoritmos y clase
Algoritmos y clase
 
Lenguaje transact sql
Lenguaje transact sqlLenguaje transact sql
Lenguaje transact sql
 

Más de Enrique Catala Bañuls

Más de Enrique Catala Bañuls (20)

Sql server ha muerto, larga vida a sql server
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 server
 
Capas de acceso a datos .net escalables de verdad contra SQL Server
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
 
Paralelismo en SQL Server
Paralelismo en SQL ServerParalelismo en SQL Server
Paralelismo en SQL Server
 
Aplicando R al análisis de rendimiento de un servidor
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 servidor
 
Técnicas avanzadas para resolver tus problemas de sql server
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...
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...
 
Planes de ejecución 3.0 sql 2016 y v next
Planes de ejecución 3.0 sql 2016 y v nextPlanes de ejecución 3.0 sql 2016 y v next
Planes de ejecución 3.0 sql 2016 y v next
 
Paralelismo en sql server
Paralelismo en sql serverParalelismo en sql server
Paralelismo en sql server
 
Aplicando R al análisis de rendimiento de un servidor
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 servidor
 
Query store
Query storeQuery store
Query store
 
Planes de ejecucion 2016
Planes de ejecucion 2016Planes de ejecucion 2016
Planes de ejecucion 2016
 
Sql server 2016 novedades para desarrolladores
Sql server 2016 novedades para desarrolladoresSql server 2016 novedades para desarrolladores
Sql server 2016 novedades para desarrolladores
 
Dawarehouse como servicio en azure (sqldw)
Dawarehouse como servicio en azure (sqldw)Dawarehouse como servicio en azure (sqldw)
Dawarehouse como servicio en azure (sqldw)
 
Query store
Query storeQuery store
Query store
 
Planes de ejecucion 2
Planes de ejecucion 2Planes de ejecucion 2
Planes de ejecucion 2
 
Migración a sql server 2016
Migración a sql server 2016Migración a sql server 2016
Migración a sql server 2016
 
Datawarehouse como servicio en azure (sqldw)
Datawarehouse como servicio en azure (sqldw)Datawarehouse como servicio en azure (sqldw)
Datawarehouse como servicio en azure (sqldw)
 
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)
Como hacer tuning a capas de acceso a datos en .NET (dotNetConference2016)
 
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...
HERRAMIENTA CASE PARA MODELADO DE ALMACENES DE DATOS BASADA EN LENGUAJES ESPE...
 
SQLCLR: .NET en el core de sql server
SQLCLR: .NET en el core de sql serverSQLCLR: .NET en el core de sql server
SQLCLR: .NET en el core de sql server
 

Último

REPORTE DE HOMICIDIO DOLOSO IRAPUATO ABRIL 2024
REPORTE DE HOMICIDIO DOLOSO IRAPUATO ABRIL 2024REPORTE DE HOMICIDIO DOLOSO IRAPUATO ABRIL 2024
REPORTE DE HOMICIDIO DOLOSO IRAPUATO ABRIL 2024
IrapuatoCmovamos
 
metodo SOAP utilizado para evaluar el estado de un paciente
metodo SOAP utilizado para evaluar el estado de un pacientemetodo SOAP utilizado para evaluar el estado de un paciente
metodo SOAP utilizado para evaluar el estado de un paciente
MedicinaInternaresid1
 
Letra de cambio definición y características.ppt
Letra de cambio definición y características.pptLetra de cambio definición y características.ppt
Letra de cambio definición y características.ppt
ssuserbdc329
 

Último (20)

Alfredo Gabriel Rodriguez Yajure Tarea#1
Alfredo Gabriel Rodriguez Yajure Tarea#1Alfredo Gabriel Rodriguez Yajure Tarea#1
Alfredo Gabriel Rodriguez Yajure Tarea#1
 
MARCO TEORICO, SEMINARIO DE INVESTIGACION,
MARCO TEORICO, SEMINARIO DE INVESTIGACION,MARCO TEORICO, SEMINARIO DE INVESTIGACION,
MARCO TEORICO, SEMINARIO DE INVESTIGACION,
 
Los primeros 60 países por IDH en el año (2024).pdf
Los primeros 60 países por IDH en el año (2024).pdfLos primeros 60 países por IDH en el año (2024).pdf
Los primeros 60 países por IDH en el año (2024).pdf
 
biometria hematica y hemostasia y preanalitica.pptx
biometria hematica y hemostasia y preanalitica.pptxbiometria hematica y hemostasia y preanalitica.pptx
biometria hematica y hemostasia y preanalitica.pptx
 
P.P ANÁLISIS DE UN TEXTO BÍBLICO. TEMA 10.pptx
P.P ANÁLISIS DE UN TEXTO BÍBLICO. TEMA 10.pptxP.P ANÁLISIS DE UN TEXTO BÍBLICO. TEMA 10.pptx
P.P ANÁLISIS DE UN TEXTO BÍBLICO. TEMA 10.pptx
 
REPORTE DE HOMICIDIO DOLOSO IRAPUATO ABRIL 2024
REPORTE DE HOMICIDIO DOLOSO IRAPUATO ABRIL 2024REPORTE DE HOMICIDIO DOLOSO IRAPUATO ABRIL 2024
REPORTE DE HOMICIDIO DOLOSO IRAPUATO ABRIL 2024
 
Porcentaje de población blanca europea en Europa Occidental (1923-2024).pdf
Porcentaje de población blanca europea en Europa Occidental (1923-2024).pdfPorcentaje de población blanca europea en Europa Occidental (1923-2024).pdf
Porcentaje de población blanca europea en Europa Occidental (1923-2024).pdf
 
6.3 Hidrologia Geomorfologia Cuenca.pptx
6.3 Hidrologia Geomorfologia Cuenca.pptx6.3 Hidrologia Geomorfologia Cuenca.pptx
6.3 Hidrologia Geomorfologia Cuenca.pptx
 
PRESENTACIÓN DR. ÓSCAR CABRERA - Visión Económica de El Salvador.pptx
PRESENTACIÓN DR. ÓSCAR CABRERA - Visión Económica de El Salvador.pptxPRESENTACIÓN DR. ÓSCAR CABRERA - Visión Económica de El Salvador.pptx
PRESENTACIÓN DR. ÓSCAR CABRERA - Visión Económica de El Salvador.pptx
 
metodo SOAP utilizado para evaluar el estado de un paciente
metodo SOAP utilizado para evaluar el estado de un pacientemetodo SOAP utilizado para evaluar el estado de un paciente
metodo SOAP utilizado para evaluar el estado de un paciente
 
Perú en el ranking mundial, segun datos mineria
Perú en el ranking mundial, segun datos mineriaPerú en el ranking mundial, segun datos mineria
Perú en el ranking mundial, segun datos mineria
 
Las familias más ricas de África en el año (2024).pdf
Las familias más ricas de África en el año (2024).pdfLas familias más ricas de África en el año (2024).pdf
Las familias más ricas de África en el año (2024).pdf
 
CUADRO COMPARATIVO DE ARCHIVOS Y CARPETAS.pptx
CUADRO COMPARATIVO DE ARCHIVOS Y CARPETAS.pptxCUADRO COMPARATIVO DE ARCHIVOS Y CARPETAS.pptx
CUADRO COMPARATIVO DE ARCHIVOS Y CARPETAS.pptx
 
aine-2014.pdf/tipos de aines-clasificación
aine-2014.pdf/tipos de aines-clasificaciónaine-2014.pdf/tipos de aines-clasificación
aine-2014.pdf/tipos de aines-clasificación
 
Letra de cambio definición y características.ppt
Letra de cambio definición y características.pptLetra de cambio definición y características.ppt
Letra de cambio definición y características.ppt
 
EPIDEMIO CANCER PULMON resumen nnn.pptx
EPIDEMIO CANCER PULMON  resumen nnn.pptxEPIDEMIO CANCER PULMON  resumen nnn.pptx
EPIDEMIO CANCER PULMON resumen nnn.pptx
 
diseño de una linea de produccion de jabon liquido.pptx
diseño de una linea de produccion de jabon liquido.pptxdiseño de una linea de produccion de jabon liquido.pptx
diseño de una linea de produccion de jabon liquido.pptx
 
Análisis del Modo y Efecto de Fallas AMEF.ppt
Análisis del Modo y Efecto de Fallas AMEF.pptAnálisis del Modo y Efecto de Fallas AMEF.ppt
Análisis del Modo y Efecto de Fallas AMEF.ppt
 
Los idiomas más hablados en el mundo (2024).pdf
Los idiomas más hablados en el mundo  (2024).pdfLos idiomas más hablados en el mundo  (2024).pdf
Los idiomas más hablados en el mundo (2024).pdf
 
Principales Retos Demográficos de Puerto Rico
Principales Retos Demográficos de Puerto RicoPrincipales Retos Demográficos de Puerto Rico
Principales Retos Demográficos de Puerto Rico
 

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

Notas del editor

  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