SlideShare une entreprise Scribd logo
1  sur  29
Télécharger pour lire hors ligne
SOLIDQ SUMMIT MADRID 2017
#SQSummit17
Enrique Catalá | Mentor | ecatala@solidq.com | @enriquecatala
Sácale rendimiento a tu hardware con el
paralelismo de SQL Server
SOLIDQ SUMMIT MADRID 2017
AGENDA
SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017
El tiempo computacional suele ser mas elevado, pero el tiempo
efectivo suele ser menor
SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017
SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017
Symmetric
Multiprocessing System
(SMP)
Todas las CPU comparten
la misma memoria
Sin particionado HW para
acceso a memoria
Típico en computadoras
de consumo
Memory
CPU CPU CPU CPU
System bus
CPU CPU CPU CPU
SMP architecture
CPU
CPU
CPU
CPU
F
S
B
Main
Memory
SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017
Non-Uniform
Memory Access
Nodos
conectados por
bus compartido
Típico en
servidores de
gama media-alta
Shared Bus
Memory
Controller
CPU CPU CPU CPU
Memory
Controller
CPU CPU CPU CPU
Memory
Controller
CPU CPU CPU CPU
Memory
Controller
CPU CPU CPU CPU
Node Controller Node Controller Node Controller Node Controller
SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017
Massively Parallel
Processing
Nodos de
computación con
SQL conectados
Arquitecturas DW
petabyte (PDW,
Azure SQLDW)
SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017
• Automáticamente detecta configuraciones NUMA y se adapta
Compatible
• Minimiza latencia de memoria tratando de usar la memoria local de
cada nodo
Data-locality
• Se puede afinar manualmente
Configurable
SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017
SQLOS
Memory Node
CPU Node
Scheduler
Worker
Task
SQLOS
• Crea un scheduler para cada CPU
lógica
• Es como un gestor de recursos…OS
Scheduler
• Como una CPU lógica usada por los
workers
Worker
• Son como “threads” lógicos
Task
• Unidad de trabajo para un worker
(sentencia simple)
SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017
Competitiva
• Usa arquitectura de
prioridades de procesos
• Cada thread ejecuta en un
slot de tiempo
predeterminado
• Un thread puede ser
rechazado de ejecución por
otro de mayor prioridad
Cooperativa
• Basada en listas de espera
• Cada tarea se pone a si
misma en lista de espera
cuando necesita recurso
• El mismo scheduler ejecuta
hasta el final
• Se previene context
switching
SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017
Multi-Instancias
Tener varias instancias en el
mismo HW
Licenciamiento
Afinar qué cores queremos
asignar de los licenciados
SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017
Auto afinado al inicio de instancia
Hasta 30% beneficio
CPU > 8 cores HT
Se previenen mezclas logical-only o physical only nodes
SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017
8000
8001
8002
8003
SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017
if(best_plan_for_now.cost<1) return(best_plan_for_now)
else if(MAXDOP>0
and )
return( )
Configuración
• A nivel de
instancia
• Sp_configure
Finalidad
• Cambiar
estadísticamente
el nº de planes de
ejecución
Recomendación
• En entorno OLTP
mínimo subir a 50
SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017
if(best_plan_for_now.cost<1) return(best_plan_for_now)
else if(
and best_plan.cost > threshold for parallelism)
return(MIN(create_paralel_plan().cost, best_plan_for_now))
Configuración
• A todos los niveles
• Instancia, BBDD,
conexión y query
Finalidad
• Limita
explicitamente el
nº de CPUs que un
worker puede usar
para una tarea
Recomendación
• En entorno OLTP
recomendado 1
• Afinar
agregaciones y op.
mantenimiento a 0
SOLIDQ SUMMIT MADRID 2017
DEMO
SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017
Hardware
NUMA
SMP
Instancia
Soft-NUMA
DOP
Cost threshold for
parallelism
Max worker threads
-P
BBDD DOP
Conexión Resource Governor
Query
MAXDOP
Limitaciones de
implementacion
Funciones
CROSS APPLY
…
QUERY
RESOURCE
GOVERNOR
BBDD
INSTANCIA
SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017
SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017
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
SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017
Consume múltiples fuentes
y produce multiples fuentes
No se modifican las filas
Se reducen filas si aparece
un operador bitmap
SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017
Consume múltiples hilos
y produce un único hilo
Combina resultados
Es el que genera el
famoso CXPACKET wait
SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017
Type
# producer
threads
# consumer
threads
Gather
Streams
DOP 1
Repartition
Streams
DOP DOP
Distribute
Streams
1 DOP
SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017
Serial SerialParallel
SOLIDQ SUMMIT MADRID 2017
DEMO
SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017
Mala configuración DOP
Mala configuración de affinidad de procesador
Estadísticas desactualizadas
• Generalmente problemas HW o mala configuración HW
Cambios de context excesivos
Malas arquitecturas de aplicación que estresan la CPU
SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017
• MAXDOP = 0
• Threshold for parallelism = 5
Nunca usar la configuración por defecto
• MAXDOP = 1
• Threshold for parallelism = 50
OLTP puro
• MAXDOP = #’Phisical cores’
DW
• MAXDOP <= #physical_cores_numa_node
Regla de oro
wait type name wait time (ms) requests
CXPACKET 786556034 128110444
LATCH_EX 255701441 155553913
ASYNC_NETWORK_IO 129888217 19083082
PAGEIOLATCH_SH 83672746 2813207
WRITELOG 70634742 48398646
SOS_SCHEDULER_YIELD 47697175 176871743
SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017
• ALTER INDEX, Statistics operations …
• Agregaciones (AVG, MAX,…)
• Recuerda que existe Resource Governor
¿Cuándo aplicar MAXDOP?
• Recomendación = #physical_cores
• Sistemas OLTP deberian configurarse a 1
• Siempre que veamos alto % de esperas CXPACKET
¿Cuándo aplicar “max degree of parallelism”?
• Cuando quieras cambiar el nº de operaciones paralelas estadísticamente
¿Cuándo aplicar “cost threshold for parallelism?
SOLIDQ SUMMIT MADRID 2017
AGENDA
SOLIDQ SUMMIT
MADRID 2017
Gracias!

Contenu connexe

Similaire à Paralelismo en sql server

Techdays 2010 Dynamic Memory and Linux
Techdays 2010 Dynamic Memory and LinuxTechdays 2010 Dynamic Memory and Linux
Techdays 2010 Dynamic Memory and Linux
Pablo Campos
 
Expo Windows2003 R2
Expo  Windows2003  R2Expo  Windows2003  R2
Expo Windows2003 R2
guestd39674
 
Expo Windows2003 R2
Expo  Windows2003  R2Expo  Windows2003  R2
Expo Windows2003 R2
guestd39674
 
Cuadro comparativo de SMBD
Cuadro comparativo de SMBD Cuadro comparativo de SMBD
Cuadro comparativo de SMBD
Jazmin Glez.
 

Similaire à Paralelismo en sql server (20)

Planes de ejecución 3.0: SQL Server 2016 y vNext
Planes de ejecución 3.0: SQL Server 2016 y vNextPlanes de ejecución 3.0: SQL Server 2016 y vNext
Planes de ejecución 3.0: SQL Server 2016 y vNext
 
SQL Server 2017 soporte en Linux
SQL Server 2017 soporte en LinuxSQL Server 2017 soporte en Linux
SQL Server 2017 soporte en Linux
 
Monitorizando y optimizando problemas de paralelismo en SQL Server | SolidQ S...
Monitorizando y optimizando problemas de paralelismo en SQL Server | SolidQ S...Monitorizando y optimizando problemas de paralelismo en SQL Server | SolidQ S...
Monitorizando y optimizando problemas de paralelismo en SQL Server | SolidQ S...
 
Instancias Amazon EC2 a profundidad
Instancias Amazon EC2 a profundidadInstancias Amazon EC2 a profundidad
Instancias Amazon EC2 a profundidad
 
Aplicando R al análisis de rendimiento de un servidor
Aplicando R al análisis de rendimiento de un servidorAplicando R al análisis de rendimiento de un servidor
Aplicando R al análisis de rendimiento de un servidor
 
Sql server 2016 novedades para desarrolladores
Sql server 2016 novedades para desarrolladoresSql server 2016 novedades para desarrolladores
Sql server 2016 novedades para desarrolladores
 
Tips en la instalación de Dynamics 365 FO - LBD, 365 Saturday
Tips en la instalación de Dynamics 365 FO - LBD, 365 SaturdayTips en la instalación de Dynamics 365 FO - LBD, 365 Saturday
Tips en la instalación de Dynamics 365 FO - LBD, 365 Saturday
 
SQL Server 2014 Mejoras del DB Engine
SQL Server 2014 Mejoras del DB EngineSQL Server 2014 Mejoras del DB Engine
SQL Server 2014 Mejoras del DB Engine
 
24 HOP edición Español - Patrones de escalalidad en microsoft azure sql datab...
24 HOP edición Español - Patrones de escalalidad en microsoft azure sql datab...24 HOP edición Español - Patrones de escalalidad en microsoft azure sql datab...
24 HOP edición Español - Patrones de escalalidad en microsoft azure sql datab...
 
IBM Systems Hoja de espe cificaciones IBM Power System S822LC for Big Data ...
IBM Systems Hoja de espe cificaciones IBM Power System  S822LC for Big  Data ...IBM Systems Hoja de espe cificaciones IBM Power System  S822LC for Big  Data ...
IBM Systems Hoja de espe cificaciones IBM Power System S822LC for Big Data ...
 
Azure Realtime analytics: Análisis de datos en tiempo real
Azure Realtime analytics: Análisis de datos en tiempo realAzure Realtime analytics: Análisis de datos en tiempo real
Azure Realtime analytics: Análisis de datos en tiempo real
 
Escalabilidad en azure sql database con elastic scale
Escalabilidad en azure sql database con elastic scaleEscalabilidad en azure sql database con elastic scale
Escalabilidad en azure sql database con elastic scale
 
Techdays 2010 Dynamic Memory and Linux
Techdays 2010 Dynamic Memory and LinuxTechdays 2010 Dynamic Memory and Linux
Techdays 2010 Dynamic Memory and Linux
 
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...
 
Expo Windows2003 R2
Expo  Windows2003  R2Expo  Windows2003  R2
Expo Windows2003 R2
 
Expo Windows2003 R2
Expo  Windows2003  R2Expo  Windows2003  R2
Expo Windows2003 R2
 
Certification Day
Certification DayCertification Day
Certification Day
 
Introducción a Microsoft Azure SQL Data Warehouse
Introducción a Microsoft Azure SQL Data WarehouseIntroducción a Microsoft Azure SQL Data Warehouse
Introducción a Microsoft Azure SQL Data Warehouse
 
Cuadro comparativo de SMBD
Cuadro comparativo de SMBD Cuadro comparativo de SMBD
Cuadro comparativo de SMBD
 
Azure sql database escalabilidad
Azure sql database escalabilidadAzure sql database escalabilidad
Azure sql database escalabilidad
 

Plus de Enrique Catala Bañuls

Plus de Enrique Catala Bañuls (20)

Sql server ha muerto, larga vida a sql server
Sql server ha muerto, larga vida a sql serverSql server ha muerto, larga vida a sql server
Sql server ha muerto, larga vida a sql server
 
Capas de acceso a datos .net escalables de verdad contra SQL Server
Capas de acceso a datos .net escalables de verdad contra SQL ServerCapas de acceso a datos .net escalables de verdad contra SQL Server
Capas de acceso a datos .net escalables de verdad contra SQL Server
 
Aplicando R al análisis de rendimiento de un servidor
Aplicando R al análisis de rendimiento de un servidorAplicando R al análisis de rendimiento de un servidor
Aplicando R al análisis de rendimiento de un servidor
 
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...
 
Planes de ejecución 3.0 sql 2016 y v next
Planes de ejecución 3.0 sql 2016 y v nextPlanes de ejecución 3.0 sql 2016 y v next
Planes de ejecución 3.0 sql 2016 y v next
 
Query store
Query storeQuery store
Query store
 
Planes de ejecucion 2016
Planes de ejecucion 2016Planes de ejecucion 2016
Planes de ejecucion 2016
 
Dawarehouse como servicio en azure (sqldw)
Dawarehouse como servicio en azure (sqldw)Dawarehouse como servicio en azure (sqldw)
Dawarehouse como servicio en azure (sqldw)
 
Query store
Query storeQuery store
Query store
 
Planes de ejecucion 2
Planes de ejecucion 2Planes de ejecucion 2
Planes de ejecucion 2
 
Planes de ejecucion 1
Planes de ejecucion 1Planes de ejecucion 1
Planes de ejecucion 1
 
Migración a sql server 2016
Migración a sql server 2016Migración a sql server 2016
Migración a sql server 2016
 
Datawarehouse como servicio en azure (sqldw)
Datawarehouse como servicio en azure (sqldw)Datawarehouse como servicio en azure (sqldw)
Datawarehouse como servicio en azure (sqldw)
 
Como hacer tuning a capas de acceso a datos en .NET (dotNetConference2016)
Como hacer tuning a capas de acceso a datos en .NET (dotNetConference2016)Como hacer tuning a capas de acceso a datos en .NET (dotNetConference2016)
Como hacer tuning a capas de acceso a datos en .NET (dotNetConference2016)
 
Como leer planes de ejecución - edición 2015
Como leer planes de ejecución - edición 2015Como leer planes de ejecución - edición 2015
Como leer planes de ejecución - edición 2015
 
HERRAMIENTA CASE PARA MODELADO DE ALMACENES DE DATOS BASADA EN LENGUAJES ESPE...
HERRAMIENTA CASE PARA MODELADO DE ALMACENES DE DATOS BASADA EN LENGUAJES ESPE...HERRAMIENTA CASE PARA MODELADO DE ALMACENES DE DATOS BASADA EN LENGUAJES ESPE...
HERRAMIENTA CASE PARA MODELADO DE ALMACENES DE DATOS BASADA EN LENGUAJES ESPE...
 
SQLCLR: .NET en el core de sql server
SQLCLR: .NET en el core de sql serverSQLCLR: .NET en el core de sql server
SQLCLR: .NET en el core de sql server
 
Escenarios híbridos con sql server 2014
Escenarios híbridos con sql server 2014Escenarios híbridos con sql server 2014
Escenarios híbridos con sql server 2014
 
Planes de ejecución en sql server 2014
Planes de ejecución en sql server 2014Planes de ejecución en sql server 2014
Planes de ejecución en sql server 2014
 
Transacciones diferidas
Transacciones diferidasTransacciones diferidas
Transacciones diferidas
 

Dernier

Anclaje Grupo 5..pptx de todo tipo de anclaje
Anclaje Grupo 5..pptx de todo tipo de anclajeAnclaje Grupo 5..pptx de todo tipo de anclaje
Anclaje Grupo 5..pptx de todo tipo de anclaje
klebersky23
 
REPORTE DE HOMICIDIO DOLOSO IRAPUATO ABRIL 2024
REPORTE DE HOMICIDIO DOLOSO IRAPUATO ABRIL 2024REPORTE DE HOMICIDIO DOLOSO IRAPUATO ABRIL 2024
REPORTE DE HOMICIDIO DOLOSO IRAPUATO ABRIL 2024
IrapuatoCmovamos
 
Conversacion.pptx en guarani boliviano latino
Conversacion.pptx en guarani boliviano latinoConversacion.pptx en guarani boliviano latino
Conversacion.pptx en guarani boliviano latino
BESTTech1
 

Dernier (20)

Anclaje Grupo 5..pptx de todo tipo de anclaje
Anclaje Grupo 5..pptx de todo tipo de anclajeAnclaje Grupo 5..pptx de todo tipo de anclaje
Anclaje Grupo 5..pptx de todo tipo de anclaje
 
REPORTE DE HOMICIDIO DOLOSO IRAPUATO ABRIL 2024
REPORTE DE HOMICIDIO DOLOSO IRAPUATO ABRIL 2024REPORTE DE HOMICIDIO DOLOSO IRAPUATO ABRIL 2024
REPORTE DE HOMICIDIO DOLOSO IRAPUATO ABRIL 2024
 
Conversacion.pptx en guarani boliviano latino
Conversacion.pptx en guarani boliviano latinoConversacion.pptx en guarani boliviano latino
Conversacion.pptx en guarani boliviano latino
 
AMNIOS Y CORDON UMBILICAL en el 3 embarazo (1).docx
AMNIOS Y CORDON UMBILICAL en el 3 embarazo (1).docxAMNIOS Y CORDON UMBILICAL en el 3 embarazo (1).docx
AMNIOS Y CORDON UMBILICAL en el 3 embarazo (1).docx
 
data lista de ingresantes de la universidad de ucayali 2024.pdf
data lista de ingresantes de la universidad de ucayali 2024.pdfdata lista de ingresantes de la universidad de ucayali 2024.pdf
data lista de ingresantes de la universidad de ucayali 2024.pdf
 
CUADRO COMPARATIVO DE ARCHIVOS Y CARPETAS.pptx
CUADRO COMPARATIVO DE ARCHIVOS Y CARPETAS.pptxCUADRO COMPARATIVO DE ARCHIVOS Y CARPETAS.pptx
CUADRO COMPARATIVO DE ARCHIVOS Y CARPETAS.pptx
 
ROMA Y EL IMPERIO, CIUDADES ANTIGUA ROMANAS
ROMA Y EL  IMPERIO, CIUDADES  ANTIGUA ROMANASROMA Y EL  IMPERIO, CIUDADES  ANTIGUA ROMANAS
ROMA Y EL IMPERIO, CIUDADES ANTIGUA ROMANAS
 
Unidad 6 estadística 2011 TABLA DE FRECUENCIA
Unidad 6 estadística 2011  TABLA DE FRECUENCIAUnidad 6 estadística 2011  TABLA DE FRECUENCIA
Unidad 6 estadística 2011 TABLA DE FRECUENCIA
 
PRESENTACION SOBRE LA HOJA DE CALCULO ⠀⠀
PRESENTACION SOBRE LA HOJA DE CALCULO ⠀⠀PRESENTACION SOBRE LA HOJA DE CALCULO ⠀⠀
PRESENTACION SOBRE LA HOJA DE CALCULO ⠀⠀
 
Las familias más ricas del medio oriente (2024).pdf
Las familias más ricas del medio oriente (2024).pdfLas familias más ricas del medio oriente (2024).pdf
Las familias más ricas del medio oriente (2024).pdf
 
Alfredo Gabriel Rodriguez Yajure Tarea#1
Alfredo Gabriel Rodriguez Yajure Tarea#1Alfredo Gabriel Rodriguez Yajure Tarea#1
Alfredo Gabriel Rodriguez Yajure Tarea#1
 
procedimiento paran la planificación en los centros educativos tipo v(multig...
procedimiento  paran la planificación en los centros educativos tipo v(multig...procedimiento  paran la planificación en los centros educativos tipo v(multig...
procedimiento paran la planificación en los centros educativos tipo v(multig...
 
Las familias más ricas de África en el año (2024).pdf
Las familias más ricas de África en el año (2024).pdfLas familias más ricas de África en el año (2024).pdf
Las familias más ricas de África en el año (2024).pdf
 
variables-estadisticas. Presentación powerpoint
variables-estadisticas. Presentación powerpointvariables-estadisticas. Presentación powerpoint
variables-estadisticas. Presentación powerpoint
 
Principales Retos Demográficos de Puerto Rico
Principales Retos Demográficos de Puerto RicoPrincipales Retos Demográficos de Puerto Rico
Principales Retos Demográficos de Puerto Rico
 
max-weber-principales-aportes de la sociologia (2).pptx
max-weber-principales-aportes de la sociologia (2).pptxmax-weber-principales-aportes de la sociologia (2).pptx
max-weber-principales-aportes de la sociologia (2).pptx
 
REGISTRO CONTABLE DE CONTABILIDAD 2022..
REGISTRO CONTABLE DE CONTABILIDAD 2022..REGISTRO CONTABLE DE CONTABILIDAD 2022..
REGISTRO CONTABLE DE CONTABILIDAD 2022..
 
SEMANA II - EQUIPOS, INSTRUMENTOS Y MATERIALES TOPOGRAFICOS.pdf
SEMANA II - EQUIPOS, INSTRUMENTOS Y MATERIALES TOPOGRAFICOS.pdfSEMANA II - EQUIPOS, INSTRUMENTOS Y MATERIALES TOPOGRAFICOS.pdf
SEMANA II - EQUIPOS, INSTRUMENTOS Y MATERIALES TOPOGRAFICOS.pdf
 
aine-2014.pdf/tipos de aines-clasificación
aine-2014.pdf/tipos de aines-clasificaciónaine-2014.pdf/tipos de aines-clasificación
aine-2014.pdf/tipos de aines-clasificación
 
MARCO TEORICO, SEMINARIO DE INVESTIGACION,
MARCO TEORICO, SEMINARIO DE INVESTIGACION,MARCO TEORICO, SEMINARIO DE INVESTIGACION,
MARCO TEORICO, SEMINARIO DE INVESTIGACION,
 

Paralelismo en sql server

  • 1. SOLIDQ SUMMIT MADRID 2017 #SQSummit17 Enrique Catalá | Mentor | ecatala@solidq.com | @enriquecatala Sácale rendimiento a tu hardware con el paralelismo de SQL Server
  • 2. SOLIDQ SUMMIT MADRID 2017 AGENDA
  • 3. SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017 El tiempo computacional suele ser mas elevado, pero el tiempo efectivo suele ser menor
  • 4. SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017
  • 5. SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017 Symmetric Multiprocessing System (SMP) Todas las CPU comparten la misma memoria Sin particionado HW para acceso a memoria Típico en computadoras de consumo Memory CPU CPU CPU CPU System bus CPU CPU CPU CPU SMP architecture CPU CPU CPU CPU F S B Main Memory
  • 6. SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017 Non-Uniform Memory Access Nodos conectados por bus compartido Típico en servidores de gama media-alta Shared Bus Memory Controller CPU CPU CPU CPU Memory Controller CPU CPU CPU CPU Memory Controller CPU CPU CPU CPU Memory Controller CPU CPU CPU CPU Node Controller Node Controller Node Controller Node Controller
  • 7. SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017 Massively Parallel Processing Nodos de computación con SQL conectados Arquitecturas DW petabyte (PDW, Azure SQLDW)
  • 8. SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017 • Automáticamente detecta configuraciones NUMA y se adapta Compatible • Minimiza latencia de memoria tratando de usar la memoria local de cada nodo Data-locality • Se puede afinar manualmente Configurable
  • 9. SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017 SQLOS Memory Node CPU Node Scheduler Worker Task SQLOS • Crea un scheduler para cada CPU lógica • Es como un gestor de recursos…OS Scheduler • Como una CPU lógica usada por los workers Worker • Son como “threads” lógicos Task • Unidad de trabajo para un worker (sentencia simple)
  • 10. SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017 Competitiva • Usa arquitectura de prioridades de procesos • Cada thread ejecuta en un slot de tiempo predeterminado • Un thread puede ser rechazado de ejecución por otro de mayor prioridad Cooperativa • Basada en listas de espera • Cada tarea se pone a si misma en lista de espera cuando necesita recurso • El mismo scheduler ejecuta hasta el final • Se previene context switching
  • 11. SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017 Multi-Instancias Tener varias instancias en el mismo HW Licenciamiento Afinar qué cores queremos asignar de los licenciados
  • 12. SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017 Auto afinado al inicio de instancia Hasta 30% beneficio CPU > 8 cores HT Se previenen mezclas logical-only o physical only nodes
  • 13. SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017 8000 8001 8002 8003
  • 14. SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017 if(best_plan_for_now.cost<1) return(best_plan_for_now) else if(MAXDOP>0 and ) return( ) Configuración • A nivel de instancia • Sp_configure Finalidad • Cambiar estadísticamente el nº de planes de ejecución Recomendación • En entorno OLTP mínimo subir a 50
  • 15. SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017 if(best_plan_for_now.cost<1) return(best_plan_for_now) else if( and best_plan.cost > threshold for parallelism) return(MIN(create_paralel_plan().cost, best_plan_for_now)) Configuración • A todos los niveles • Instancia, BBDD, conexión y query Finalidad • Limita explicitamente el nº de CPUs que un worker puede usar para una tarea Recomendación • En entorno OLTP recomendado 1 • Afinar agregaciones y op. mantenimiento a 0
  • 16. SOLIDQ SUMMIT MADRID 2017 DEMO
  • 17. SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017 Hardware NUMA SMP Instancia Soft-NUMA DOP Cost threshold for parallelism Max worker threads -P BBDD DOP Conexión Resource Governor Query MAXDOP Limitaciones de implementacion Funciones CROSS APPLY … QUERY RESOURCE GOVERNOR BBDD INSTANCIA
  • 18. SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017
  • 19. SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017 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
  • 20. SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017 Consume múltiples fuentes y produce multiples fuentes No se modifican las filas Se reducen filas si aparece un operador bitmap
  • 21. SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017 Consume múltiples hilos y produce un único hilo Combina resultados Es el que genera el famoso CXPACKET wait
  • 22. SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017 Type # producer threads # consumer threads Gather Streams DOP 1 Repartition Streams DOP DOP Distribute Streams 1 DOP
  • 23. SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017 Serial SerialParallel
  • 24. SOLIDQ SUMMIT MADRID 2017 DEMO
  • 25. SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017 Mala configuración DOP Mala configuración de affinidad de procesador Estadísticas desactualizadas • Generalmente problemas HW o mala configuración HW Cambios de context excesivos Malas arquitecturas de aplicación que estresan la CPU
  • 26. SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017 • MAXDOP = 0 • Threshold for parallelism = 5 Nunca usar la configuración por defecto • MAXDOP = 1 • Threshold for parallelism = 50 OLTP puro • MAXDOP = #’Phisical cores’ DW • MAXDOP <= #physical_cores_numa_node Regla de oro wait type name wait time (ms) requests CXPACKET 786556034 128110444 LATCH_EX 255701441 155553913 ASYNC_NETWORK_IO 129888217 19083082 PAGEIOLATCH_SH 83672746 2813207 WRITELOG 70634742 48398646 SOS_SCHEDULER_YIELD 47697175 176871743
  • 27. SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017 • ALTER INDEX, Statistics operations … • Agregaciones (AVG, MAX,…) • Recuerda que existe Resource Governor ¿Cuándo aplicar MAXDOP? • Recomendación = #physical_cores • Sistemas OLTP deberian configurarse a 1 • Siempre que veamos alto % de esperas CXPACKET ¿Cuándo aplicar “max degree of parallelism”? • Cuando quieras cambiar el nº de operaciones paralelas estadísticamente ¿Cuándo aplicar “cost threshold for parallelism?
  • 28. SOLIDQ SUMMIT MADRID 2017 AGENDA