SlideShare una empresa de Scribd logo
1 de 30
Descargar para leer sin conexión
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/

Más contenido relacionado

Más 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
 

Más 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

DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADOJosé Luis Palma
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.José Luis Palma
 
Manual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfManual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfMaryRotonda1
 
celula, tipos, teoria celular, energia y dinamica
celula, tipos, teoria celular, energia y dinamicacelula, tipos, teoria celular, energia y dinamica
celula, tipos, teoria celular, energia y dinamicaFlor Idalia Espinoza Ortega
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfAngélica Soledad Vega Ramírez
 
cortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuacortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuaDANNYISAACCARVAJALGA
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxzulyvero07
 
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxEXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxPryhaSalam
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónLourdes Feria
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdfBaker Publishing Company
 
Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PCCesarFernandez937857
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Lourdes Feria
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptELENA GALLARDO PAÚLS
 
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIACarlos Campaña Montenegro
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAEl Fortí
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxlclcarmen
 
texto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticostexto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticosisabeltrejoros
 

Último (20)

DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.
 
Manual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfManual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdf
 
celula, tipos, teoria celular, energia y dinamica
celula, tipos, teoria celular, energia y dinamicacelula, tipos, teoria celular, energia y dinamica
celula, tipos, teoria celular, energia y dinamica
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
 
cortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuacortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahua
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
 
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxEXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
Repaso Pruebas CRECE PR 2024. Ciencia General
Repaso Pruebas CRECE PR 2024. Ciencia GeneralRepaso Pruebas CRECE PR 2024. Ciencia General
Repaso Pruebas CRECE PR 2024. Ciencia General
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf
 
Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PC
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...
 
Presentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza MultigradoPresentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza Multigrado
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
 
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
 
texto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticostexto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticos
 

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/