35
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

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

Embed Size (px)

Citation preview

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

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

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

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

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

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

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

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

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

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

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

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

DEMO

15

Operadores básicos

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

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

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

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

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

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

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

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

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

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

Propiedades

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

DEMO

26

Leamos planes!

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

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

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

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

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

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

• 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

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

DEMO

36

Nuevo cardinality estimator

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

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

Preguntas?

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

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

Gracias por participar