SlideShare una empresa de Scribd logo
1 de 35
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 
4 
4 
Reuniones semanales todos los miércoles a 
las 12PM UTC-5 (Hora de Colombia) 
https://www.facebook.com/SpanishPASSVC
5 
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
6 
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
Agenda 
1. Planes de ejecución 
2. Operadores 
3. Cardinality estimator
Planes de ejecución 
¿Sabemos interpretarlos? 
Sentencia SQL Plan de ejecución 
8 
Mágia 
Optimizador de 
consultas
Operadores 
¿Cuántos y cuales son? 
11
Operadores 
Los básicos que debes conocer 
12 
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
Operadores 
¿Qué son? 
Todo operador funciona pidiendo filas de uno o mas hijos y 
devolviéndolas al que se las ha pedido 
13 
 Caso especial Common Table Spool 
Cada operador devuelve de 1 fila en 1 fila 
 *No todos
DEMO 
15 
Operadores básicos
Procesamiento lógico 
De una consulta 
16 
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 
Flechas 
17 
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! 
Planes de ejecución 
Comparar planes 
18 
Fíjate en los % de consulta
Operadores join 
Nested loops 
19 
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
20 
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 
Tabla de Cursos: 
ID_Curso Nombre_Curso 
1Paisajismo 
2Fotografía 
3Arte Clásico 
4Matemáticas 
5Física 
6Química 
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 
...
Operadores join 
Merge join 
21 
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 
}
22 
Tabla de Alumnos: 
Operadores join 
Merge join 
Tabla de Cursos: 
ID_Curso Nombre_Curso 
1Paisajismo 
2Fotografía 
3Arte Clásico 
4Matemáticas 
5Física 
6Química 
Resultado: 
ID_Alum Nombre_Alumno ID_Curso 
ID_Alunos Nome_Aluno ID_Cursos 
1Luís 2 
4Pepe 3 
6Felipe 3 
5Carlos 4 
8María 4 
1Luís 2 
2Ana 6 
3Juan 5 
4Pepe 3 
5Carlos 4 
6Felipe 3 
7Iratxe 5 
8María 4 
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 
...
Operadores join 
Hash join 
23 
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 
Nested Loop 
• No 
bloqueante 
• Eficiencia de 
tabla inner 
(arriba) 
• Soporta 
cualquier join 
• Util cjtos 
pequeños 
Merge Join 
• No 
bloqueante 
• Datos 
ordenados 
• Solo equijoin 
Hash Join 
• Bloqueante 
• Tabla inner 
muy pequeña
Propiedades
DEMO 
26 
Leamos planes!
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 
• 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
Cardinality estimator 
El mayor cambio en el motor “OnDisk” desde SQL Server 7.0 
32 
• Aporta el nº de registros 
involucrados 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 
Estimar selectividad del predicado 
WHERE
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 
34 
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 
• El rango menor se 
asume contenido en el 
Inclusión mayor 
• En equijoin se assume 
que el valor existe 
¿Acaso eso 
sucede?
DEMO 
36 
Nuevo cardinality estimator
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

Más contenido relacionado

Destacado

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
 
Tipos de datos. Ejercicios en SQL Server
Tipos de datos. Ejercicios en SQL ServerTipos de datos. Ejercicios en SQL Server
Tipos de datos. Ejercicios en SQL Server
jcalvopa
 

Destacado (19)

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
 
Planes de ejecución 1
Planes de ejecución 1Planes de ejecución 1
Planes de ejecución 1
 
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...
 
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...
 
Como leer planes de ejecución
Como leer planes de ejecuciónComo leer planes de ejecución
Como leer planes de ejecución
 
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 SQL Server 2012 para desarrolladores
Novedades SQL Server 2012 para desarrolladoresNovedades SQL Server 2012 para desarrolladores
Novedades SQL Server 2012 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
 
Manual para la creacion de tablas en sql
Manual para la creacion de tablas en sqlManual para la creacion de tablas en sql
Manual para la creacion de tablas en sql
 
Tipos de datos sql server 2014
Tipos de datos sql server 2014Tipos de datos sql server 2014
Tipos de datos sql server 2014
 
Tipos de datos. Ejercicios en SQL Server
Tipos de datos. Ejercicios en SQL ServerTipos de datos. Ejercicios en SQL Server
Tipos de datos. Ejercicios en SQL Server
 
Trucos, OptimizacióN Y Buenas PráCticas Para Sql
Trucos, OptimizacióN Y Buenas PráCticas Para SqlTrucos, OptimizacióN Y Buenas PráCticas Para Sql
Trucos, OptimizacióN Y Buenas PráCticas Para Sql
 
Diplomado Técnico SQL Server 2012 - Sesión 7/8
Diplomado Técnico SQL Server 2012 - Sesión 7/8Diplomado Técnico SQL Server 2012 - Sesión 7/8
Diplomado Técnico SQL Server 2012 - Sesión 7/8
 
Mejoras del lenguaje T-SQL 2012 (parte 1) | SolidQ Summit 2012
Mejoras del lenguaje T-SQL 2012 (parte 1) | SolidQ Summit 2012Mejoras del lenguaje T-SQL 2012 (parte 1) | SolidQ Summit 2012
Mejoras del lenguaje T-SQL 2012 (parte 1) | SolidQ Summit 2012
 

Similar a 24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala

Introducción a JOINS, CTE, APPLY y SUBCONSULTAS
Introducción a JOINS, CTE, APPLY y SUBCONSULTASIntroducción a JOINS, CTE, APPLY y SUBCONSULTAS
Introducción a JOINS, CTE, APPLY y SUBCONSULTAS
Julián Castiblanco
 
24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en...
24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en...24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en...
24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en...
SpanishPASSVC
 
Novedades sql server 2008 para developers
Novedades sql server 2008 para developersNovedades sql server 2008 para developers
Novedades sql server 2008 para developers
Enrique Catala Bañuls
 

Similar a 24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala (20)

Planes de ejecución en sql server 2014
Planes de ejecución en sql server 2014Planes de ejecución en sql server 2014
Planes de ejecución en sql server 2014
 
Planes de ejecucion 1
Planes de ejecucion 1Planes de ejecucion 1
Planes de ejecucion 1
 
Optimiza tus queries desde abajo
Optimiza tus queries desde abajoOptimiza tus queries desde abajo
Optimiza tus queries desde abajo
 
Como leer planes de ejecución
Como leer planes de ejecuciónComo leer planes de ejecución
Como leer planes de ejecución
 
Conviértete en un PowerDBA con PowerShell
Conviértete en un PowerDBA con PowerShellConviértete en un PowerDBA con PowerShell
Conviértete en un PowerDBA con PowerShell
 
Introducción a JOINS, CTE, APPLY y SUBCONSULTAS
Introducción a JOINS, CTE, APPLY y SUBCONSULTASIntroducción a JOINS, CTE, APPLY y SUBCONSULTAS
Introducción a JOINS, CTE, APPLY y SUBCONSULTAS
 
Scripting para Mikrotik - Presentación Nunsys en MUM
Scripting para Mikrotik - Presentación Nunsys en MUMScripting para Mikrotik - Presentación Nunsys en MUM
Scripting para Mikrotik - Presentación Nunsys en MUM
 
Mejores prácticas desarrollo de base de datos
Mejores prácticas desarrollo de base de datos Mejores prácticas desarrollo de base de datos
Mejores prácticas desarrollo de base de datos
 
24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en...
24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en...24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en...
24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en...
 
Machine Learning en SQL Server
Machine Learning en SQL ServerMachine Learning en SQL Server
Machine Learning en SQL Server
 
Fundamentos de Indices en SQL Server - Enrrique Puig
Fundamentos de Indices en SQL Server - Enrrique PuigFundamentos de Indices en SQL Server - Enrrique Puig
Fundamentos de Indices en SQL Server - Enrrique Puig
 
Tema 4 -_introduccion_a_razonamiento_algoritmico
Tema 4 -_introduccion_a_razonamiento_algoritmicoTema 4 -_introduccion_a_razonamiento_algoritmico
Tema 4 -_introduccion_a_razonamiento_algoritmico
 
Fundamentos sobre los indices en SQL Server
Fundamentos sobre los indices en SQL ServerFundamentos sobre los indices en SQL Server
Fundamentos sobre los indices en SQL Server
 
Optimizacion De Consultas
Optimizacion De ConsultasOptimizacion De Consultas
Optimizacion De Consultas
 
24 HOP Español - Utilizando cdc para cargar dw on line - Miguel Egea
24 HOP Español - Utilizando cdc para cargar dw on line - Miguel Egea24 HOP Español - Utilizando cdc para cargar dw on line - Miguel Egea
24 HOP Español - Utilizando cdc para cargar dw on line - Miguel Egea
 
Sql tuning without trying arup nanda ls
Sql tuning without trying   arup nanda lsSql tuning without trying   arup nanda ls
Sql tuning without trying arup nanda ls
 
TSQL menos frecuente desde SQL Server 2005
TSQL menos frecuente desde SQL Server 2005TSQL menos frecuente desde SQL Server 2005
TSQL menos frecuente desde SQL Server 2005
 
SQL Monitoring
SQL MonitoringSQL Monitoring
SQL Monitoring
 
Novedades sql server 2008 para developers
Novedades sql server 2008 para developersNovedades sql server 2008 para developers
Novedades sql server 2008 para developers
 
In-Memory OLTP en SQL Server 2016
In-Memory OLTP en SQL Server 2016In-Memory OLTP en SQL Server 2016
In-Memory OLTP en SQL Server 2016
 

Más de SpanishPASSVC

Más de SpanishPASSVC (20)

Creación de un modelo de análisis predictivo en la nube
Creación de un modelo de análisis predictivo en la nubeCreación de un modelo de análisis predictivo en la nube
Creación de un modelo de análisis predictivo en la nube
 
Analizando la performance del subsistema de IO
Analizando la performance del subsistema de IOAnalizando la performance del subsistema de IO
Analizando la performance del subsistema de IO
 
AlwaysON Lecciones Aprendidas
AlwaysON Lecciones AprendidasAlwaysON Lecciones Aprendidas
AlwaysON Lecciones Aprendidas
 
Data Science con Microsoft R Server y SQL Server 2016
Data Science con Microsoft R Server y SQL Server 2016Data Science con Microsoft R Server y SQL Server 2016
Data Science con Microsoft R Server y SQL Server 2016
 
Mejoras de Rendimiento para Replicación Transaccional
Mejoras de Rendimiento para Replicación TransaccionalMejoras de Rendimiento para Replicación Transaccional
Mejoras de Rendimiento para Replicación Transaccional
 
AlwaysOn en SQL Server 2016
AlwaysOn en SQL Server 2016AlwaysOn en SQL Server 2016
AlwaysOn en SQL Server 2016
 
VMs de alto rendimiento para SQL Server en AWS y Azure
VMs de alto rendimiento para SQL Server en AWS y AzureVMs de alto rendimiento para SQL Server en AWS y Azure
VMs de alto rendimiento para SQL Server en AWS y Azure
 
Tecnicas avanzadas de monitoreo
Tecnicas avanzadas de monitoreoTecnicas avanzadas de monitoreo
Tecnicas avanzadas de monitoreo
 
Principios de diseño para procesos de ETL
Principios de diseño para procesos de ETLPrincipios de diseño para procesos de ETL
Principios de diseño para procesos de ETL
 
Planeando e implementando servicios de datos con Microsoft Azure
Planeando e implementando servicios de datos con Microsoft AzurePlaneando e implementando servicios de datos con Microsoft Azure
Planeando e implementando servicios de datos con Microsoft Azure
 
Mejores prácticas para SQL Server en ambientes virtualizados
Mejores prácticas para SQL Server en ambientes virtualizadosMejores prácticas para SQL Server en ambientes virtualizados
Mejores prácticas para SQL Server en ambientes virtualizados
 
Mejores prácticas de Data Warehouse con SQL Server
Mejores prácticas de Data Warehouse con SQL ServerMejores prácticas de Data Warehouse con SQL Server
Mejores prácticas de Data Warehouse con SQL Server
 
La receta de la abuela para mejores cargas de datos
La receta de la abuela para mejores cargas de datosLa receta de la abuela para mejores cargas de datos
La receta de la abuela para mejores cargas de datos
 
Introducción a Azure Machine Learning
Introducción a Azure Machine LearningIntroducción a Azure Machine Learning
Introducción a Azure Machine Learning
 
Cuadros de mando el todo es más que la suma de las partes
Cuadros de mando el todo es más que la suma de las partesCuadros de mando el todo es más que la suma de las partes
Cuadros de mando el todo es más que la suma de las partes
 
Automatizando la generación de Datawarehouses a través de metadatos
Automatizando la generación de Datawarehouses a través de metadatosAutomatizando la generación de Datawarehouses a través de metadatos
Automatizando la generación de Datawarehouses a través de metadatos
 
Descubriendo el corazón de la optimización “Estadísticas más que un concepto”
Descubriendo el corazón de la optimización “Estadísticas más que un concepto”Descubriendo el corazón de la optimización “Estadísticas más que un concepto”
Descubriendo el corazón de la optimización “Estadísticas más que un concepto”
 
Administrando soluciones de Power BI
Administrando soluciones de Power BIAdministrando soluciones de Power BI
Administrando soluciones de Power BI
 
Vista 360 grados de DataZen - Juan Alvarado
Vista 360 grados de DataZen - Juan AlvaradoVista 360 grados de DataZen - Juan Alvarado
Vista 360 grados de DataZen - Juan Alvarado
 
JSON Support en SQL Server 2016
JSON Support en SQL Server 2016JSON Support en SQL Server 2016
JSON Support en SQL Server 2016
 

Último

XNXX.pptxjsjssjsjsjjsjsjsjsjjsjejejejkdkdk
XNXX.pptxjsjssjsjsjjsjsjsjsjjsjejejejkdkdkXNXX.pptxjsjssjsjsjjsjsjsjsjjsjejejejkdkdk
XNXX.pptxjsjssjsjsjjsjsjsjsjjsjejejejkdkdk
JuanmanuelYapitamani
 
2287-Texto del artículo-1259innova9-1-10-20230909.pdf
2287-Texto del artículo-1259innova9-1-10-20230909.pdf2287-Texto del artículo-1259innova9-1-10-20230909.pdf
2287-Texto del artículo-1259innova9-1-10-20230909.pdf
CamiloVasconez
 

Último (20)

Seguridad y privacidad (1).pptx OdayYoah
Seguridad y privacidad (1).pptx OdayYoahSeguridad y privacidad (1).pptx OdayYoah
Seguridad y privacidad (1).pptx OdayYoah
 
CODEX ALIMENTARIUS Y OCTOGONOS euks.pptx
CODEX ALIMENTARIUS Y OCTOGONOS euks.pptxCODEX ALIMENTARIUS Y OCTOGONOS euks.pptx
CODEX ALIMENTARIUS Y OCTOGONOS euks.pptx
 
CUENCA MADRE DE DIOS-BOLIVIA INFORMACIÓN GENERAL
CUENCA MADRE DE DIOS-BOLIVIA INFORMACIÓN GENERALCUENCA MADRE DE DIOS-BOLIVIA INFORMACIÓN GENERAL
CUENCA MADRE DE DIOS-BOLIVIA INFORMACIÓN GENERAL
 
METODOLOGIA DE INVESTIGACION DE MARIO BUNGE
METODOLOGIA DE INVESTIGACION DE MARIO BUNGEMETODOLOGIA DE INVESTIGACION DE MARIO BUNGE
METODOLOGIA DE INVESTIGACION DE MARIO BUNGE
 
Simulación y Análisis de Voladuras en tajo abierto.pdf
Simulación y Análisis de Voladuras en tajo abierto.pdfSimulación y Análisis de Voladuras en tajo abierto.pdf
Simulación y Análisis de Voladuras en tajo abierto.pdf
 
REPORTE DE HOMICIDIO DOLOSO-ABRIL-2024.pdf
REPORTE DE HOMICIDIO DOLOSO-ABRIL-2024.pdfREPORTE DE HOMICIDIO DOLOSO-ABRIL-2024.pdf
REPORTE DE HOMICIDIO DOLOSO-ABRIL-2024.pdf
 
GRUPO 3 ACTIVIDADES Integradoras Universidad cesar vallejo.pdf
GRUPO 3 ACTIVIDADES Integradoras Universidad cesar vallejo.pdfGRUPO 3 ACTIVIDADES Integradoras Universidad cesar vallejo.pdf
GRUPO 3 ACTIVIDADES Integradoras Universidad cesar vallejo.pdf
 
China y sus transacciones comerciales-financieras con el exterior (2024).pdf
China y sus transacciones comerciales-financieras con el exterior (2024).pdfChina y sus transacciones comerciales-financieras con el exterior (2024).pdf
China y sus transacciones comerciales-financieras con el exterior (2024).pdf
 
Formas Farmacéuticas segun la FEUM..........
Formas Farmacéuticas segun la FEUM..........Formas Farmacéuticas segun la FEUM..........
Formas Farmacéuticas segun la FEUM..........
 
trabajo aplicativo conflictos sociales ong y ccss
trabajo aplicativo conflictos sociales ong y ccsstrabajo aplicativo conflictos sociales ong y ccss
trabajo aplicativo conflictos sociales ong y ccss
 
XNXX.pptxjsjssjsjsjjsjsjsjsjjsjejejejkdkdk
XNXX.pptxjsjssjsjsjjsjsjsjsjjsjejejejkdkdkXNXX.pptxjsjssjsjsjjsjsjsjsjjsjejejejkdkdk
XNXX.pptxjsjssjsjsjjsjsjsjsjjsjejejejkdkdk
 
Ideas liberales en Chile.pptx2019historiadechile
Ideas liberales en Chile.pptx2019historiadechileIdeas liberales en Chile.pptx2019historiadechile
Ideas liberales en Chile.pptx2019historiadechile
 
Análisis estructural del restaurante submarino de Valencia oceanographic
Análisis estructural del restaurante submarino de Valencia oceanographicAnálisis estructural del restaurante submarino de Valencia oceanographic
Análisis estructural del restaurante submarino de Valencia oceanographic
 
Estudio Índice de Igualdad 2024 de Ipsos
Estudio Índice de Igualdad 2024 de IpsosEstudio Índice de Igualdad 2024 de Ipsos
Estudio Índice de Igualdad 2024 de Ipsos
 
Ciencia de datos desde cero. Pr Joel Grus.pdf · 2da edicion español.pdf
Ciencia de datos desde cero. Pr Joel Grus.pdf · 2da edicion español.pdfCiencia de datos desde cero. Pr Joel Grus.pdf · 2da edicion español.pdf
Ciencia de datos desde cero. Pr Joel Grus.pdf · 2da edicion español.pdf
 
Los países de AL con mayor población blanca europea (2024).pdf
Los países de AL con mayor población blanca europea (2024).pdfLos países de AL con mayor población blanca europea (2024).pdf
Los países de AL con mayor población blanca europea (2024).pdf
 
Diapositivas de recolección de datos tema en especifico
Diapositivas de recolección de datos tema en especificoDiapositivas de recolección de datos tema en especifico
Diapositivas de recolección de datos tema en especifico
 
Accidentes de tránsito 2DO BIMESTRE 2024.pdf
Accidentes de tránsito 2DO BIMESTRE 2024.pdfAccidentes de tránsito 2DO BIMESTRE 2024.pdf
Accidentes de tránsito 2DO BIMESTRE 2024.pdf
 
Estudio sobre tenencia de animales domésticos en Madrid 2019-2023
Estudio sobre tenencia de animales domésticos en Madrid 2019-2023Estudio sobre tenencia de animales domésticos en Madrid 2019-2023
Estudio sobre tenencia de animales domésticos en Madrid 2019-2023
 
2287-Texto del artículo-1259innova9-1-10-20230909.pdf
2287-Texto del artículo-1259innova9-1-10-20230909.pdf2287-Texto del artículo-1259innova9-1-10-20230909.pdf
2287-Texto del artículo-1259innova9-1-10-20230909.pdf
 

24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala

  • 1. 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
  • 2. 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
  • 3. 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
  • 4. Capítulo Global PASS en Español 4 4 Reuniones semanales todos los miércoles a las 12PM UTC-5 (Hora de Colombia) https://www.facebook.com/SpanishPASSVC
  • 5. 5 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
  • 6. 6 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
  • 7. Agenda 1. Planes de ejecución 2. Operadores 3. Cardinality estimator
  • 8. Planes de ejecución ¿Sabemos interpretarlos? Sentencia SQL Plan de ejecución 8 Mágia Optimizador de consultas
  • 9. Operadores ¿Cuántos y cuales son? 11
  • 10. Operadores Los básicos que debes conocer 12 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
  • 11. Operadores ¿Qué son? Todo operador funciona pidiendo filas de uno o mas hijos y devolviéndolas al que se las ha pedido 13  Caso especial Common Table Spool Cada operador devuelve de 1 fila en 1 fila  *No todos
  • 12. DEMO 15 Operadores básicos
  • 13. Procesamiento lógico De una consulta 16 1. FROM 2. WHERE 3. GROUP BY 4. HAVING 5. SELECT 1. Evaluar expresiones 2. Eliminar duplicados 6. ORDER BY 7. OFFSET-FETCH/TOP
  • 14. Planes de ejecución Flechas 17 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! 
  • 15. Planes de ejecución Comparar planes 18 Fíjate en los % de consulta
  • 16. Operadores join Nested loops 19 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
  • 17. 20 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 Tabla de Cursos: ID_Curso Nombre_Curso 1Paisajismo 2Fotografía 3Arte Clásico 4Matemáticas 5Física 6Química 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 ...
  • 18. Operadores join Merge join 21 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 }
  • 19. 22 Tabla de Alumnos: Operadores join Merge join Tabla de Cursos: ID_Curso Nombre_Curso 1Paisajismo 2Fotografía 3Arte Clásico 4Matemáticas 5Física 6Química Resultado: ID_Alum Nombre_Alumno ID_Curso ID_Alunos Nome_Aluno ID_Cursos 1Luís 2 4Pepe 3 6Felipe 3 5Carlos 4 8María 4 1Luís 2 2Ana 6 3Juan 5 4Pepe 3 5Carlos 4 6Felipe 3 7Iratxe 5 8María 4 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 Hash join 23 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) }
  • 21. Recomendaciones Nested Loop • No bloqueante • Eficiencia de tabla inner (arriba) • Soporta cualquier join • Util cjtos pequeños Merge Join • No bloqueante • Datos ordenados • Solo equijoin Hash Join • Bloqueante • Tabla inner muy pequeña
  • 23. DEMO 26 Leamos planes!
  • 24. 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
  • 25. 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
  • 26. Operadores exchange Gather streams • Consume múltiples hilos y produce un único hilo • Combina resultados • Es el que mayor % de esperas suele generar
  • 27. Agenda 1. Planes de ejecución 2. Operadores 3. Cardinality estimator
  • 28. Cardinality estimator El mayor cambio en el motor “OnDisk” desde SQL Server 7.0 32 • Aporta el nº de registros involucrados 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 Estimar selectividad del predicado WHERE
  • 29. 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
  • 30. Cardinality estimator Desde SQL Server 7.0 hasta SQL Server 2012 34 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 • El rango menor se asume contenido en el Inclusión mayor • En equijoin se assume que el valor existe ¿Acaso eso sucede?
  • 31. DEMO 36 Nuevo cardinality estimator
  • 32. 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
  • 34. A continuación … Introducción a Multidimensional Expressions (MDX) en Analysis Services Multidimensional Alan Koo

Notas del editor

  1. Son unos 166 en SQL Server 2014 http://msdn.microsoft.com/en-us/library/ms191158(v=sql.120).aspx No toda operación tiene representación. Los operadores paralelos poseen una variante con doble flecha en la parte inferior izquierda
  2. 5’ Los dibujitos son bastante explicativos
  3. Los operadores de tipo índice columnar y los de tipo Exchange paralelos, que funcionan enviando paquetes de filas
  4. 10’ Obviamente dependen del operador
  5. Aprovechar para planes de ejecución actuales vs estimados 15’
  6. Esto es importantísimo para entender los planes de ejecución
  7. Esto es mucho mas frecuente de lo que parece. ¡Actualiza tus estadísticas!
  8. Es el operador mas sencillo Es un doble bucle
  9. Lee simultáneamente las dos entradas Ambas entradas deben estar ordenadas
  10. 37’ Si se estima menos memoria para hash, aparecen los temidos hash warnings…
  11. 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
  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. En definitiva, estimar la selectividad de WHERE, JOIN y HAVING Muy útil la lectura http://blogs.technet.com/b/dataplatforminsider/archive/2014/03/17/the-new-and-improved-cardinality-estimator-in-sql-server-2014.aspx
  14. Infravalorar el nº de filas Usar plan en serie cuando debería ser paralelo Operadores join inapropiados Uso de índice inadecuado (seek vs scan) Sobrevalorar nº de filas Seleccionar plan paralelo cuando debe ser serie Operadores join inapropiados Uso de índice inadecuado (scan vs seek) Sobre dimensionar requerimientos ram
  15. Acaso esto se cumple en la vida real?
  16. Esto es necesario para entender la demo