SlideShare ist ein Scribd-Unternehmen logo
1 von 31
Downloaden Sie, um offline zu lesen
Monitorizando y optimizando problemas
de paralelismo en SQL Server
Enrique Catalá Bañuls
REL300008
Mentor – Relational engine
MAP 2012 – Microsoft Technical Ranger – Microsoft Certified Trainer
ecatala@solidq.com
Enrique Puig Nouselles
DPE – Relational engine
MAP 2012 – Microsoft Technical Ranger – MCPIT SQL Server
epuig@solidq.com
Agenda
Paralelismo
Operadores Exchange
Enemigos del paralelismo
Paralelismo y memoria
Bonus final
 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 múltiples CPUs
 El tiempo computacional suele ser mas elevado, pero el tiempo
efectivo suele ser menor
 En sistemas OLTP puros, se suele premiar serializabilidad
 Pocos sistemas son OLTP puros
Consultas paralelas
Introducción
 Mejora lineal con el nº de CPU en scans
 No solo select, tambien reconstrucciones de índices por ejemplo
Paralelismo
Beneficios
 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 al
mismo tiempo
 Task
 Unidad de trabajo para un worker (sentencia simple)
 Asignada a un worker que no la soltará
Modelo de ejecución de SQL Server
Conceptos
SQLOS
Memory Node
CPU Node
Scheduler
Worker
Task
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 menos
costoso 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>1
and 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…
Paralelismo
Mecanismos decontrol
 Usadas para establecer qué procesadores pueden
utilizarse por una instancia SQL Server
 También llamado Soft-NUMA
 No controlan vinculación a RAM
Affinity mask
CPU Affinity mask
Affinity Mask
Network affinity
8000
8001
8002
8003
DEMODEMO
Configuraciones 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 un
rango 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 rango
sobre 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 particionadas
Operadores exchange
Distribute streams
 Consume múltiples fuentes y produce multiples fuentes
 No se modifican las filas
 Se reducen filas si aparece un operador bitmap
Operadores exchange
Repartition streams
 Consume múltiples hilos y produce un único hilo
 Combina resultados
 Es el que mayor % de esperas suele generar
Operadores exchange
Gather 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?
Paralelismo
Productor - consumidor
ProductoresConsumidores
Serie SerieParalelo
Paralelismo
Concepto de CXPACKET
DEMODEMO
Detectando 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 paralelismo
Planes de ejecución subóptimos
Enemigos del paralelismo
Elementos que hacen un plan subóptimo
CTEs
Recursivas
UDFs
escondidas
TOPTVFs
DEMODEMO
Enemigos 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
DEMODEMO
Ordenaciones 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 paralelas
estadísticamente
Paralelismo
Buenas 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, considera
actualizar estadísticas
 Re escribe la consulta para hacerla mas eficiente
 Para maximizar el paralelismo evita el uso de:
 Tablas variables
 Funciones
 Consultas recursivas
Paralelismo
Buenas prácticas
 Trace flag 8002
 Posibilitamos que los schedulers utilicen cualquier CPU en el
affinity mask
 Por defecto quedan vinculados a la CPU en la que fueron
creados
 Trace flag 8017
 Solo arrancan los schedulers in la mascara de afinidad con
is_online=1.
 Se liberan recursos consumidos por schedulers offline hidden
 Trace flag 8021
 En casos donde se reporta erroneamente el nº de nodos
NUMA, lo arregla
 Trace flag 8025
 SQL Server asume NUMA NODE=0 como el de mayor carga, y
se lanza sobre el 1. Este TF evita este swap
Bonus final
Trace flags interesantes
 Activa todas las revisiones del optimizador de consultas
 SQL Server trae optimizaciones del motor no activadas según CU o
SP
 Esto facilita a dev de sql el que exista comportamiento predecible en
cada 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/974006
Bonus final
Trace flag mágico 
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/
Síguenos:

Weitere ähnliche Inhalte

Was ist angesagt?

Requerimientos de instalación
Requerimientos de instalaciónRequerimientos de instalación
Requerimientos de instalación
Princezitha Ruiz
 
Sql tips 04_best_practices
Sql tips 04_best_practicesSql tips 04_best_practices
Sql tips 04_best_practices
Adrian Miranda
 
ENTERPRISE MANAGER DE LA BASE DE DATOS ORACLE VERSIÓN 11G
ENTERPRISE MANAGER DE LA BASE DE DATOS ORACLE VERSIÓN 11GENTERPRISE MANAGER DE LA BASE DE DATOS ORACLE VERSIÓN 11G
ENTERPRISE MANAGER DE LA BASE DE DATOS ORACLE VERSIÓN 11G
1712223955
 
Requerimientos de instalacion de SQL
Requerimientos de instalacion de SQL Requerimientos de instalacion de SQL
Requerimientos de instalacion de SQL
rumus1000
 
Manual de instalacion de Oracle - Windows 7
Manual de instalacion de Oracle - Windows 7Manual de instalacion de Oracle - Windows 7
Manual de instalacion de Oracle - Windows 7
Mario Alfonso
 

Was ist angesagt? (20)

Introduccion a la Arquitectura de Oracle. Z052 02
Introduccion a la Arquitectura de Oracle. Z052 02Introduccion a la Arquitectura de Oracle. Z052 02
Introduccion a la Arquitectura de Oracle. Z052 02
 
Instalación de sgbd en diferentes plataformas de windows
Instalación de sgbd en diferentes plataformas de windowsInstalación de sgbd en diferentes plataformas de windows
Instalación de sgbd en diferentes plataformas de windows
 
Migrando de MSSQL a PostgreSQL
Migrando de MSSQL a PostgreSQLMigrando de MSSQL a PostgreSQL
Migrando de MSSQL a PostgreSQL
 
Dba PostgreSQL desde básico a avanzado parte2
Dba PostgreSQL desde básico a avanzado parte2Dba PostgreSQL desde básico a avanzado parte2
Dba PostgreSQL desde básico a avanzado parte2
 
Postgresql expo
Postgresql expoPostgresql expo
Postgresql expo
 
Admon PG 1
Admon PG 1Admon PG 1
Admon PG 1
 
Requerimientos de instalación
Requerimientos de instalaciónRequerimientos de instalación
Requerimientos de instalación
 
Sql tips 04_best_practices
Sql tips 04_best_practicesSql tips 04_best_practices
Sql tips 04_best_practices
 
Postgresql Como Funciona Una Dbms Por Dentro
Postgresql Como Funciona Una Dbms Por DentroPostgresql Como Funciona Una Dbms Por Dentro
Postgresql Como Funciona Una Dbms Por Dentro
 
ENTERPRISE MANAGER DE LA BASE DE DATOS ORACLE VERSIÓN 11G
ENTERPRISE MANAGER DE LA BASE DE DATOS ORACLE VERSIÓN 11GENTERPRISE MANAGER DE LA BASE DE DATOS ORACLE VERSIÓN 11G
ENTERPRISE MANAGER DE LA BASE DE DATOS ORACLE VERSIÓN 11G
 
Arquitectura e implementación de PostgreSQL 9.3
Arquitectura e implementación de PostgreSQL 9.3Arquitectura e implementación de PostgreSQL 9.3
Arquitectura e implementación de PostgreSQL 9.3
 
Presentación de Postgresql 9.1
Presentación de Postgresql 9.1Presentación de Postgresql 9.1
Presentación de Postgresql 9.1
 
Alta Disponibilidad con PostgreSQL
Alta Disponibilidad con PostgreSQLAlta Disponibilidad con PostgreSQL
Alta Disponibilidad con PostgreSQL
 
LSWC PostgreSQL 9.1 (2011)
LSWC PostgreSQL 9.1 (2011)LSWC PostgreSQL 9.1 (2011)
LSWC PostgreSQL 9.1 (2011)
 
Paquete SSIS para administración SQL centralizada
Paquete SSIS para administración SQL centralizadaPaquete SSIS para administración SQL centralizada
Paquete SSIS para administración SQL centralizada
 
Instalación y configuración de sgbd presentacion
Instalación y configuración de sgbd presentacionInstalación y configuración de sgbd presentacion
Instalación y configuración de sgbd presentacion
 
Replicacion Postgresql
Replicacion PostgresqlReplicacion Postgresql
Replicacion Postgresql
 
Microsotf sql-server 2012
Microsotf sql-server 2012Microsotf sql-server 2012
Microsotf sql-server 2012
 
Requerimientos de instalacion de SQL
Requerimientos de instalacion de SQL Requerimientos de instalacion de SQL
Requerimientos de instalacion de SQL
 
Manual de instalacion de Oracle - Windows 7
Manual de instalacion de Oracle - Windows 7Manual de instalacion de Oracle - Windows 7
Manual de instalacion de Oracle - Windows 7
 

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

Como hacer que tus aplicaciones saquen mejor provecho a los procesadores disp...
Como hacer que tus aplicaciones saquen mejor provecho a los procesadores disp...Como hacer que tus aplicaciones saquen mejor provecho a los procesadores disp...
Como hacer que tus aplicaciones saquen mejor provecho a los procesadores disp...
Andrés Iturralde
 
24 HOP edición Español - Ssas multidimensional mejores practicas - Ahias Port...
24 HOP edición Español - Ssas multidimensional mejores practicas - Ahias Port...24 HOP edición Español - Ssas multidimensional mejores practicas - Ahias Port...
24 HOP edición Español - Ssas multidimensional mejores practicas - Ahias Port...
SpanishPASSVC
 

Ähnlich wie Monitorizando y optimizando problemas de paralelismo en SQL Server | SolidQ Summit 2012 (20)

Carbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshareCarbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshare
 
Bases de datos NoSQL - Huancayo - 2010
Bases de datos NoSQL - Huancayo - 2010Bases de datos NoSQL - Huancayo - 2010
Bases de datos NoSQL - Huancayo - 2010
 
Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...
Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...
Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...
 
Nuevo motor relacional In-memory OLTP
Nuevo motor relacional In-memory OLTPNuevo motor relacional In-memory OLTP
Nuevo motor relacional In-memory OLTP
 
Actividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdfActividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdf
 
Optimiza tus queries desde abajo
Optimiza tus queries desde abajoOptimiza tus queries desde abajo
Optimiza tus queries desde abajo
 
Algoritmos Paralelos
Algoritmos ParalelosAlgoritmos Paralelos
Algoritmos Paralelos
 
Diseño de Algoritmos Paralelos.pptx
Diseño de Algoritmos Paralelos.pptxDiseño de Algoritmos Paralelos.pptx
Diseño de Algoritmos Paralelos.pptx
 
Analitica y toma de decisiones en tiempo real sobre plataformas big data
Analitica y toma de decisiones en tiempo real sobre plataformas big dataAnalitica y toma de decisiones en tiempo real sobre plataformas big data
Analitica y toma de decisiones en tiempo real sobre plataformas big data
 
Resilient Distributed Dataset - Analisis paper
Resilient  Distributed Dataset - Analisis paper Resilient  Distributed Dataset - Analisis paper
Resilient Distributed Dataset - Analisis paper
 
Spark
SparkSpark
Spark
 
computación paralela
computación paralelacomputación paralela
computación paralela
 
Rendimiento en aplicaciones web con Symfony2
Rendimiento en aplicaciones web con Symfony2Rendimiento en aplicaciones web con Symfony2
Rendimiento en aplicaciones web con Symfony2
 
Como hacer que tus aplicaciones saquen mejor provecho a los procesadores disp...
Como hacer que tus aplicaciones saquen mejor provecho a los procesadores disp...Como hacer que tus aplicaciones saquen mejor provecho a los procesadores disp...
Como hacer que tus aplicaciones saquen mejor provecho a los procesadores disp...
 
Proyectos escalables con Drupal
Proyectos escalables con DrupalProyectos escalables con Drupal
Proyectos escalables con Drupal
 
Paralelismo en SQL Server
Paralelismo en SQL ServerParalelismo en SQL Server
Paralelismo en SQL Server
 
24 HOP edición Español - Ssas multidimensional mejores practicas - Ahias Port...
24 HOP edición Español - Ssas multidimensional mejores practicas - Ahias Port...24 HOP edición Español - Ssas multidimensional mejores practicas - Ahias Port...
24 HOP edición Español - Ssas multidimensional mejores practicas - Ahias Port...
 
DotNet 2019 | Pablo Santos Luaces - Como migrar un producto multiplataforma a...
DotNet 2019 | Pablo Santos Luaces - Como migrar un producto multiplataforma a...DotNet 2019 | Pablo Santos Luaces - Como migrar un producto multiplataforma a...
DotNet 2019 | Pablo Santos Luaces - Como migrar un producto multiplataforma a...
 
Diseño de Algoritmos Paralelos.pptx
Diseño de Algoritmos Paralelos.pptxDiseño de Algoritmos Paralelos.pptx
Diseño de Algoritmos Paralelos.pptx
 
Diseño de Algoritmos Paralelos.pdf
Diseño de Algoritmos Paralelos.pdfDiseño de Algoritmos Paralelos.pdf
Diseño de Algoritmos Paralelos.pdf
 

Mehr von SolidQ

Mehr von SolidQ (20)

SolidQ Summit 2018 - Qué necesita saber un DBA de Integration Services
SolidQ Summit 2018 - Qué necesita saber un DBA de Integration ServicesSolidQ Summit 2018 - Qué necesita saber un DBA de Integration Services
SolidQ Summit 2018 - Qué necesita saber un DBA de Integration Services
 
SolidQ Summit 2018 - Seguridad a nivel datos. RLS
SolidQ Summit 2018 - Seguridad a nivel datos. RLSSolidQ Summit 2018 - Seguridad a nivel datos. RLS
SolidQ Summit 2018 - Seguridad a nivel datos. RLS
 
SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...
SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...
SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...
 
SolidQ Summit 2018 - ¿Dificultades gestionando relaciones muchos a muchos? De...
SolidQ Summit 2018 - ¿Dificultades gestionando relaciones muchos a muchos? De...SolidQ Summit 2018 - ¿Dificultades gestionando relaciones muchos a muchos? De...
SolidQ Summit 2018 - ¿Dificultades gestionando relaciones muchos a muchos? De...
 
SolidQ Summit 2018 - Report Server: Nuevos mutantes
SolidQ Summit 2018 - Report Server: Nuevos mutantesSolidQ Summit 2018 - Report Server: Nuevos mutantes
SolidQ Summit 2018 - Report Server: Nuevos mutantes
 
Cuando QueryStore no sirve, ¿qué opciones tenemos?
Cuando QueryStore no sirve, ¿qué opciones tenemos?Cuando QueryStore no sirve, ¿qué opciones tenemos?
Cuando QueryStore no sirve, ¿qué opciones tenemos?
 
SQL Server 2017 en Linux
SQL Server 2017 en LinuxSQL Server 2017 en Linux
SQL Server 2017 en Linux
 
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...
 

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

  • 1. Monitorizando y optimizando problemas de paralelismo en SQL Server Enrique Catalá Bañuls REL300008 Mentor – Relational engine MAP 2012 – Microsoft Technical Ranger – Microsoft Certified Trainer ecatala@solidq.com Enrique Puig Nouselles DPE – Relational engine MAP 2012 – Microsoft Technical Ranger – MCPIT SQL Server epuig@solidq.com
  • 2. Agenda Paralelismo Operadores Exchange Enemigos del paralelismo Paralelismo y memoria Bonus final
  • 3.  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 múltiples CPUs  El tiempo computacional suele ser mas elevado, pero el tiempo efectivo suele ser menor  En sistemas OLTP puros, se suele premiar serializabilidad  Pocos sistemas son OLTP puros Consultas paralelas Introducción
  • 4.  Mejora lineal con el nº de CPU en scans  No solo select, tambien reconstrucciones de índices por ejemplo Paralelismo Beneficios
  • 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 al mismo tiempo  Task  Unidad de trabajo para un worker (sentencia simple)  Asignada a un worker que no la soltará Modelo de ejecución de SQL Server Conceptos SQLOS Memory Node CPU Node Scheduler Worker Task
  • 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 menos costoso 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>1 and best_plan.cost > threshold for parallelism) return(MIN(create_paralel_plan().cost, best_plan_for_now))
  • 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… Paralelismo Mecanismos decontrol
  • 8.  Usadas para establecer qué procesadores pueden utilizarse por una instancia SQL Server  También llamado Soft-NUMA  No controlan vinculación a RAM Affinity mask CPU Affinity mask
  • 11. Agenda Paralelismo Operadores Exchange Enemigos del paralelismo Paralelismo y memoria Bonus final
  • 12.  Distribución de filas basada en 3 tipos  Hash  Los valores de filas obtienen hash y cada hilo se responsabiliza de un rango 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 rango sobre 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 particionadas Operadores exchange Distribute streams
  • 13.  Consume múltiples fuentes y produce multiples fuentes  No se modifican las filas  Se reducen filas si aparece un operador bitmap Operadores exchange Repartition streams
  • 14.  Consume múltiples hilos y produce un único hilo  Combina resultados  Es el que mayor % de esperas suele generar Operadores exchange Gather streams
  • 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?
  • 18. DEMODEMO Detectando problemas de paralelismo -Extended events -paralelismo y funciones -paralelismo y cross apply -paralelismo y particionado
  • 19. Agenda Paralelismo Operadores Exchange Enemigos del paralelismo Paralelismo y memoria Bonus final
  • 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 paralelismo Planes de ejecución subóptimos
  • 21. Enemigos del paralelismo Elementos que hacen un plan subóptimo CTEs Recursivas UDFs escondidas TOPTVFs
  • 23. Agenda Paralelismo Operadores Exchange Enemigos del paralelismo Paralelismo y memoria Bonus final
  • 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
  • 26. Agenda Paralelismo Operadores Exchange Enemigos del paralelismo Paralelismo y memoria Bonus final
  • 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 paralelas estadísticamente Paralelismo Buenas prácticas
  • 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, considera actualizar estadísticas  Re escribe la consulta para hacerla mas eficiente  Para maximizar el paralelismo evita el uso de:  Tablas variables  Funciones  Consultas recursivas Paralelismo Buenas prácticas
  • 29.  Trace flag 8002  Posibilitamos que los schedulers utilicen cualquier CPU en el affinity mask  Por defecto quedan vinculados a la CPU en la que fueron creados  Trace flag 8017  Solo arrancan los schedulers in la mascara de afinidad con is_online=1.  Se liberan recursos consumidos por schedulers offline hidden  Trace flag 8021  En casos donde se reporta erroneamente el nº de nodos NUMA, lo arregla  Trace flag 8025  SQL Server asume NUMA NODE=0 como el de mayor carga, y se lanza sobre el 1. Este TF evita este swap Bonus final Trace flags interesantes
  • 30.  Activa todas las revisiones del optimizador de consultas  SQL Server trae optimizaciones del motor no activadas según CU o SP  Esto facilita a dev de sql el que exista comportamiento predecible en cada 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/974006 Bonus final Trace flag mágico 
  • 31. 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/ Síguenos: