Monitorizando y optimizando problemas de paralelismo en SQL Server | SolidQ Summit 2012
Upcoming SlideShare
Loading in...5
×
 

Monitorizando y optimizando problemas de paralelismo en SQL Server | SolidQ Summit 2012

on

  • 1,327 views

http://summit.solidq.com/madrid/2013/ ¡Vente al Summit! ...

http://summit.solidq.com/madrid/2013/ ¡Vente al Summit!
Uno de los aspectos más importantes a la hora de realizar un troubleshooting es el paralelismo. En esta sesión daremos una vuelta completa al paralelismo en SQL Server, Hablaremos de parámetros de configuración, planes de ejecución paralelos, operadores paralelos y mucho más. Además veremos cómo monitorizar y detectar problemas de paralelismo y las posibles soluciones.

Statistics

Views

Total Views
1,327
Views on SlideShare
1,325
Embed Views
2

Actions

Likes
0
Downloads
9
Comments
0

1 Embed 2

https://twitter.com 2

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Monitorizando y optimizando problemas de paralelismo en SQL Server | SolidQ Summit 2012 Monitorizando y optimizando problemas de paralelismo en SQL Server | SolidQ Summit 2012 Presentation Transcript

    • Monitorizando y optimizando problemasde paralelismo en SQL ServerEnrique Catalá BañulsREL300008Mentor – Relational engineMAP 2012 – Microsoft Technical Ranger – Microsoft Certified Trainerecatala@solidq.comEnrique Puig NousellesDPE – Relational engineMAP 2012 – Microsoft Technical Ranger – MCPIT SQL Serverepuig@solidq.com
    • AgendaParalelismoOperadores ExchangeEnemigos del paralelismoParalelismo y memoriaBonus final
    •  SQL Server por defecto utiliza todos los cores disponiblespara resolver planes de ejecución paralelos La idea es utilizar los cores extras, para reducir el tiempode respuesta utilizando múltiples CPUs El tiempo computacional suele ser mas elevado, pero el tiempoefectivo suele ser menor En sistemas OLTP puros, se suele premiar serializabilidad Pocos sistemas son OLTP purosConsultas paralelasIntroducción
    •  Mejora lineal con el nº de CPU en scans No solo select, tambien reconstrucciones de índices por ejemploParalelismoBeneficios
    •  SQLOS Crea un scheduler por cada CPU lógica Es como un gestor de recursos…como un SO Scheduler Como una CPU lógica Trabajan en modo cooperativo, no como en Windows Facilitan “data locality” Worker Son como “logical threads” (ejecutan tareas) Solo un worker puede ser ejecutado por un scheduler almismo tiempo Task Unidad de trabajo para un worker (sentencia simple) Asignada a un worker que no la soltaráModelo de ejecución de SQL ServerConceptosSQLOSMemory NodeCPU NodeSchedulerWorkerTask
    • Generación de planes de ejecución¿Por qué un plan paralelo enOLTP no es buena señal? 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 Stage 2 Explorar todas las opciones y optar por el plan menoscostoso tras un nº limitado de exploraciones CUIDADO, TIEMPO LIMITADO!!! (timeout)if(best_plan_for_now.cost<1) return(best_plan_for_now)else if(MAXDOP>1and best_plan.cost > threshold for parallelism)return(MIN(create_paralel_plan().cost, best_plan_for_now))
    •  Nivel hardware NUMA Nivel de instancia Soft-NUMA (affinity mask) Degree of parallelism Cost threshold for parallelism Max worker threads Parámetro -P Nivel de conexión Resource Governor usando MAXDOP Cláusula DBCC OPTIMIZE_WHATIF Nivel de sentencia Cláusula MAXDOP Conocimiento de construcciones T-SQL CROSS APPLY Funciones…ParalelismoMecanismos decontrol
    •  Usadas para establecer qué procesadores puedenutilizarse por una instancia SQL Server También llamado Soft-NUMA No controlan vinculación a RAMAffinity maskCPU Affinity mask
    • Affinity MaskNetwork affinity8000800180028003
    • DEMODEMOConfiguraciones paralelismo-MAXDOP-Threshold for parallelism…
    • AgendaParalelismoOperadores ExchangeEnemigos del paralelismoParalelismo y memoriaBonus final
    •  Distribución de filas basada en 3 tipos Hash Los valores de filas obtienen hash y cada hilo se responsabiliza de unrango hash Round-robin Los valores de las filas se envían al siguiente hilo de la lista Broadcast Todas las filas se envian a todos los hilos Range Determina a que hilo enviar la fila evaluando una funcion de rangosobre una columna Rara y usada en algunos parallel index recreation 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 particionadasOperadores exchangeDistribute streams
    •  Consume múltiples fuentes y produce multiples fuentes No se modifican las filas Se reducen filas si aparece un operador bitmapOperadores exchangeRepartition streams
    •  Consume múltiples hilos y produce un único hilo Combina resultados Es el que mayor % de esperas suele generarOperadores exchangeGather streams
    •  Añadir más CPU Añade más poder computacional No resuelve problemas de rendimiento automágicamente Escribir código multi-hilo perfecto es muy difícil Cada vez es mas fácil escribir código paralelo El que haya trabajado con .NET 4.5 lo habrá visto SQL Server tiene mucho camino hecho con 12+ años experiencia Hay un coste inherente asociado al paralelismo Mover un problema a modo paralelo y viceversa conlleva un gasto ¿compensa siempre ir a modo paralelo?Paralelismo¿Es la solución?
    • ParalelismoProductor - consumidorProductoresConsumidores
    • Serie SerieParaleloParalelismoConcepto de CXPACKET
    • DEMODEMODetectando problemas de paralelismo-Extended events-paralelismo y funciones-paralelismo y cross apply-paralelismo y particionado
    • AgendaParalelismoOperadores ExchangeEnemigos del paralelismoParalelismo y memoriaBonus final
    •  Depende de como programemos Plan óptimo 100% paralelo Plan subóptimo 90% paralelo Plan subóptimo en serie Planes subóptimos en serie SQL Server anula la posibilidad de ejecutar la consulta en paralelo Clausulas y/o estructuras de datos que no paralelizan Cuidado como programas!!! Enemigos del paralelismoPlanes de ejecución subóptimos
    • Enemigos del paralelismoElementos que hacen un plan subóptimoCTEsRecursivasUDFsescondidasTOPTVFs
    • DEMODEMOEnemigos del paralelismo
    • AgendaParalelismoOperadores ExchangeEnemigos del paralelismoParalelismo y memoriaBonus final
    •  Operaciones en memoria SORT y HASH JOIN Memory grants Operaciones costosas SQL Server tiende a paralelizar Lógico pensar que en paralelo debe ir más rápido Distribución de filas por threads Asignación de memoria equitativa por thread Distribución de filas “no tan equitativa” ¿Cómo están distribuidos tus datos?La memoria y el paralelismo
    • DEMODEMOOrdenaciones en paralelo
    • AgendaParalelismoOperadores ExchangeEnemigos del paralelismoParalelismo y memoriaBonus final
    •  ¿Cuándo aplicar MAXDOP? ALTER INDEX, Statistics operations … Agregaciones (AVG, MAX,…) Recuerda que existe Resource Governor ¿Cuándo aplicar “max degree of parallelism”? Recomendación = #physical_cores Sistemas OLTP deberian configurarse a 1 Siempre que veamos alto % de esperas CXPACKET ¿Cuándo aplicar “cost threshold for parallelism? Cuando quieras cambiar el nº de operaciones paralelasestadísticamenteParalelismoBuenas prácticas
    •  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, consideraactualizar estadísticas Re escribe la consulta para hacerla mas eficiente Para maximizar el paralelismo evita el uso de: Tablas variables Funciones Consultas recursivasParalelismoBuenas prácticas
    •  Trace flag 8002 Posibilitamos que los schedulers utilicen cualquier CPU en elaffinity mask Por defecto quedan vinculados a la CPU en la que fueroncreados Trace flag 8017 Solo arrancan los schedulers in la mascara de afinidad conis_online=1. Se liberan recursos consumidos por schedulers offline hidden Trace flag 8021 En casos donde se reporta erroneamente el nº de nodosNUMA, lo arregla Trace flag 8025 SQL Server asume NUMA NODE=0 como el de mayor carga, yse lanza sobre el 1. Este TF evita este swapBonus finalTrace flags interesantes
    •  Activa todas las revisiones del optimizador de consultas SQL Server trae optimizaciones del motor no activadas según CU oSP Esto facilita a dev de sql el que exista comportamiento predecible encada update Ojo, testéalo porque puede producir rendimientos no deseados Trace flag 4199 Por defecto viene a off y debemos activarlo DBCC TRACEON(4199) A nivel de instancia con –P4199 en sql server configuration manager A partir de SQL Server 2005 SP3 http://support.microsoft.com/kb/974006Bonus finalTrace flag mágico 
    • 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/Síguenos: