24 hop edición español - planes de ejecución en sql server 2014 - enrique catala
TRANSCRIPT
![Page 1: 24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala](https://reader031.vdocuments.us/reader031/viewer/2022020307/5599a1811a28abec758b485c/html5/thumbnails/1.jpg)
Planes de ejecución en SQL Server
2014
Enrique Catala Bañuls (España) @enriquecatala
MVP | MCT | [email protected] www.enriquecatala.com
Moderada: Freddy Angarita
![Page 2: 24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala](https://reader031.vdocuments.us/reader031/viewer/2022020307/5599a1811a28abec758b485c/html5/thumbnails/2.jpg)
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 PerformanceTry PlanExplorer today!
http://www.sqlsentry.com
![Page 3: 24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala](https://reader031.vdocuments.us/reader031/viewer/2022020307/5599a1811a28abec758b485c/html5/thumbnails/3.jpg)
Próximos SQL Saturday
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
6 de Diciembre de 2014 https://www.sqlsaturday.com/351/register.aspx
![Page 4: 24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala](https://reader031.vdocuments.us/reader031/viewer/2022020307/5599a1811a28abec758b485c/html5/thumbnails/4.jpg)
4
Capítulo Global PASS en Español
4
Reuniones semanales todos los miércoles a
las 12PM UTC-5 (Hora de Colombia)
https://www.facebook.com/SpanishPASSVC
![Page 5: 24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala](https://reader031.vdocuments.us/reader031/viewer/2022020307/5599a1811a28abec758b485c/html5/thumbnails/5.jpg)
5
Asistencia Técnica
Si requiere asistenciadurante 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
![Page 6: 24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala](https://reader031.vdocuments.us/reader031/viewer/2022020307/5599a1811a28abec758b485c/html5/thumbnails/6.jpg)
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
![Page 7: 24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala](https://reader031.vdocuments.us/reader031/viewer/2022020307/5599a1811a28abec758b485c/html5/thumbnails/7.jpg)
Agenda
1. Planes de ejecución
2. Operadores
3. Cardinality estimator
![Page 8: 24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala](https://reader031.vdocuments.us/reader031/viewer/2022020307/5599a1811a28abec758b485c/html5/thumbnails/8.jpg)
Planes de ejecución¿Sabemos interpretarlos?
8
Optimizador de consultas
Sentencia SQL Plan de ejecuciónMágia
![Page 9: 24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala](https://reader031.vdocuments.us/reader031/viewer/2022020307/5599a1811a28abec758b485c/html5/thumbnails/9.jpg)
Operadores¿Cuántos y cuales son?
11
![Page 10: 24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala](https://reader031.vdocuments.us/reader031/viewer/2022020307/5599a1811a28abec758b485c/html5/thumbnails/10.jpg)
OperadoresLos básicos que debes conocer
12
SELECT SortClustered IndexSeek
Clustered IndexScan
Non-clustered indexscan
Non-clustered indexseek 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
![Page 11: 24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala](https://reader031.vdocuments.us/reader031/viewer/2022020307/5599a1811a28abec758b485c/html5/thumbnails/11.jpg)
Operadores¿Qué son?
13
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
![Page 12: 24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala](https://reader031.vdocuments.us/reader031/viewer/2022020307/5599a1811a28abec758b485c/html5/thumbnails/12.jpg)
DEMO
15
Operadores básicos
![Page 13: 24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala](https://reader031.vdocuments.us/reader031/viewer/2022020307/5599a1811a28abec758b485c/html5/thumbnails/13.jpg)
Procesamiento lógicoDe 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
![Page 14: 24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala](https://reader031.vdocuments.us/reader031/viewer/2022020307/5599a1811a28abec758b485c/html5/thumbnails/14.jpg)
Planes de ejecuciónFlechas
17
¿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
![Page 15: 24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala](https://reader031.vdocuments.us/reader031/viewer/2022020307/5599a1811a28abec758b485c/html5/thumbnails/15.jpg)
Planes de ejecuciónComparar planes
18
Fíjate en los % de consulta
![Page 16: 24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala](https://reader031.vdocuments.us/reader031/viewer/2022020307/5599a1811a28abec758b485c/html5/thumbnails/16.jpg)
Operadores joinNested 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
![Page 17: 24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala](https://reader031.vdocuments.us/reader031/viewer/2022020307/5599a1811a28abec758b485c/html5/thumbnails/17.jpg)
20
ID_Alum Nombre_Aluno ID_Curso1Luis 22Ana 63Juan 54Pepe 35Carlos 46Felipe 3
7Iratxe 58María 4
Tabla de Alumnos:
ID_Curso Nombre_Curso
1Paisajismo
2Fotografía
3Arte Clásico
4Matemáticas
5Física
6Química
Tabla de Cursos:
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
...
![Page 18: 24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala](https://reader031.vdocuments.us/reader031/viewer/2022020307/5599a1811a28abec758b485c/html5/thumbnails/18.jpg)
Operadores joinMerge join
21
get first row R1 from input 1get first row R2 from input 2while 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 1else
get next row R2 from input 2}
![Page 19: 24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala](https://reader031.vdocuments.us/reader031/viewer/2022020307/5599a1811a28abec758b485c/html5/thumbnails/19.jpg)
22
Tabla de Alumnos:
ID_Curso Nombre_Curso
1Paisajismo
2Fotografía
3Arte Clásico
4Matemáticas
5Física
6Química
Tabla de Cursos:
Resultado:
ID_Alunos Nome_Aluno ID_Cursos1Luís 22Ana 63Juan 54Pepe 35Carlos 46Felipe 3
7Iratxe 58María 4
ID_Alum Nombre_Alumno ID_Curso1Luís 24Pepe 36Felipe 35Carlos 48Marí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 joinMerge join
![Page 20: 24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala](https://reader031.vdocuments.us/reader031/viewer/2022020307/5599a1811a28abec758b485c/html5/thumbnails/20.jpg)
Operadores joinHash 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)
}
![Page 21: 24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala](https://reader031.vdocuments.us/reader031/viewer/2022020307/5599a1811a28abec758b485c/html5/thumbnails/21.jpg)
Recomendaciones
Nes
ted
Loo
p • No bloqueante
• Eficiencia de tabla inner(arriba)
• Soporta cualquier join
• Util cjtospequeñosM
erge
Jo
in • No bloqueante
• Datos ordenados
• Solo equijoin
Has
h J
oin • Bloqueante
• Tabla innermuy pequeña
![Page 22: 24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala](https://reader031.vdocuments.us/reader031/viewer/2022020307/5599a1811a28abec758b485c/html5/thumbnails/22.jpg)
Propiedades
![Page 23: 24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala](https://reader031.vdocuments.us/reader031/viewer/2022020307/5599a1811a28abec758b485c/html5/thumbnails/23.jpg)
DEMO
26
Leamos planes!
![Page 24: 24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala](https://reader031.vdocuments.us/reader031/viewer/2022020307/5599a1811a28abec758b485c/html5/thumbnails/24.jpg)
Operadores exchangeDistribute 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 indexrecreation
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
![Page 25: 24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala](https://reader031.vdocuments.us/reader031/viewer/2022020307/5599a1811a28abec758b485c/html5/thumbnails/25.jpg)
Operadores exchangeRepartition streams
28
• Consume múltiples fuentes y produce multiples fuentes
• No se modifican las filas
• Se reducen filas si aparece un operador bitmap
![Page 26: 24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala](https://reader031.vdocuments.us/reader031/viewer/2022020307/5599a1811a28abec758b485c/html5/thumbnails/26.jpg)
Operadores exchangeGather streams
• Consume múltiples hilos y produce un único hilo
• Combina resultados
• Es el que mayor % de esperas suele generar
![Page 27: 24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala](https://reader031.vdocuments.us/reader031/viewer/2022020307/5599a1811a28abec758b485c/html5/thumbnails/27.jpg)
Agenda
1. Planes de ejecución
2. Operadores
3. Cardinality estimator
![Page 28: 24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala](https://reader031.vdocuments.us/reader031/viewer/2022020307/5599a1811a28abec758b485c/html5/thumbnails/28.jpg)
Cardinality estimatorEl 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
Est
imarse
lecti
vid
ad
del p
red
icad
oWHERE
![Page 29: 24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala](https://reader031.vdocuments.us/reader031/viewer/2022020307/5599a1811a28abec758b485c/html5/thumbnails/29.jpg)
• Se decide el algoritmo de obtención de datos
• Malas interpretaciones producen
• Malos planes de ejecución
• Mal rendimiento de consultas
Cardinality estimatorEl mayor cambio en el motor “OnDisk” desde SQL Server 7.0
33
![Page 30: 24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala](https://reader031.vdocuments.us/reader031/viewer/2022020307/5599a1811a28abec758b485c/html5/thumbnails/30.jpg)
Cardinality estimatorDesde 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
mayorInclusión
• En equijoin se assume
que el valor existe
¿Acaso eso sucede?
![Page 31: 24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala](https://reader031.vdocuments.us/reader031/viewer/2022020307/5599a1811a28abec758b485c/html5/thumbnails/31.jpg)
DEMO
36
Nuevo cardinality estimator
![Page 32: 24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala](https://reader031.vdocuments.us/reader031/viewer/2022020307/5599a1811a28abec758b485c/html5/thumbnails/32.jpg)
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
![Page 33: 24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala](https://reader031.vdocuments.us/reader031/viewer/2022020307/5599a1811a28abec758b485c/html5/thumbnails/33.jpg)
Preguntas?
![Page 34: 24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala](https://reader031.vdocuments.us/reader031/viewer/2022020307/5599a1811a28abec758b485c/html5/thumbnails/34.jpg)
Introducción a Multidimensional Expressions (MDX) en Analysis Services Multidimensional
Alan Koo
A continuación …
![Page 35: 24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala](https://reader031.vdocuments.us/reader031/viewer/2022020307/5599a1811a28abec758b485c/html5/thumbnails/35.jpg)
Gracias por participar