planes de ejecución en sql server 2014
TRANSCRIPT
![Page 1: Planes de ejecución en sql server 2014](https://reader034.vdocument.in/reader034/viewer/2022042818/55abdd171a28ab38488b45aa/html5/thumbnails/1.jpg)
Planes de ejecución en SQL
Server 2014
Enrique Catala BañulsMVP , Mentor
Twitter: @enriquecatala
www.enriquecatala.com
![Page 2: Planes de ejecución en sql server 2014](https://reader034.vdocument.in/reader034/viewer/2022042818/55abdd171a28ab38488b45aa/html5/thumbnails/2.jpg)
3 Sponsor Sessions at 11:15
Don’t miss them, they might be getting distributing some awesome prizes!
Attunity
SolidQ
ApexSQL
Also Raffle prizes at the end of the event provided by
Cisco, SolidQ, Attunity, ApexSQL & Microsoft
![Page 3: Planes de ejecución en sql server 2014](https://reader034.vdocument.in/reader034/viewer/2022042818/55abdd171a28ab38488b45aa/html5/thumbnails/3.jpg)
Our Main Sponsors:
![Page 4: Planes de ejecución en sql server 2014](https://reader034.vdocument.in/reader034/viewer/2022042818/55abdd171a28ab38488b45aa/html5/thumbnails/4.jpg)
Agenda
1. Planes de ejecución
2. Operadores
3. Cardinality estimator
![Page 5: Planes de ejecución en sql server 2014](https://reader034.vdocument.in/reader034/viewer/2022042818/55abdd171a28ab38488b45aa/html5/thumbnails/5.jpg)
Planes de ejecución¿Sabemos interpretarlos?
5
Optimizador de consultas
Sentencia SQL Plan de ejecuciónMágia
![Page 6: Planes de ejecución en sql server 2014](https://reader034.vdocument.in/reader034/viewer/2022042818/55abdd171a28ab38488b45aa/html5/thumbnails/6.jpg)
Operadores¿Cuántos y cuales son?
8
![Page 7: Planes de ejecución en sql server 2014](https://reader034.vdocument.in/reader034/viewer/2022042818/55abdd171a28ab38488b45aa/html5/thumbnails/7.jpg)
OperadoresLos básicos que debes conocer
9
SELECT SortClustered 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
![Page 8: Planes de ejecución en sql server 2014](https://reader034.vdocument.in/reader034/viewer/2022042818/55abdd171a28ab38488b45aa/html5/thumbnails/8.jpg)
Operadores¿Qué son?
10
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 -> Ver sesión Niko Neugebauer a las 13h BI
![Page 9: Planes de ejecución en sql server 2014](https://reader034.vdocument.in/reader034/viewer/2022042818/55abdd171a28ab38488b45aa/html5/thumbnails/9.jpg)
DEMO
12
Operadores básicos
![Page 10: Planes de ejecución en sql server 2014](https://reader034.vdocument.in/reader034/viewer/2022042818/55abdd171a28ab38488b45aa/html5/thumbnails/10.jpg)
Procesamiento lógicoDe una consulta
13
1. FROM
2. WHERE
3. GROUP BY
4. HAVING
5. SELECT1. Evaluar expresiones
2. Eliminar duplicados
6. ORDER BY
7. OFFSET-FETCH/TOP
![Page 11: Planes de ejecución en sql server 2014](https://reader034.vdocument.in/reader034/viewer/2022042818/55abdd171a28ab38488b45aa/html5/thumbnails/11.jpg)
Planes de ejecuciónFlechas
14
¿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 12: Planes de ejecución en sql server 2014](https://reader034.vdocument.in/reader034/viewer/2022042818/55abdd171a28ab38488b45aa/html5/thumbnails/12.jpg)
Planes de ejecuciónComparar planes
15
Fíjate en los % de consulta
![Page 13: Planes de ejecución en sql server 2014](https://reader034.vdocument.in/reader034/viewer/2022042818/55abdd171a28ab38488b45aa/html5/thumbnails/13.jpg)
Operadores joinNested loops
16
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 14: Planes de ejecución en sql server 2014](https://reader034.vdocument.in/reader034/viewer/2022042818/55abdd171a28ab38488b45aa/html5/thumbnails/14.jpg)
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 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 15: Planes de ejecución en sql server 2014](https://reader034.vdocument.in/reader034/viewer/2022042818/55abdd171a28ab38488b45aa/html5/thumbnails/15.jpg)
Operadores joinMerge join
18
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
}
![Page 16: Planes de ejecución en sql server 2014](https://reader034.vdocument.in/reader034/viewer/2022042818/55abdd171a28ab38488b45aa/html5/thumbnails/16.jpg)
Tabla de Alumnos:
ID_Curso Nombre_Curso
1Paisajismo
2Fotografía
3Arte Clásico
4Matemáticas
5Física
6Química
Tabla de Cursos:
Resultado:
ID_Aluno
s Nome_Aluno
ID_Curso
s
1Luís 2
2Ana 6
3Juan 5
4Pepe 3
5Carlos 4
6Felipe 3
7Iratxe 5
8María 4
ID_Alum Nombre_Alumno ID_Curso
1Luís 2
4Pepe 3
6Felipe 3
5Carlos 4
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 joinMerge join
![Page 17: Planes de ejecución en sql server 2014](https://reader034.vdocument.in/reader034/viewer/2022042818/55abdd171a28ab38488b45aa/html5/thumbnails/17.jpg)
Operadores joinHash join
20
Ejecución en dos fases1. Build: Cálculo de clave hash del inner
2. Prueba: Lee la outer, crea su hash y compara con hash precalculado en fase buildfor 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 18: Planes de ejecución en sql server 2014](https://reader034.vdocument.in/reader034/viewer/2022042818/55abdd171a28ab38488b45aa/html5/thumbnails/18.jpg)
RecomendacionesN
este
dLoop • No
bloqueante
• Eficiencia de tabla inner(arriba)
• Soporta cualquier join
• Util cjtospequeños
Merg
e J
oin • No bloqueante
• Datos ordenados
• Solo equijoin
Hash J
oin • Bloqueante
• Tabla innermuy pequeña
![Page 19: Planes de ejecución en sql server 2014](https://reader034.vdocument.in/reader034/viewer/2022042818/55abdd171a28ab38488b45aa/html5/thumbnails/19.jpg)
Propiedades
![Page 20: Planes de ejecución en sql server 2014](https://reader034.vdocument.in/reader034/viewer/2022042818/55abdd171a28ab38488b45aa/html5/thumbnails/20.jpg)
DEMO
23
Leamos planes!
![Page 21: Planes de ejecución en sql server 2014](https://reader034.vdocument.in/reader034/viewer/2022042818/55abdd171a28ab38488b45aa/html5/thumbnails/21.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 22: Planes de ejecución en sql server 2014](https://reader034.vdocument.in/reader034/viewer/2022042818/55abdd171a28ab38488b45aa/html5/thumbnails/22.jpg)
Operadores exchangeRepartition streams
25
• Consume múltiples fuentes y produce multiples fuentes
• No se modifican las filas
• Se reducen filas si aparece un operador bitmap
![Page 23: Planes de ejecución en sql server 2014](https://reader034.vdocument.in/reader034/viewer/2022042818/55abdd171a28ab38488b45aa/html5/thumbnails/23.jpg)
Operadores exchangeGather streams
• Consume múltiples hilos y produce un único hilo
• Combina resultados
• Es el que mayor % de esperas suele generar
![Page 24: Planes de ejecución en sql server 2014](https://reader034.vdocument.in/reader034/viewer/2022042818/55abdd171a28ab38488b45aa/html5/thumbnails/24.jpg)
Agenda
1. Planes de ejecución
2. Operadores
3. Cardinality estimator
![Page 25: Planes de ejecución en sql server 2014](https://reader034.vdocument.in/reader034/viewer/2022042818/55abdd171a28ab38488b45aa/html5/thumbnails/25.jpg)
Cardinality estimatorEl mayor cambio en el motor “OnDisk” desde SQL Server 7.0
29
• 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 26: Planes de ejecución en sql server 2014](https://reader034.vdocument.in/reader034/viewer/2022042818/55abdd171a28ab38488b45aa/html5/thumbnails/26.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
30
![Page 27: Planes de ejecución en sql server 2014](https://reader034.vdocument.in/reader034/viewer/2022042818/55abdd171a28ab38488b45aa/html5/thumbnails/27.jpg)
Cardinality estimatorDesde SQL Server 7.0 hasta SQL Server 2012
31
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 28: Planes de ejecución en sql server 2014](https://reader034.vdocument.in/reader034/viewer/2022042818/55abdd171a28ab38488b45aa/html5/thumbnails/28.jpg)
DEMO
33
Nuevo cardinality estimator
![Page 29: Planes de ejecución en sql server 2014](https://reader034.vdocument.in/reader034/viewer/2022042818/55abdd171a28ab38488b45aa/html5/thumbnails/29.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
34