Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Planes de Ejecuciã N en SQL Server 2014 - Enrique Catala PDF
Planes de Ejecuciã N en SQL Server 2014 - Enrique Catala PDF
2014
Enrique Catala Bañuls (España) @enriquecatala
http://www.greensql.com
http://www.pluralsight.com 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
https://www.facebook.com/SpanishPASSVC
4
4
Asistencia Técnica
5
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
6
Agenda
1. Planes de ejecución
2. Operadores
3. Cardinality estimator
Planes de ejecución
¿Sabemos interpretarlos?
Optimizador de
consultas
8
Operadores
¿Cuántos y cuales son?
11
Operadores
Los básicos que debes conocer
Non-clustered index
seek Table Scan RID Lookup Key Lookup Hash Match
12
Operadores
¿Qué son?
13
DEMO
Operadores básicos
15
Procesamiento lógico
De una consulta
1. FROM
2. WHERE
3. GROUP BY
4. HAVING
5. SELECT
1. Evaluar expresiones
2. Eliminar duplicados
6. ORDER BY
7. OFFSET-FETCH/TOP
16
Planes de ejecución
Flechas
17
Planes de ejecución
Comparar planes
18
Operadores join
Nested loops
19
Tabla de Cursos: Tabla de Alumnos:
ID_Curso Nombre_Curso ID_Alum Nombre_Aluno ID_Curso
1Paisajismo 1Luis 2
2Fotografía 2Ana 6
3Arte Clásico 3Juan 5
4Matemáticas 4Pepe 3
5Física 5Carlos 4
6Química 6Felipe 3
7Iratxe 5
8María 4
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
...
20
Operadores 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
}
21
Operadores join
Merge join
Tabla de Cursos: Tabla de Alumnos:
ID_Curso Nombre_Curso ID_Alum Nombre_Alumno ID_Curso
1Paisajismo ID_Alunos1LuísNome_Aluno ID_Cursos2
2Fotografía 1Luís
4Pepe 23
3Arte Clásico 2Ana
6Felipe 63
4Matemáticas 3Juan
5Carlos 54
5Física 4Pepe
8María 34
5Carlos 4
6Química
6Felipe 3
7Iratxe 5
8María 4
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
...
22
Operadores join
Hash join
23
Recomendaciones
Merge Join
Hash Join
Nested Loop
• No • No • Bloqueante
bloqueante bloqueante
• Eficiencia de • Tabla inner
tabla inner • Datos muy pequeña
(arriba) ordenados
• Soporta
cualquier join • Solo equijoin
• Util cjtos
pequeños
Propiedades
DEMO
Leamos planes!
26
Operadores exchange
Distribute Streams
28
Operadores exchange
Gather streams
1. Planes de ejecución
2. Operadores
3. Cardinality estimator
Cardinality estimator
El mayor cambio en el motor “OnDisk” desde SQL Server 7.0
• Aporta el nº de registros
WHERE
• Estima el recuento de
filas afectadas
• Aporta distribución de
valores
• Aporta info distinct
count
• Aporta info sobre
duplicados
32
Cardinality estimator
El mayor cambio en el motor “OnDisk” desde SQL Server 7.0
33
Cardinality estimator ¿Acaso eso
sucede?
Desde SQL Server 7.0 hasta SQL Server 2012
• El rango menor se
asume contenido en el
Inclusión mayor
• En equijoin se assume
que el valor existe
34
DEMO
Nuevo cardinality estimator
36
Conclusión
37
Preguntas?
A continuación …