SlideShare uma empresa Scribd logo
1 de 31
Baixar para ler offline
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:

Mais conteúdo relacionado

Mais procurados

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 02Alexander Calderón
 
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 windowsDaniel Huerta Cruz
 
Migrando de MSSQL a PostgreSQL
Migrando de MSSQL a PostgreSQLMigrando de MSSQL a PostgreSQL
Migrando de MSSQL a PostgreSQLscastell77
 
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 parte2EQ SOFT EIRL
 
Requerimientos de instalación
Requerimientos de instalaciónRequerimientos de instalación
Requerimientos de instalaciónPrincezitha Ruiz
 
Sql tips 04_best_practices
Sql tips 04_best_practicesSql tips 04_best_practices
Sql tips 04_best_practicesAdrian Miranda
 
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 DentroEQ SOFT EIRL
 
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 11G1712223955
 
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.3Bryan Rodríguez
 
Presentación de Postgresql 9.1
Presentación de Postgresql 9.1Presentación de Postgresql 9.1
Presentación de Postgresql 9.1EQ SOFT EIRL
 
Alta Disponibilidad con PostgreSQL
Alta Disponibilidad con PostgreSQLAlta Disponibilidad con PostgreSQL
Alta Disponibilidad con PostgreSQLCarlos Gustavo Ruiz
 
LSWC PostgreSQL 9.1 (2011)
LSWC PostgreSQL 9.1 (2011)LSWC PostgreSQL 9.1 (2011)
LSWC PostgreSQL 9.1 (2011)Emanuel Calvo
 
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 centralizadaJuan Carlos Martinez Riesgo
 
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 presentacionhugoAlvidrez
 
Replicacion Postgresql
Replicacion PostgresqlReplicacion Postgresql
Replicacion Postgresqljockbrera
 
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 7Mario Alfonso
 

Mais procurados (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
 

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

Carbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshareCarbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshareJulián Castiblanco
 
Bases de datos NoSQL - Huancayo - 2010
Bases de datos NoSQL - Huancayo - 2010Bases de datos NoSQL - Huancayo - 2010
Bases de datos NoSQL - Huancayo - 2010Antonio Ognio
 
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...SolidQ
 
Nuevo motor relacional In-memory OLTP
Nuevo motor relacional In-memory OLTPNuevo motor relacional In-memory OLTP
Nuevo motor relacional In-memory OLTPSolidQ
 
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.pdfalejandrogomezescoto
 
Diseño de Algoritmos Paralelos.pptx
Diseño de Algoritmos Paralelos.pptxDiseño de Algoritmos Paralelos.pptx
Diseño de Algoritmos Paralelos.pptxyadhirafelizfajardo
 
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 dataJosé Carlos García Serrano
 
Rendimiento en aplicaciones web con Symfony2
Rendimiento en aplicaciones web con Symfony2Rendimiento en aplicaciones web con Symfony2
Rendimiento en aplicaciones web con Symfony2Asier Marqués
 
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
 
Proyectos escalables con Drupal
Proyectos escalables con DrupalProyectos escalables con Drupal
Proyectos escalables con DrupalPablo Cerda
 
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
 
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...Plain Concepts
 
Diseño de Algoritmos Paralelos.pptx
Diseño de Algoritmos Paralelos.pptxDiseño de Algoritmos Paralelos.pptx
Diseño de Algoritmos Paralelos.pptxemilioSanchez89
 
Diseño de Algoritmos Paralelos.pdf
Diseño de Algoritmos Paralelos.pdfDiseño de Algoritmos Paralelos.pdf
Diseño de Algoritmos Paralelos.pdfMarti44678
 

Semelhante a 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
 

Mais de SolidQ

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 ServicesSolidQ
 
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. RLSSolidQ
 
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
 
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
 
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 mutantesSolidQ
 
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?SolidQ
 
SQL Server 2017 en Linux
SQL Server 2017 en LinuxSQL Server 2017 en Linux
SQL Server 2017 en LinuxSolidQ
 
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
 

Mais de 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: