Monitorizando y optimizando problemasde paralelismo en SQL ServerEnrique Catalá BañulsREL300008Mentor – Relational engineM...
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 utiliz...
 Mejora lineal con el nº de CPU en scans No solo select, tambien reconstrucciones de índices por ejemploParalelismoBenef...
 SQLOS Crea un scheduler por cada CPU lógica Es como un gestor de recursos…como un SO Scheduler Como una CPU lógica ...
Generación de planes de ejecución¿Por qué un plan paralelo enOLTP no es buena señal? Stage 0 Reglas básicas de evaluacio...
 Nivel hardware NUMA Nivel de instancia Soft-NUMA (affinity mask) Degree of parallelism Cost threshold for paralleli...
 Usadas para establecer qué procesadores puedenutilizarse por una instancia SQL Server También llamado Soft-NUMA No con...
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 unran...
 Consume múltiples fuentes y produce multiples fuentes No se modifican las filas Se reducen filas si aparece un operado...
 Consume múltiples hilos y produce un único hilo Combina resultados Es el que mayor % de esperas suele generarOperadore...
 Añadir más CPU Añade más poder computacional No resuelve problemas de rendimiento automágicamente Escribir código mul...
ParalelismoProductor - consumidorProductoresConsumidores
Serie SerieParaleloParalelismoConcepto de CXPACKET
DEMODEMODetectando problemas de paralelismo-Extended events-paralelismo y funciones-paralelismo y cross apply-paralelismo ...
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...
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 p...
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 G...
 No hay una solución maestra!! Si observas esperas CXPACKET reduce MAXDOP En OLTP puro pensar en 1 suele ser correcto ...
 Trace flag 8002 Posibilitamos que los schedulers utilicen cualquier CPU en elaffinity mask Por defecto quedan vinculad...
 Activa todas las revisiones del optimizador de consultas SQL Server trae optimizaciones del motor no activadas según CU...
Si quieres disfrutar de las mejores sesiones denuestros mentores de España y Latino América,ésta es tu oportunidad.http://...
Upcoming SlideShare
Loading in …5
×

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

1,571 views

Published on

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.

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,571
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
28
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

  1. 1. 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
  2. 2. AgendaParalelismoOperadores ExchangeEnemigos del paralelismoParalelismo y memoriaBonus final
  3. 3.  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
  4. 4.  Mejora lineal con el nº de CPU en scans No solo select, tambien reconstrucciones de índices por ejemploParalelismoBeneficios
  5. 5.  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
  6. 6. 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))
  7. 7.  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
  8. 8.  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
  9. 9. Affinity MaskNetwork affinity8000800180028003
  10. 10. DEMODEMOConfiguraciones paralelismo-MAXDOP-Threshold for parallelism…
  11. 11. AgendaParalelismoOperadores ExchangeEnemigos del paralelismoParalelismo y memoriaBonus final
  12. 12.  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
  13. 13.  Consume múltiples fuentes y produce multiples fuentes No se modifican las filas Se reducen filas si aparece un operador bitmapOperadores exchangeRepartition streams
  14. 14.  Consume múltiples hilos y produce un único hilo Combina resultados Es el que mayor % de esperas suele generarOperadores exchangeGather streams
  15. 15.  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?
  16. 16. ParalelismoProductor - consumidorProductoresConsumidores
  17. 17. Serie SerieParaleloParalelismoConcepto de CXPACKET
  18. 18. DEMODEMODetectando problemas de paralelismo-Extended events-paralelismo y funciones-paralelismo y cross apply-paralelismo y particionado
  19. 19. AgendaParalelismoOperadores ExchangeEnemigos del paralelismoParalelismo y memoriaBonus final
  20. 20.  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
  21. 21. Enemigos del paralelismoElementos que hacen un plan subóptimoCTEsRecursivasUDFsescondidasTOPTVFs
  22. 22. DEMODEMOEnemigos del paralelismo
  23. 23. AgendaParalelismoOperadores ExchangeEnemigos del paralelismoParalelismo y memoriaBonus final
  24. 24.  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
  25. 25. DEMODEMOOrdenaciones en paralelo
  26. 26. AgendaParalelismoOperadores ExchangeEnemigos del paralelismoParalelismo y memoriaBonus final
  27. 27.  ¿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
  28. 28.  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
  29. 29.  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
  30. 30.  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 
  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/Síguenos:

×