SlideShare una empresa de Scribd logo
#SQSummit
Planes de ejecución 1
Eladio Rincón (erincon@solidq.com)
Créditos:
Enrique Catalá Bañuls
ecatala@solidq.com
Sponsors del SolidQ Summit Panamá
Agenda
• Repaso rápido
• Demos!
¿Sabemos interpretarlos?
Optimizador de
consultas
Sentencia SQL Plan de ejecución
Mágia
Planes de ejecución en SQL Server
Existe en
plan caché?
Compilar y optimizar
query
Ejecucion query
Fin de ejecución
NO
Ejecutar query
Necesario
recompilar?
NO
Query Store
Obtener plan de caché
SI
SI
Enviar texto y plan
Nuevo plan forzado
Obtener plan forzado
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
Generación de plan de ejecución
• Stage 0
• Reglas básicas de evaluacion usando hash y nested join
• Si el coste del plan es menor a 0.2 usar este plan
• Stage 1
• Explorar mas reglas incluso alterando el orden de los
join
• Stage 2
• Explorar todas las opciones y optar por el plan menos
costoso tras un nº limitado de exploraciones
if(best_plan_for_now.cost<1) return(best_plan_for_now)
else if(MAXDOP>0
and best_plan.cost > threshold for parallelism)
return(MIN(create_paralel_plan().cost, best_plan_for_now))
Generación de plan de ejecución
• En cada join, se incrementa
exponencialmente el nº de soluciones posibles
Operadores
• 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
Procesamiento lógico
1. FROM
2. WHERE
3. GROUP BY
4. HAVING
5. SELECT
1. Evaluar expresiones
2. Eliminar duplicados
6. ORDER BY
7. OFFSET-FETCH/TOP
Planes de ejecución
¿Ves la diferencia en el grosor de la flecha? 
Estimación un poco equivocada! 
Planes de ejecución
• Fíjate en los %
Operadores JOIN
Un operador lógico se puede resolver con distintos
operadores físicos
NESTED LOOP
HASH JOIN
MERGE JOIN
JOIN CLAUSE
Operadores join
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
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
}
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)
}
Recomendaciones
• No bloqueante
• Eficiencia de tabla
inner (arriba)
• Soporta cualquier
join
• Util cjtos pequeños
Nested
Loop
• No bloqueante
• Datos ordenados
• Solo equijoin
Merge
Join
• Bloqueante
• Tabla inner muy
pequeña
Hash
Join
Leectura de histogramas
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
Propiedades
Operador
paralelo
Key lookup
Demo
Leamos planes!
Conclusión
• Repasar aspectos fundamentales de
operadores
• Ser capaces de leer los planes de ejecución
mas habituales
También puedes preguntar tus
dudas con el hashtag
#SQSummit en Twitter
ADAPTIVE BI FRAMEWORK
Te ayudaremos a mejorar la velocidad de desarrollo de tu plataforma de
analítica de negocio basada en nuestra experiencia:
•Diseña antes de construir
•Automatización de procesos por ETL
•Servicios de mentoring para ayudarte a conseguir mejores prácticas para la construcción
de procesos específicos y plataformas de analítica de negocio
•Muy fácil de mantener
SOLIDQ FLEX SERVICES
Con SolidQ Flex Services evitarás sustos, consiguiendo que tus sistemas
sean estables. Desde una solución sencilla de monitorización, hasta un
servicio de atención de incidencias 24/7, mantenimiento proactivo,
resolución de problemas y línea de soporte.
Todo con un coste fijo mensual… y tú dedica el tiempo a las cosas
importantes.
¡Gracias!

Más contenido relacionado

PPTX
Resumen asignatura de Introducción a la Programación
PDF
Tema 1. elementos básicos de pascal #ipg2murjc
PDF
Andreina Gimenez
PDF
Toolbox SQL Server para optimización
PPTX
Oficina Privada Virtual Servicio en la Nube
PDF
Column stored index
PPTX
Creacion de indices y constraints en sql server
PPTX
Como leer planes de ejecución - edición 2015
Resumen asignatura de Introducción a la Programación
Tema 1. elementos básicos de pascal #ipg2murjc
Andreina Gimenez
Toolbox SQL Server para optimización
Oficina Privada Virtual Servicio en la Nube
Column stored index
Creacion de indices y constraints en sql server
Como leer planes de ejecución - edición 2015

Destacado (20)

PPTX
SQL Saturday 254 10- Cosas que no se deben de hacer en una BD
PPTX
24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala
PDF
Indices columnares | SolidQ Summit 2012
PDF
Novedades en seguridad en SQL Server 2012 v1 | SolidQ Summit 2012
PPTX
Escribiendo código T-SQL eficientemente
PPTX
Diplomado Técnico SQL Server 2012 - Sesión 6/8
PPTX
Creación de aplicaciones de bases de datos con MS SQL Server 2012
PDF
BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos
PDF
Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...
PDF
WebCast de optimización Sql Server - Almacenamiento e Índices
PPTX
Diseño de aplicaciones de bases de datos empresariales robustas con MS SQL Se...
PDF
Como leer planes de ejecución
PDF
Novedades SQL Server 2012 para desarrolladores
PPTX
MS SQL Server 2012 SP1 para desarrolladores
PDF
Experiencias de migraciones a sql server 2012-2014
PPTX
Novedades en el manejo de Grandes volúmenes de datos con SQL Server 2014
PPTX
Agrupando datos en SQL Server
PPTX
Row-level security and Dynamic Data Masking
PPTX
Fundamentos en el diseño de bases de datos con MS SQL Server 2012
PPT
Manual para la creacion de tablas en sql
SQL Saturday 254 10- Cosas que no se deben de hacer en una BD
24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala
Indices columnares | SolidQ Summit 2012
Novedades en seguridad en SQL Server 2012 v1 | SolidQ Summit 2012
Escribiendo código T-SQL eficientemente
Diplomado Técnico SQL Server 2012 - Sesión 6/8
Creación de aplicaciones de bases de datos con MS SQL Server 2012
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...
WebCast de optimización Sql Server - Almacenamiento e Índices
Diseño de aplicaciones de bases de datos empresariales robustas con MS SQL Se...
Como leer planes de ejecución
Novedades SQL Server 2012 para desarrolladores
MS SQL Server 2012 SP1 para desarrolladores
Experiencias de migraciones a sql server 2012-2014
Novedades en el manejo de Grandes volúmenes de datos con SQL Server 2014
Agrupando datos en SQL Server
Row-level security and Dynamic Data Masking
Fundamentos en el diseño de bases de datos con MS SQL Server 2012
Manual para la creacion de tablas en sql
Publicidad

Similar a Planes de ejecución 1 (20)

PDF
Planes de ejecucion 1
PPTX
Como leer planes de ejecución
PDF
Planes de ejecución en sql server 2014
PDF
Optimiza tus queries desde abajo
PPTX
Presentación-cada una de información Tesina.pptx
PDF
Cuellos botella en PostgreSQL
PDF
ClaseOptimizacion.pdf
PPT
Afinamientodebasesdedatosyservidoreswebs
PDF
DENALI: Escalabilidad y Rendimiento
PPT
Pres17BDII.ppt
PPTX
Presentacion de sql inspirada en diferentes fuentes en linea
PDF
Introducción a JOINS, CTE, APPLY y SUBCONSULTAS
PPT
Optimizacion De Consultas
PDF
Resumen de nuevas caracteriscitas de sql server 2008
PPTX
Bases de Datos Masivas Corte I.pptx
PPTX
Diagnostico y resolución de problemas en sql server
PPT
Base De Datos I
PPTX
70461 Sesion2 Uso del SELECT, DISTINCT, CASE
PDF
Planes de ejecución 3.0 sql 2016 y v next
Planes de ejecucion 1
Como leer planes de ejecución
Planes de ejecución en sql server 2014
Optimiza tus queries desde abajo
Presentación-cada una de información Tesina.pptx
Cuellos botella en PostgreSQL
ClaseOptimizacion.pdf
Afinamientodebasesdedatosyservidoreswebs
DENALI: Escalabilidad y Rendimiento
Pres17BDII.ppt
Presentacion de sql inspirada en diferentes fuentes en linea
Introducción a JOINS, CTE, APPLY y SUBCONSULTAS
Optimizacion De Consultas
Resumen de nuevas caracteriscitas de sql server 2008
Bases de Datos Masivas Corte I.pptx
Diagnostico y resolución de problemas en sql server
Base De Datos I
70461 Sesion2 Uso del SELECT, DISTINCT, CASE
Planes de ejecución 3.0 sql 2016 y v next
Publicidad

Más de SolidQ (20)

PDF
SolidQ Summit 2018 - Qué necesita saber un DBA de Integration Services
PDF
SolidQ Summit 2018 - Seguridad a nivel datos. RLS
PDF
SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...
PDF
SolidQ Summit 2018 - ¿Dificultades gestionando relaciones muchos a muchos? De...
PDF
SolidQ Summit 2018 - Report Server: Nuevos mutantes
PDF
Cuando QueryStore no sirve, ¿qué opciones tenemos?
PDF
SQL Server 2017 en Linux
PDF
Columnstore en la vida real
PDF
PowerApprízate
PDF
Jugando a ser rico: Machine Learning para predicción de stocks
PDF
Analizando tus Redes Sociales con Power BI
PDF
Mantenimiento de SQL Server para Dummies
PDF
R en relacional
PDF
Cuando haces bot ya no hay stop!!
PDF
Arquitecturas lambda en Azure
PDF
Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018
PDF
BIE2E en Azure - SolidQ Summit 2018
PDF
¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018
PDF
Hilando fino en SSAS multidimensional - SolidQ Summit 2018
PDF
Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...
SolidQ Summit 2018 - Qué necesita saber un DBA de Integration Services
SolidQ Summit 2018 - Seguridad a nivel datos. RLS
SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...
SolidQ Summit 2018 - ¿Dificultades gestionando relaciones muchos a muchos? De...
SolidQ Summit 2018 - Report Server: Nuevos mutantes
Cuando QueryStore no sirve, ¿qué opciones tenemos?
SQL Server 2017 en Linux
Columnstore en la vida real
PowerApprízate
Jugando a ser rico: Machine Learning para predicción de stocks
Analizando tus Redes Sociales con Power BI
Mantenimiento de SQL Server para Dummies
R en relacional
Cuando haces bot ya no hay stop!!
Arquitecturas lambda en Azure
Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018
BIE2E en Azure - SolidQ Summit 2018
¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018
Hilando fino en SSAS multidimensional - SolidQ Summit 2018
Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...

Último (20)

PDF
PRESENTACIÓN GENERAL MIPIG - MODELO INTEGRADO DE PLANEACIÓN
PDF
CyberOps Associate - Cisco Networking Academy
PPTX
ccna: redes de nat ipv4 stharlling cande
PDF
informe_fichas1y2_corregido.docx (2) (1).pdf
PPTX
Historia Inteligencia Artificial Ana Romero.pptx
DOCX
TRABAJO GRUPAL (5) (1).docxjesjssjsjjskss
PDF
Diapositiva proyecto de vida, materia catedra
PPTX
Power Point Nicolás Carrasco (disertación Roblox).pptx
DOCX
Guía 5. Test de orientación Vocacional 2.docx
PDF
ADMINISTRACIÓN DE ARCHIVOS - TICS (SENA).pdf
PDF
Documental Beyond the Code (Dossier Presentación - 2.0)
PPTX
Mecanismos-de-Propagacion de ondas electromagneticas
PPTX
Curso de generación de energía mediante sistemas solares
PDF
CONTABILIDAD Y TRIBUTACION, EJERCICIO PRACTICO
PDF
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
PDF
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
PDF
Estrategia de Apoyo de Daylin Castaño (5).pdf
PPTX
modulo seguimiento 1 para iniciantes del
PPTX
Sesion 1 de microsoft power point - Clase 1
PPTX
Diapositivas Borrador Rocha Jauregui David Paolo (3).pptx
PRESENTACIÓN GENERAL MIPIG - MODELO INTEGRADO DE PLANEACIÓN
CyberOps Associate - Cisco Networking Academy
ccna: redes de nat ipv4 stharlling cande
informe_fichas1y2_corregido.docx (2) (1).pdf
Historia Inteligencia Artificial Ana Romero.pptx
TRABAJO GRUPAL (5) (1).docxjesjssjsjjskss
Diapositiva proyecto de vida, materia catedra
Power Point Nicolás Carrasco (disertación Roblox).pptx
Guía 5. Test de orientación Vocacional 2.docx
ADMINISTRACIÓN DE ARCHIVOS - TICS (SENA).pdf
Documental Beyond the Code (Dossier Presentación - 2.0)
Mecanismos-de-Propagacion de ondas electromagneticas
Curso de generación de energía mediante sistemas solares
CONTABILIDAD Y TRIBUTACION, EJERCICIO PRACTICO
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
Estrategia de Apoyo de Daylin Castaño (5).pdf
modulo seguimiento 1 para iniciantes del
Sesion 1 de microsoft power point - Clase 1
Diapositivas Borrador Rocha Jauregui David Paolo (3).pptx

Planes de ejecución 1

  • 1. #SQSummit Planes de ejecución 1 Eladio Rincón (erincon@solidq.com) Créditos: Enrique Catalá Bañuls ecatala@solidq.com
  • 2. Sponsors del SolidQ Summit Panamá
  • 5. Planes de ejecución en SQL Server Existe en plan caché? Compilar y optimizar query Ejecucion query Fin de ejecución NO Ejecutar query Necesario recompilar? NO Query Store Obtener plan de caché SI SI Enviar texto y plan Nuevo plan forzado Obtener plan forzado
  • 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
  • 7. Generación de plan de ejecución • Stage 0 • Reglas básicas de evaluacion usando hash y nested join • Si el coste del plan es menor a 0.2 usar este plan • Stage 1 • Explorar mas reglas incluso alterando el orden de los join • Stage 2 • Explorar todas las opciones y optar por el plan menos costoso tras un nº limitado de exploraciones if(best_plan_for_now.cost<1) return(best_plan_for_now) else if(MAXDOP>0 and best_plan.cost > threshold for parallelism) return(MIN(create_paralel_plan().cost, best_plan_for_now))
  • 8. Generación de plan de ejecución • En cada join, se incrementa exponencialmente el nº de soluciones posibles
  • 9. Operadores • 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
  • 10. Procesamiento lógico 1. FROM 2. WHERE 3. GROUP BY 4. HAVING 5. SELECT 1. Evaluar expresiones 2. Eliminar duplicados 6. ORDER BY 7. OFFSET-FETCH/TOP
  • 11. Planes de ejecución ¿Ves la diferencia en el grosor de la flecha?  Estimación un poco equivocada! 
  • 12. Planes de ejecución • Fíjate en los %
  • 13. Operadores JOIN Un operador lógico se puede resolver con distintos operadores físicos NESTED LOOP HASH JOIN MERGE JOIN JOIN CLAUSE
  • 14. Operadores join 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
  • 15. 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 }
  • 16. 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) }
  • 17. Recomendaciones • No bloqueante • Eficiencia de tabla inner (arriba) • Soporta cualquier join • Util cjtos pequeños Nested Loop • No bloqueante • Datos ordenados • Solo equijoin Merge Join • Bloqueante • Tabla inner muy pequeña Hash Join
  • 18. Leectura de histogramas 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
  • 23. Conclusión • Repasar aspectos fundamentales de operadores • Ser capaces de leer los planes de ejecución mas habituales
  • 24. También puedes preguntar tus dudas con el hashtag #SQSummit en Twitter ADAPTIVE BI FRAMEWORK Te ayudaremos a mejorar la velocidad de desarrollo de tu plataforma de analítica de negocio basada en nuestra experiencia: •Diseña antes de construir •Automatización de procesos por ETL •Servicios de mentoring para ayudarte a conseguir mejores prácticas para la construcción de procesos específicos y plataformas de analítica de negocio •Muy fácil de mantener SOLIDQ FLEX SERVICES Con SolidQ Flex Services evitarás sustos, consiguiendo que tus sistemas sean estables. Desde una solución sencilla de monitorización, hasta un servicio de atención de incidencias 24/7, mantenimiento proactivo, resolución de problemas y línea de soporte. Todo con un coste fijo mensual… y tú dedica el tiempo a las cosas importantes. ¡Gracias!