SlideShare uma empresa Scribd logo
1 de 30
Baixar para ler offline
REL- 414
Planes de ejecución II

Enrique Catalá Bañuls
Mentor – Área relacional
MCT – MCTS – MCITP – MAP 2010
ecatala@solidq.com
Objetivos de la sesión
α Comprendamos estadísticas
α Esa magia
α Operadores
 β   Spool
 β   Stream aggregate
α Escenarios avanzados
 β   Contradiction detection
 β   Particionado
 β   Funciones
 β   Servidores vinculados
 β   Optimizacion por estadísticas
La magia
Conceptos estadísticos básicos
α Densidad
 β    Medida de cuantos duplicados hay por columna
 β    Densidad = 1/frecuencia
     γ Alta densidad -> poco valor único
α Frecuencia
 β    Numero de valores únicos en una columna
α 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 dara idea de por qué no va bien un plan de ejecucion
Estadísticas y planes de ejecución
Planes de ejecución
¿Qué es eso?




Sentencia SQL                    Plan de ejecución
                    Mágia




                Optimizador de
                  consultas
La magia
Simplification
α Se detectan contradicciones
α Se reescribe la consulta simplificada
  β   Agrupación de joins según su cardinalidad
  β   Se encuentran contradicciones en consultas que impidan su
      funcionamiento
La magia
Trivial Plan
α Existen consultas tan simples, que no es necesario
      optimizacion alguna
  β    Solo tienen un plan de ejecución válido
  β    No se leen ni las estadísticas
α Su «Query tree» está prefijado y si aparece,
      simplemente se evalua su plan único sin más




α Si una consulta se optimiza y después se determina
      que es trivial, siguientes consultas similares serán
      tratadas así
La magia
Exploration
α Stage 0
 β   Reglas básicas de evaluacion usando hash y nested join
 β   Si el coste del plan es menor a 0.2 usar este plan
α Stage 1
 β   Explorar mas reglas incluso alterando el orden de los join

 if(best_plan_for_now.cost<1) return(best_plan_for_now)
 else if(MAXDOP>1
         and best_plan.cost > threshold for parallelism)
 return(MIN(create_paralel_plan().cost, best_plan_for_now))
α Stage 2
 β   Explorar todas las opciones y optar por el plan menos
     costoso tras un nº limitado de exploraciones


α CUIDADO, TIEMPO LIMITADO!!! (timeout)
La magia…
Timeout!!
α Pero cuidado porque en cada join, se incrementa
   exponencialmente el nº de soluciones posibles
La magia


SELECT                                                       Query
Average(Rating)                         Query
                  Parser                                    Execution
FROM Reviews                           Optimizer
                                                             Engine
WHERE MID = 932



                       Avg (Rating)                        or       Avg_agg
                                               Avg_agg             [Cnt, Sum]
                                              [Cnt, Sum]
                            Select                                Index Lookup
                           MID = 932            Filter
                                                                    MID = 932
                                              MID = 932

                           Reviews
                                                   Scan                        MID
                                                                              Index
                        Logical
                      operator tree            Reviews
                                                                    Reviews

                                            Query Plan #1         Query Plan #2       11
Estimacion de costes
α El optimizador utiliza dos tipos de clave
 β   Tiempo E/S: Coste de leer páginas de un subsistema de disco
 β   Tiempo CPU: Coste de aplicar predicados y tuplas en memoria
Las malas estadísticas hacen explotar nuestras SAN
Timeouts
Operadores
Operadores
Stream Aggregate
α Agrupa filas por una o varias columnas para aplicar
  funciones de agregado.
α La entrada del operador, requiere la entrada ordenada por
  las columnas de agrupación
 β    Si no lo están, se forzará un operador Sort como entrada
α Generalmente se pueden optimizar con índices
     nonclustered usando columnas incluidas
Operadores
Spools
α Existen varios tipos según su especialización
α Todos ellos hacen lo mismo conceptualmente
 β    Leen todas las filas de un input
 β    Las almacenan en memoria o en disco
 β    Permiten a otros operadores leer de dicha cache
α Sirven generalmente para:
 β    Optimizacion de escenarios donde una subexpresion compleja
      se utiliza varias veces
 β    Mantenimiento de la consistencia transaccional: Aseguran que
      leen toda la entrada antes de devolver salida
α Curiosidad: El common subexpression spool es el
     único operador que puede enchufar datos a varios
     operadores diferentes a la vez
 β    Aunque realmente se realiza en serie (1 llena, los demas
      consumen secuencialmente)
Spools
Row count spool
α Escanea el input contando cuantas filas hay, devolviendo
  el nº SIN DATOS
α Se usa preferiblemente en NOT EXIST
α Es la alternativa eficiente de un Left anti semi join
Spools
Eager/Lazy Index Spool
α index spool
 β     Se suele llamar indice al vuelo porque crea un indice al vuelo con lo
       que entra
α Lazy spool
 β    Se suele llamar así (lazy = lento), porque cachea el resultado de
      ejecución INMEDIATAMENTE anterior
     γ Cuando la siguiente fila tiene el mismo valor, el valor se toma de
        lazy index spool (Rewind)
     γ Cuando la siguiente fila difiere, se intenta obtener del acumulado
        que existe en lazy index spool, pero si no, se intenta mirar en los
        operadores anteriores (Rebind)
Worktables
¿Qué son? ¿debemos temerlos?
α Los worktables son objetos temporales creados por SQL
        Server producidos por:
    β    Spooling, para almacenamiento de datos intermedios durante
         consultas
    β    DBCC CHECKDB o DBCC CHECKTABLE
    β    Trabajo con XML o variables varchar(max)
    β    Procesamiento de objetos Service broker
    β    Trabajo con cursores keyset o estaticos
α Ocurren en tempdb
α Sus metadatos estan en memoria pero sus datos pueden
        estar en tempdb
α       Son objetos internos
Stream aggregate
Spool operators
• Row Count Spool
• Table Spool
• Eager/Lazy Spool
• Index Spool
Escenarios avanzados
Contradiction detection
α En las fases de simplificacion a la hora de trabajar el query
  optimizer se puede descartar directamente la ejecucion
α Se sabe claramente que ha ocurrido porque aparece el
  operador Constant Scan
Escenarios avanzados
Particionado
α Internamente, existe una columna PartitionID que
        se crea al particionar
α       Aumento de rendimiento es interesante en
        operaciones de agregado y operadores tipo Scan
    β    Búsquedas adaptadas al particionado
    β    Estrategias de plan de ejecución en paralelo
α Vistas de índices alineadas con el particionado
    β    Alternancia junto con la partición
    β    Cambio sencillo entre particiones
α Múltiples hilos en consultas que involucran
        recorridos de más de una partición
    β    SQL Server 2005 solo 1 hilo, cuidado!!!
Escenarios avanzados
Servidores vinculados
α Grave problema de rendimiento «desapercibido»
α Un login de servidor vinculado debe ser sysadmin,
    db_owner o db_ddadmin
α   Si no lo es, no se pueden utilizar las estadísticas
α   Se estima un valor no real de las estadísticas para el plan
    de ejecución
Escenarios avanzados
Funciones
α Podemos definir las funciones de usuario en:
 β   Funciones inline
 β   Funciones multi-statement
α Tendamos a eliminar las funciones…¿pero todas?
α Problema:
 β   No son visibles en los planes de ejecución gráficos
 β   Producen malísimas estimaciones estadísticas que derivan en
     inadecuados usos de NESTED LOOPS
 β   El código se interpreta en cada llamada (si no se usa bien)
 β   Por último y más importante: NO ES POSIBLE PARALELISMO
Escenarios avanzados
Paralelismo
α Existen los mismos operadores para planes de ejecución
  paralelos
α Se identifican con una doble flecha
α Solo se opta por ellos cuando el plan de ejecución
  supera su coste «cost threshold of parallelism»
Escenarios avanzados
Paralelismo
α En sistemas OLTP puros, se suele premiar serializabilidad
    β    Pocos sistemas son OLTP puros
α SQL Server por defecto utiliza todos los cores disponibles
        para resolver planes de ejecución paralelos
α       La idea es utilizar los cores extras, para reducir el tiempo
        de respuesta utilizando multiples cpus
    β    El tiempo computacional suele ser mas elevado, pero el tiempo
         efectivo suele ser menor
Paralelismo
Metodos para controlarlo
α Configuracion de servidor «Max degree of parallelism»
 β   Valor predeterminado a 0
 β   En el 99% de escenarios se debe ajustar
α Configuraicon de servidor «Cost threshold of parallelism»
 β   Valor predeterminado a 5
 β   No suele ser habitual modificarlo
α Cláusula MAXDOP
 β   Modifica el comportamiento puntual de la cláusula a la que se aplica
 β   Imprescindible en escenarios donde se ha ajustado «Max degree of
     parallelism»
α Resource Governor
 β   A traves de la configuración MAXDOP del workload group se
     puede/debe ajustar siempre que toquemos «Max degree of
     parallelism»
 β   Nos ayudará a predefinir configuraciones MAXDOP
Paralelismo
Beneficios
α Mejora prácticamente lineal con el nº de CPU para
   operaciones parallel scans
Paralelismo
Inconvenientes
α Las esperas se propagan con facilidad debido al modelo
   productor-consumidor
Escenarios avanzados
Paralelismo: Recomendaciones
α No hay una solución maestra!!

α Si observas esperas CXPACKET reduce MAXDOP
    β    En OLTP puro pensar en 1 suele ser correcto
α Considera Resource Governor
α Si ves planes de ejecucion suboptimos, considera
        actualizar estadísticas
α       Re escribe la consulta para hacerla mas eficiente
Si quieres disfrutar de las mejores sesiones de
nuestros mentores de España y Latino América,
             ésta es tu oportunidad.

      http://summit.solidq.com/madrid/

Mais conteúdo relacionado

Mais de SolidQ

Columnstore en la vida real
Columnstore en la vida realColumnstore en la vida real
Columnstore en la vida realSolidQ
 
PowerApprízate
PowerApprízatePowerApprízate
PowerApprízateSolidQ
 
Jugando a ser rico: Machine Learning para predicción de stocks
Jugando a ser rico: Machine Learning para predicción de stocksJugando a ser rico: Machine Learning para predicción de stocks
Jugando a ser rico: Machine Learning para predicción de stocksSolidQ
 
Analizando tus Redes Sociales con Power BI
Analizando tus Redes Sociales con Power BIAnalizando tus Redes Sociales con Power BI
Analizando tus Redes Sociales con Power BISolidQ
 
Mantenimiento de SQL Server para Dummies
Mantenimiento de SQL Server para DummiesMantenimiento de SQL Server para Dummies
Mantenimiento de SQL Server para DummiesSolidQ
 
R en relacional
R en relacionalR en relacional
R en relacionalSolidQ
 
Cuando haces bot ya no hay stop!!
Cuando haces bot ya no hay stop!!Cuando haces bot ya no hay stop!!
Cuando haces bot ya no hay stop!!SolidQ
 
Arquitecturas lambda en Azure
Arquitecturas lambda en AzureArquitecturas lambda en Azure
Arquitecturas lambda en AzureSolidQ
 
Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018
Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018
Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018SolidQ
 
BIE2E en Azure - SolidQ Summit 2018
BIE2E en Azure - SolidQ Summit 2018BIE2E en Azure - SolidQ Summit 2018
BIE2E en Azure - SolidQ Summit 2018SolidQ
 
¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018
¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018
¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018SolidQ
 
Hilando fino en SSAS multidimensional - SolidQ Summit 2018
Hilando fino en SSAS multidimensional - SolidQ Summit 2018Hilando fino en SSAS multidimensional - SolidQ Summit 2018
Hilando fino en SSAS multidimensional - SolidQ Summit 2018SolidQ
 
Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...
Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...
Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...SolidQ
 
Novedades de SSAS 2017
Novedades de SSAS 2017Novedades de SSAS 2017
Novedades de SSAS 2017SolidQ
 
Afinando la Administración de SQL Server y Novedades de Administración 2016 -...
Afinando la Administración de SQL Server y Novedades de Administración 2016 -...Afinando la Administración de SQL Server y Novedades de Administración 2016 -...
Afinando la Administración de SQL Server y Novedades de Administración 2016 -...SolidQ
 
Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el...
Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el...Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el...
Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el...SolidQ
 
STOP a la fuga de información: la barrera indispensable de seguridad en SQL S...
STOP a la fuga de información: la barrera indispensable de seguridad en SQL S...STOP a la fuga de información: la barrera indispensable de seguridad en SQL S...
STOP a la fuga de información: la barrera indispensable de seguridad en SQL S...SolidQ
 
Power BI on premise Vs Power BI on Cloud - SolidQ Summit 2017
Power BI on premise Vs Power BI on Cloud - SolidQ Summit 2017Power BI on premise Vs Power BI on Cloud - SolidQ Summit 2017
Power BI on premise Vs Power BI on Cloud - SolidQ Summit 2017SolidQ
 
Real-time con Azure Stream Analytics - SolidQ Summit 2017
Real-time con Azure Stream Analytics - SolidQ Summit 2017Real-time con Azure Stream Analytics - SolidQ Summit 2017
Real-time con Azure Stream Analytics - SolidQ Summit 2017SolidQ
 
Operaciones eficientes - di adiós a los procesos repetitivos - SolidQ Summit ...
Operaciones eficientes - di adiós a los procesos repetitivos - SolidQ Summit ...Operaciones eficientes - di adiós a los procesos repetitivos - SolidQ Summit ...
Operaciones eficientes - di adiós a los procesos repetitivos - SolidQ Summit ...SolidQ
 

Mais de SolidQ (20)

Columnstore en la vida real
Columnstore en la vida realColumnstore en la vida real
Columnstore en la vida real
 
PowerApprízate
PowerApprízatePowerApprízate
PowerApprízate
 
Jugando a ser rico: Machine Learning para predicción de stocks
Jugando a ser rico: Machine Learning para predicción de stocksJugando a ser rico: Machine Learning para predicción de stocks
Jugando a ser rico: Machine Learning para predicción de stocks
 
Analizando tus Redes Sociales con Power BI
Analizando tus Redes Sociales con Power BIAnalizando tus Redes Sociales con Power BI
Analizando tus Redes Sociales con Power BI
 
Mantenimiento de SQL Server para Dummies
Mantenimiento de SQL Server para DummiesMantenimiento de SQL Server para Dummies
Mantenimiento de SQL Server para Dummies
 
R en relacional
R en relacionalR en relacional
R en relacional
 
Cuando haces bot ya no hay stop!!
Cuando haces bot ya no hay stop!!Cuando haces bot ya no hay stop!!
Cuando haces bot ya no hay stop!!
 
Arquitecturas lambda en Azure
Arquitecturas lambda en AzureArquitecturas lambda en Azure
Arquitecturas lambda en Azure
 
Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018
Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018
Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018
 
BIE2E en Azure - SolidQ Summit 2018
BIE2E en Azure - SolidQ Summit 2018BIE2E en Azure - SolidQ Summit 2018
BIE2E en Azure - SolidQ Summit 2018
 
¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018
¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018
¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018
 
Hilando fino en SSAS multidimensional - SolidQ Summit 2018
Hilando fino en SSAS multidimensional - SolidQ Summit 2018Hilando fino en SSAS multidimensional - SolidQ Summit 2018
Hilando fino en SSAS multidimensional - SolidQ Summit 2018
 
Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...
Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...
Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...
 
Novedades de SSAS 2017
Novedades de SSAS 2017Novedades de SSAS 2017
Novedades de SSAS 2017
 
Afinando la Administración de SQL Server y Novedades de Administración 2016 -...
Afinando la Administración de SQL Server y Novedades de Administración 2016 -...Afinando la Administración de SQL Server y Novedades de Administración 2016 -...
Afinando la Administración de SQL Server y Novedades de Administración 2016 -...
 
Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el...
Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el...Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el...
Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el...
 
STOP a la fuga de información: la barrera indispensable de seguridad en SQL S...
STOP a la fuga de información: la barrera indispensable de seguridad en SQL S...STOP a la fuga de información: la barrera indispensable de seguridad en SQL S...
STOP a la fuga de información: la barrera indispensable de seguridad en SQL S...
 
Power BI on premise Vs Power BI on Cloud - SolidQ Summit 2017
Power BI on premise Vs Power BI on Cloud - SolidQ Summit 2017Power BI on premise Vs Power BI on Cloud - SolidQ Summit 2017
Power BI on premise Vs Power BI on Cloud - SolidQ Summit 2017
 
Real-time con Azure Stream Analytics - SolidQ Summit 2017
Real-time con Azure Stream Analytics - SolidQ Summit 2017Real-time con Azure Stream Analytics - SolidQ Summit 2017
Real-time con Azure Stream Analytics - SolidQ Summit 2017
 
Operaciones eficientes - di adiós a los procesos repetitivos - SolidQ Summit ...
Operaciones eficientes - di adiós a los procesos repetitivos - SolidQ Summit ...Operaciones eficientes - di adiós a los procesos repetitivos - SolidQ Summit ...
Operaciones eficientes - di adiós a los procesos repetitivos - SolidQ Summit ...
 

Último

Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024IES Vicent Andres Estelles
 
6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primariaWilian24
 
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docxTALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docxNadiaMartnez11
 
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Katherine Concepcion Gonzalez
 
FUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.pptFUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.pptNancyMoreiraMora1
 
Análisis de los Factores Externos de la Organización.
Análisis de los Factores Externos de la Organización.Análisis de los Factores Externos de la Organización.
Análisis de los Factores Externos de la Organización.JonathanCovena1
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfpatriciaines1993
 
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptxCONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptxroberthirigoinvasque
 
activ4-bloque4 transversal doctorado.pdf
activ4-bloque4 transversal doctorado.pdfactiv4-bloque4 transversal doctorado.pdf
activ4-bloque4 transversal doctorado.pdfRosabel UA
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioELIASAURELIOCHAVEZCA1
 
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxPLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxiemerc2024
 
semana 4 9NO Estudios sociales.pptxnnnn
semana 4  9NO Estudios sociales.pptxnnnnsemana 4  9NO Estudios sociales.pptxnnnn
semana 4 9NO Estudios sociales.pptxnnnnlitzyleovaldivieso
 
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfNUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfUPTAIDELTACHIRA
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptxdeimerhdz21
 
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPCTRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPCCarlosEduardoSosa2
 
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
SESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.docSESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.doc
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.docRodneyFrankCUADROSMI
 

Último (20)

Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024
 
6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria
 
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docxTALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
 
Tema 11. Dinámica de la hidrosfera 2024
Tema 11.  Dinámica de la hidrosfera 2024Tema 11.  Dinámica de la hidrosfera 2024
Tema 11. Dinámica de la hidrosfera 2024
 
Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024
 
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
 
FUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.pptFUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
 
Análisis de los Factores Externos de la Organización.
Análisis de los Factores Externos de la Organización.Análisis de los Factores Externos de la Organización.
Análisis de los Factores Externos de la Organización.
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
 
Power Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptxPower Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptx
 
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptxCONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
 
activ4-bloque4 transversal doctorado.pdf
activ4-bloque4 transversal doctorado.pdfactiv4-bloque4 transversal doctorado.pdf
activ4-bloque4 transversal doctorado.pdf
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literario
 
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxPLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
 
semana 4 9NO Estudios sociales.pptxnnnn
semana 4  9NO Estudios sociales.pptxnnnnsemana 4  9NO Estudios sociales.pptxnnnn
semana 4 9NO Estudios sociales.pptxnnnn
 
Power Point E. S.: Los dos testigos.pptx
Power Point E. S.: Los dos testigos.pptxPower Point E. S.: Los dos testigos.pptx
Power Point E. S.: Los dos testigos.pptx
 
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfNUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptx
 
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPCTRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
 
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
SESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.docSESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.doc
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
 

Planes de ejecución II

  • 1. REL- 414 Planes de ejecución II Enrique Catalá Bañuls Mentor – Área relacional MCT – MCTS – MCITP – MAP 2010 ecatala@solidq.com
  • 2. Objetivos de la sesión α Comprendamos estadísticas α Esa magia α Operadores β Spool β Stream aggregate α Escenarios avanzados β Contradiction detection β Particionado β Funciones β Servidores vinculados β Optimizacion por estadísticas
  • 3. La magia Conceptos estadísticos básicos α Densidad β Medida de cuantos duplicados hay por columna β Densidad = 1/frecuencia γ Alta densidad -> poco valor único α Frecuencia β Numero de valores únicos en una columna α 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 dara idea de por qué no va bien un plan de ejecucion
  • 4. Estadísticas y planes de ejecución
  • 5. Planes de ejecución ¿Qué es eso? Sentencia SQL Plan de ejecución Mágia Optimizador de consultas
  • 6. La magia Simplification α Se detectan contradicciones α Se reescribe la consulta simplificada β Agrupación de joins según su cardinalidad β Se encuentran contradicciones en consultas que impidan su funcionamiento
  • 7. La magia Trivial Plan α Existen consultas tan simples, que no es necesario optimizacion alguna β Solo tienen un plan de ejecución válido β No se leen ni las estadísticas α Su «Query tree» está prefijado y si aparece, simplemente se evalua su plan único sin más α Si una consulta se optimiza y después se determina que es trivial, siguientes consultas similares serán tratadas así
  • 8. La magia Exploration α Stage 0 β Reglas básicas de evaluacion usando hash y nested join β Si el coste del plan es menor a 0.2 usar este plan α Stage 1 β Explorar mas reglas incluso alterando el orden de los join if(best_plan_for_now.cost<1) return(best_plan_for_now) else if(MAXDOP>1 and best_plan.cost > threshold for parallelism) return(MIN(create_paralel_plan().cost, best_plan_for_now)) α Stage 2 β Explorar todas las opciones y optar por el plan menos costoso tras un nº limitado de exploraciones α CUIDADO, TIEMPO LIMITADO!!! (timeout)
  • 9. La magia… Timeout!! α Pero cuidado porque en cada join, se incrementa exponencialmente el nº de soluciones posibles
  • 10. La magia SELECT Query Average(Rating) Query Parser Execution FROM Reviews Optimizer Engine WHERE MID = 932 Avg (Rating) or Avg_agg Avg_agg [Cnt, Sum] [Cnt, Sum] Select Index Lookup MID = 932 Filter MID = 932 MID = 932 Reviews Scan MID Index Logical operator tree Reviews Reviews Query Plan #1 Query Plan #2 11
  • 11. Estimacion de costes α El optimizador utiliza dos tipos de clave β Tiempo E/S: Coste de leer páginas de un subsistema de disco β Tiempo CPU: Coste de aplicar predicados y tuplas en memoria
  • 12. Las malas estadísticas hacen explotar nuestras SAN Timeouts
  • 14. Operadores Stream Aggregate α Agrupa filas por una o varias columnas para aplicar funciones de agregado. α La entrada del operador, requiere la entrada ordenada por las columnas de agrupación β Si no lo están, se forzará un operador Sort como entrada α Generalmente se pueden optimizar con índices nonclustered usando columnas incluidas
  • 15. Operadores Spools α Existen varios tipos según su especialización α Todos ellos hacen lo mismo conceptualmente β Leen todas las filas de un input β Las almacenan en memoria o en disco β Permiten a otros operadores leer de dicha cache α Sirven generalmente para: β Optimizacion de escenarios donde una subexpresion compleja se utiliza varias veces β Mantenimiento de la consistencia transaccional: Aseguran que leen toda la entrada antes de devolver salida α Curiosidad: El common subexpression spool es el único operador que puede enchufar datos a varios operadores diferentes a la vez β Aunque realmente se realiza en serie (1 llena, los demas consumen secuencialmente)
  • 16. Spools Row count spool α Escanea el input contando cuantas filas hay, devolviendo el nº SIN DATOS α Se usa preferiblemente en NOT EXIST α Es la alternativa eficiente de un Left anti semi join
  • 17. Spools Eager/Lazy Index Spool α index spool β Se suele llamar indice al vuelo porque crea un indice al vuelo con lo que entra α Lazy spool β Se suele llamar así (lazy = lento), porque cachea el resultado de ejecución INMEDIATAMENTE anterior γ Cuando la siguiente fila tiene el mismo valor, el valor se toma de lazy index spool (Rewind) γ Cuando la siguiente fila difiere, se intenta obtener del acumulado que existe en lazy index spool, pero si no, se intenta mirar en los operadores anteriores (Rebind)
  • 18. Worktables ¿Qué son? ¿debemos temerlos? α Los worktables son objetos temporales creados por SQL Server producidos por: β Spooling, para almacenamiento de datos intermedios durante consultas β DBCC CHECKDB o DBCC CHECKTABLE β Trabajo con XML o variables varchar(max) β Procesamiento de objetos Service broker β Trabajo con cursores keyset o estaticos α Ocurren en tempdb α Sus metadatos estan en memoria pero sus datos pueden estar en tempdb α Son objetos internos
  • 19. Stream aggregate Spool operators • Row Count Spool • Table Spool • Eager/Lazy Spool • Index Spool
  • 20. Escenarios avanzados Contradiction detection α En las fases de simplificacion a la hora de trabajar el query optimizer se puede descartar directamente la ejecucion α Se sabe claramente que ha ocurrido porque aparece el operador Constant Scan
  • 21. Escenarios avanzados Particionado α Internamente, existe una columna PartitionID que se crea al particionar α Aumento de rendimiento es interesante en operaciones de agregado y operadores tipo Scan β Búsquedas adaptadas al particionado β Estrategias de plan de ejecución en paralelo α Vistas de índices alineadas con el particionado β Alternancia junto con la partición β Cambio sencillo entre particiones α Múltiples hilos en consultas que involucran recorridos de más de una partición β SQL Server 2005 solo 1 hilo, cuidado!!!
  • 22. Escenarios avanzados Servidores vinculados α Grave problema de rendimiento «desapercibido» α Un login de servidor vinculado debe ser sysadmin, db_owner o db_ddadmin α Si no lo es, no se pueden utilizar las estadísticas α Se estima un valor no real de las estadísticas para el plan de ejecución
  • 23. Escenarios avanzados Funciones α Podemos definir las funciones de usuario en: β Funciones inline β Funciones multi-statement α Tendamos a eliminar las funciones…¿pero todas? α Problema: β No son visibles en los planes de ejecución gráficos β Producen malísimas estimaciones estadísticas que derivan en inadecuados usos de NESTED LOOPS β El código se interpreta en cada llamada (si no se usa bien) β Por último y más importante: NO ES POSIBLE PARALELISMO
  • 24. Escenarios avanzados Paralelismo α Existen los mismos operadores para planes de ejecución paralelos α Se identifican con una doble flecha α Solo se opta por ellos cuando el plan de ejecución supera su coste «cost threshold of parallelism»
  • 25. Escenarios avanzados Paralelismo α En sistemas OLTP puros, se suele premiar serializabilidad β Pocos sistemas son OLTP puros α SQL Server por defecto utiliza todos los cores disponibles para resolver planes de ejecución paralelos α La idea es utilizar los cores extras, para reducir el tiempo de respuesta utilizando multiples cpus β El tiempo computacional suele ser mas elevado, pero el tiempo efectivo suele ser menor
  • 26. Paralelismo Metodos para controlarlo α Configuracion de servidor «Max degree of parallelism» β Valor predeterminado a 0 β En el 99% de escenarios se debe ajustar α Configuraicon de servidor «Cost threshold of parallelism» β Valor predeterminado a 5 β No suele ser habitual modificarlo α Cláusula MAXDOP β Modifica el comportamiento puntual de la cláusula a la que se aplica β Imprescindible en escenarios donde se ha ajustado «Max degree of parallelism» α Resource Governor β A traves de la configuración MAXDOP del workload group se puede/debe ajustar siempre que toquemos «Max degree of parallelism» β Nos ayudará a predefinir configuraciones MAXDOP
  • 27. Paralelismo Beneficios α Mejora prácticamente lineal con el nº de CPU para operaciones parallel scans
  • 28. Paralelismo Inconvenientes α Las esperas se propagan con facilidad debido al modelo productor-consumidor
  • 29. Escenarios avanzados Paralelismo: Recomendaciones α No hay una solución maestra!! α Si observas esperas CXPACKET reduce MAXDOP β En OLTP puro pensar en 1 suele ser correcto α Considera Resource Governor α Si ves planes de ejecucion suboptimos, considera actualizar estadísticas α Re escribe la consulta para hacerla mas eficiente
  • 30. Si quieres disfrutar de las mejores sesiones de nuestros mentores de España y Latino América, ésta es tu oportunidad. http://summit.solidq.com/madrid/