REL-311Planes de ejecución IEnrique Catalá Bañuls             Luis José Morán CuencaMentor – Área relacional          DPA ...
Objetivos de la sesiónAgendaα Principios Básicos β   Estadisticas, selectividad, densidad y cardinalidadα Operadores Join:...
Planes de ejecución¿Qué es eso?Sentencia SQL                    Plan de ejecución                    Mágia                ...
Operadores¿Qué son?α SQL Server posee unos 40 operadores lógicos y físicos β    Algunos muy comunes: nested loops o filter...
EstadísticasPrincipios básicosα Las estadísticas mantienen la información sobre la  distribuición de los datos en una o má...
EstadísticasDBCC SHOW_STATISTICSBooks Online – DBCC SHOW_STATISTICShttp://msdn.microsoft.com/es-es/library/ms174384.aspx
Frecuencia y Densidadα Frecuencia β   Número medio de duplicados de cada valor en una tablaα Densidad β   Densidad = 1/fre...
SelectividadConceptos básicosα La selectividad es el % de filas que se estiman cualificadas  por el predicado y devueltas ...
CardinalidadConceptos básicosα Concepto que hay que tener claroα Numero de elementos (filas) devueltos por un operadorα La...
Resumenα Densidad β    Medida de cuantos duplicados hay por columna β    Densidad = 1/frecuencia     γ Alta densidad -> po...
Scan¿Qué son y para qué sirven?α   Table Scanα   Clustered Index Scanα   Index Scanα   Range Scanα   Merge Interval
Table Scan (10 minutos)Clustered Index ScanIndex ScanRange ScanMerge Interval
SARGs¿Qué significa el término SARG?α Clausulas que ayudan a limitar la cantidad de líneas que  serán devueltasα Conocidas...
Seek¿Qué son y para qué sirven?α Clustered Index Seekα Index seek
Clustered index seek (5 m)Index seek
Operadores Join¿Qué son y como funcionan?α Loop Joinα Merge Joinα Hash Join
Operadores JoinNested LoopαEs el operador mas sencilloαEs un doble bucle   Pseudo-código:for each row R1 in the outer tabl...
Operadores JoinNested Loop SELECT          CONVERT(VarChar, Alumnos.ID_Alumno) +-+ Alumnos.Nombre_Alumno,          CONVERT...
Operadores Join  Nested Loop     Tabla de Cursos:                               Tabla de Alumnos:ID_Curso       Nombre_Cur...
Operadores JoinMerge JoinαLee simultáneamente las dos entradasαAmbas entradas deben estar ordenadasget first row R1 from i...
Operadores JoinMerge Join SELECT          CONVERT(VarChar, Alumnos.ID_Alumno) +-+ Alumnos.Nombre_Alumno,          CONVERT(...
Operadores Join  Merge Join     Tabla de Cursos:                               Tabla de Alumnos:ID_Curso       Nombre_Curs...
Operadores JoinHash JoinαEjecución en dos fases  β Build: Cálculo de clave hash del inner  β Prueba: Lee la outer, crea su...
Operadores Join (30m)
Sort y lookup¿Son buenos? ¿Se pueden eliminar?α El operador Sort y sus peligrosα Lookups y sus peligros
SortLookup
Recuerda…Bookmark Key, RID Lookup                           SQL Server 2000                     SQL Server 2005 e 2008
Mejora interesante avisandonos del Sort 
Denali nos ayuda con los SortSort warnings en planes de ejecución
Objetivos de la sesiónAgendaα Principios Básicos β   Estadisticas, selectividad, densidad y cardinalidadα Operadores Join:...
Si quieres disfrutar de las mejores sesiones denuestros mentores de España y Latino América,             ésta es tu oportu...
Upcoming SlideShare
Loading in …5
×

FUNDAMENTALS: Planes de ejecución I

1,306
-1

Published on

Como DBA, siempre te tienes que enfrentar a un plan de ejecución. En esta primera sesión, no daremos ningún concepto como pre-concebido y nos centraremos específicamente en mostrar los fundamentos de como leer y entender un plan de ejecución en SQL Server. Si alguna vez has querido aprender a leer un plan de ejecución, esta es tu sesión. Hablaremos de scan, seeks, lookups, ranges y joins, sort y spelleing

Published in: Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,306
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
37
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

FUNDAMENTALS: Planes de ejecución I

  1. 1. REL-311Planes de ejecución IEnrique Catalá Bañuls Luis José Morán CuencaMentor – Área relacional DPA – Área relacionalMCT – MCITP – MCTS – MAP (2010) LMoranCuenca@solidq.comecatala@solidq.com
  2. 2. Objetivos de la sesiónAgendaα Principios Básicos β Estadisticas, selectividad, densidad y cardinalidadα Operadores Join: β Loop Join β Hash Join β Merge Joinα Operadores básicos β Scan γ Table scan, index scan, clustered index scan, range scan β Seek γ Clustered index seek, index seek β Lookup γ RID, Key β Sort
  3. 3. Planes de ejecución¿Qué es eso?Sentencia SQL Plan de ejecución Mágia Optimizador de consultas
  4. 4. Operadores¿Qué son?α SQL Server posee unos 40 operadores lógicos y físicos β Algunos muy comunes: nested loops o filter β Otros menos comunes: Segment, Bitmap, Sequence…α Todo operador funciona pidiendo filas de uno o mas hijos y devolviéndolas al que se las ha pedido β Caso especial Common Table Spool (siguiente sesión)α Cada operador devuelve de 1 fila en 1 fila
  5. 5. EstadísticasPrincipios básicosα Las estadísticas mantienen la información sobre la distribuición de los datos en una o más columnasα Mantienen un histograma con un máximo de 200 muestras de datosα Los datos de las estadísticas son utilizados para escoger el mejor plan de ejecuciónα Todos los índices contienen estatísticas
  6. 6. EstadísticasDBCC SHOW_STATISTICSBooks Online – DBCC SHOW_STATISTICShttp://msdn.microsoft.com/es-es/library/ms174384.aspx
  7. 7. Frecuencia y Densidadα Frecuencia β Número medio de duplicados de cada valor en una tablaα Densidad β Densidad = 1/frecuencia β Número de valores únicos de un conjunto de columnas β Cuanto mayor es el número de la densidad, más densa es su columna, y más líneas duplicadas contendrá. 1/0.0001 = 10.000 elementos únicos en col1 1/0.00003 = ~33.334 elementos únicos (col1,col2)SELECT (1.0 / COUNT(DISTINCT <Columna>)) FROM <Tabla>
  8. 8. SelectividadConceptos básicosα La selectividad es el % de filas que se estiman cualificadas por el predicado y devueltas al usuarioα Su valor se basa en el histograma mencionado anteriormenteα Se usa para estimar el nº de filas que pasaran por cada operador (estimated number of rows) SELECT * FROM Clientes WHERE Sexo = ‘M’ SELECT * FROM Clientes WHERE DNI = ‘12312312312’ Que consulta es más selectiva?
  9. 9. CardinalidadConceptos básicosα Concepto que hay que tener claroα Numero de elementos (filas) devueltos por un operadorα La cardinalidad de un operador viene definida como: β (selectividad actual)*(cardinalidad del operador hijo) β O lo que es lo mismo γ (% de filas que satisfacen el predicado) * (#filas del predecesor)
  10. 10. Resumenα Densidad β Medida de cuantos duplicados hay por columna β Densidad = 1/frecuencia γ Alta densidad -> poco valor únicoα Selectividad β Tambien es medida de unicidad γ Alta selectividad -> pocos valores β Se suele utilizar para representar predicadosα Cardinalidad β Es el concepto clave que hay que entender y surge de todos los anteriores β Número de filas devueltos por un operador β Esto nos dará idea de por qué no va bien un plan de ejecucion
  11. 11. Scan¿Qué son y para qué sirven?α Table Scanα Clustered Index Scanα Index Scanα Range Scanα Merge Interval
  12. 12. Table Scan (10 minutos)Clustered Index ScanIndex ScanRange ScanMerge Interval
  13. 13. SARGs¿Qué significa el término SARG?α Clausulas que ayudan a limitar la cantidad de líneas que serán devueltasα Conocidas como sargable u optimizableα Ejemplos de cláusulas SARGs: WHERE Nome = José WHERE Salario > 2500 WHERE 2500 < Salario WHERE Nome = José AND Salario > 5000 WHERE Nome LIKE Fab%α Ejemplos de cláusulas NonSargables: WHERE Nome LIKE ‘%Fab WHERE ABS(Preco) > 100 WHERE dbo.FnMask(Col) = ’10.330’ WHERE YEAR(Data) = 2011
  14. 14. Seek¿Qué son y para qué sirven?α Clustered Index Seekα Index seek
  15. 15. Clustered index seek (5 m)Index seek
  16. 16. Operadores Join¿Qué son y como funcionan?α Loop Joinα Merge Joinα Hash Join
  17. 17. Operadores JoinNested LoopαEs el operador mas sencilloαEs un doble bucle Pseudo-código: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
  18. 18. Operadores JoinNested Loop SELECT CONVERT(VarChar, Alumnos.ID_Alumno) +-+ Alumnos.Nombre_Alumno, CONVERT(VarChar, Cursos.ID_Curso) +-+ Cursos.Nombre_Curso FROM Alumnos INNER JOIN Cursos WITH(INDEX=0) ON Alumnos.ID_Curso = Cursos.ID_Curso OPTION (LOOP JOIN)
  19. 19. Operadores Join Nested Loop Tabla de Cursos: Tabla de Alumnos:ID_Curso Nombre_Curso ID_Alum Nombre_Aluno ID_Curso 1 Paisajismo 1 Luis 2 2 Fotografía 2 Ana 6 3 Arte Clásico 3 Juan 5 4 Matemáticas 4 Pepe 3 5 Física 5 Carlos 4 6 Química 6 Felipe 3 7 Iratxe 5 8 Marí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. 20. Operadores JoinMerge JoinαLee simultáneamente las dos entradasαAmbas entradas deben estar ordenadasget 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 1 else get next row R2 from input 2}
  21. 21. Operadores JoinMerge Join SELECT CONVERT(VarChar, Alumnos.ID_Alumno) +-+ Alumnos.Nombre_Alumno, CONVERT(VarChar, Cursos.ID_Curso) +-+ Cursos.Nombre_Curso FROM Alumnos INNER JOIN Cursos WITH(INDEX=0) ON Alumnos.ID_Curso = Cursos.ID_Curso OPTION (MERGE JOIN)
  22. 22. Operadores Join Merge Join Tabla de Cursos: Tabla de Alumnos:ID_Curso Nombre_Curso ID_Alum Nombre_Alumno ID_Curso 1 Paisajismo ID_Alunos Luís 1 Nome_Aluno s 2 2 Fotografía 1 Luís 4 Pepe 2 3 3 Arte Clásico 2 Ana 6 Felipe 6 3 4 Matemáticas 3 Juan 5 Carlos 5 4 5 Física 4 Pepe 8 María 3 4 5 Carlos 4 6 Química 6 Felipe 3 7 Iratxe 5 8 Marí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 ...
  23. 23. Operadores JoinHash JoinαEjecución en dos fases β Build: Cálculo de clave hash del inner β Prueba: Lee la outer, crea su hash y compara con hash precalculado en fase buildαSi se estima menos memoria para hash, aparecen los temidos hash warnings… 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) }
  24. 24. Operadores Join (30m)
  25. 25. Sort y lookup¿Son buenos? ¿Se pueden eliminar?α El operador Sort y sus peligrosα Lookups y sus peligros
  26. 26. SortLookup
  27. 27. Recuerda…Bookmark Key, RID Lookup SQL Server 2000 SQL Server 2005 e 2008
  28. 28. Mejora interesante avisandonos del Sort 
  29. 29. Denali nos ayuda con los SortSort warnings en planes de ejecución
  30. 30. Objetivos de la sesiónAgendaα Principios Básicos β Estadisticas, selectividad, densidad y cardinalidadα Operadores Join: β Loop Join β Hash Join β Merge Joinα Operadores básicos β Scan γ Table scan, index scan, clustered index scan, range scan β Seek γ Clustered index seek, index seek β Lookup γ RID, Key β Sort
  31. 31. Si quieres disfrutar de las mejores sesiones denuestros mentores de España y Latino América, ésta es tu oportunidad. http://summit.solidq.com/madrid/
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×