SlideShare una empresa de Scribd logo
1 de 32
Descargar para leer sin conexión
¡OPTIMIZACIÓN! Lo que siempre has
      querido saber para exprimir SQL
                  Server
Enrique Catala Bañuls
Mentor
SolidQ
ecatala@solidq.com
Enrique Catalá Bañuls
   Ingeniero Informático
   Mentor en SolidQ
   Microsoft Technical Ranger
   Colaborador destacado en MSDN Spain
   Microsoft Active Professional 2010
   Microsoft Certified Trainer
   Microsoft Certified IT Professional
     Database Developer 2008
     Database Administrator 2008
 Arquitecto de entre otros Health Check y SCODA
 Motero y piloto de ULM 
Agenda

 Configuraciones avanzadas de SQL Server
     NUMA
     Threads vs fibers
     IO Affinity Mask
     Max Degree of parallelism
     Configuracion de memoria
     Tempdb
 Configuraciones avanzadas de base de datos
   Log transacciones
   Date correlation optimization
   Parametrization
 Patrones para Developers
   Reducción de idas y venidas mediante el uso de TVP
   Las funciones en SQL Server, el desastre y su solución
Agenda


 Configuraciones avanzadas de SQL Server
     NUMA
     Threads vs fibers
     IO Affinity Mask
     Max Degree of parallelism
     Tempdb
NUMA

 Non-Uniform Memory Access
 Particionado hardware donde cada nodo a grandes rasgos
  tiene subconjunto de CPU, memoria
 Interesa no salir del nodo
 Cada nodo NUMA tiene su propio lazywritter y su puerto
  para finalización de E/S (el network listener)
NUMA

 SQL Server detecta automáticamente la configuración
  NUMA
 Pensada para mejorar la escalabilidad de sistemas
  multiprocesador
 Minimiza la latencia de acceso a memoria
 No hay que modificar aplicaciones ni tocar nada
 Podemos afinar: máscara de afinidad y Soft-NUMA
NUMA: Soft-NUMA
 Segmentamos afinidad de procesador (no memoria)
 Cada nodo numa software contiene Lazywritter y proceso E/S
 Diferencia obvia con NUMA hardware:
   En Soft-NUMA seguiremos teniendo un único nodo de memoria
 Solo provee afinidad a nivel de CPU
       ALTER SERVER CONFIGURATION SET PROCESS AFFINITY CPU = 2 TO 5
 Si vemos esperas CXPACKET y LAZYWRITTER unidas, debemos
  configurarlo
  (escenario no NUMA)
 Segmentación multi-instancia
Thread vs fibers: Scheduler
 En entornos computacionales hay que dar solución al problema de la
  multitarea (más procesos que CPU concurrentemente)
 El scheduler o programador se encarga de agendar a cada proceso un
  tiempo finito de acceso a recursos de la máquina para ejecución
 Su eficiencia depende de:
   Nº de procesos simultaneos a agendar
   Latencia (tiempo entre que se solicita petición y se sirve)
   Prioridades e imparcialidad entre semejantes al asignar tiempo CPU

 SQL Server tiene su propio scheduler
   En windows los procesos poseen acceso exclusivo a recursos generalmente
   El scheduler de SQL Server facilita la cooperación entre procesos
   Mucho mas escalable en tareas de SQL Server pero mas complejo de diseñar
Thread vs fibers: SQL Server Workers
 El scheduler puede ser visto como una CPU lógica
 Un worker está asociado a un scheduler y solo a uno
   Haciendo una comparación, seria como los procesos en windows, pero que
    corren sobre el scheduler
   Pueden ser thread o fiber (hilo o fibra)
   El scheduler se encarga de crear y destruir workers
 Se pueden explícitamente fijar mediante la máscara de afinidad a una CPU
  concreta
 Se crean si el scheduler recibe petición de tarea a lanzar y no hay workers
  inactivos
 Se destruyen despues de 15 minutos de inactividad o si hay presión de
  memoria
 En un sistema x64 cada worker usa como mínimo 2Mb
 Cada core (sea o no hyperthreading) posee 1 worker al arrancar (OFFLINE si
  se ha quitado de su máscara de afinidad)
Thread vs fibers
 Varias fibras pueden correr sobre un único hilo ya que son muy
  ligeras (aprox 10 fibras/thread)
 «lightweight pooling option» a 1, activa uso de fibras
 Optimización de escenarios (aumento 15% rendimiento):
   Processor time: ~80%
   Context switches: >20k/sec
 ADVERTENCIA no son siempre la mejor opción:
   No se soporta CLR heterogeneo con consultas, SQL Mail, SQLXML,
    …
   En escenarios como linked servers hay sobrecarga porque se obliga
    a convertir la tarea a hilo
IO Affinity Mask
 Optimización escenarios con alto consumo de CPU por E/S
 Cada operación E/S en SQL Server necesita finalización
   Validación de bytes transferidos, no errores en SO, correcto nº de
    página, checksum válido,…
   En definitiva, consumo de CPU
 La mascara de afinidad de E/S sirve para direccionar las
  operaciones E/S a un scheduler oculto con un lazywriter que
  que solo hace operaciones E/S
 Cuidado al configurar la mascara y la máscara de IO

                  MAL        BIEN
NUMA y max degree of parallelism

 Siempre hay que afinar, sobre todo en sistemas OLTP
 Como norma general:
   Nunca exceder en MAXDOP el nº de hilos físicos por nodo NUMA
 Aproximadamente 6ms por petición y más de 200h
  computacionales


                                    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
NUMA y max degree of parallelism
 Se carga tabla en buffer cache
  NUMA 0
 Cell 0: ms nodo NUMA 0
 Cell 1: ms nodo NUMA 1
 Cell 2: ms nodo NUMA 2




www.solidq.com
Configuracion de memoria

 Habilitar “Lock Pages in memory” siempre
   Se habilita mediante política a nivel de máquina para el usuario del
    servicio
   Evita swapping de RAM a disco
 Trace flag “mágico” 
   834 (Large Page Allocation)
     Solo recomendable en Win 2008 R2 y SQL 2008 R2
     Medias de 10% de mejora de rendimiento obtenidas
     Tiene un gran pero…
Tempdb

 El “borrador” de SQL Server…no es solo donde van las #tablas 
 Precrear a un mínimo de 2xMemoria física
 El nº de ficheros de datos debe ser exáctamente igual nº de hilos
  CPU
   IMPORTANTE: Todos precreados al mismo tamaño…TODOS
 Es buena idea separar tempdb de la lun de datos
   Excepcionalmente, si es un entorno OLTP altamente transaccional,
    poner los datos y tempdb en la misma LUN para mejorar aleatoriedad
    (ojo hablamos de sistemas de almacenamientos con mucho spindle)
Agenda


 Configuraciones avanzadas de BBDD
   Log de transacciones
   Date correlation optimization
   Parametrization
Log de transacciones
 Siempre almacenamiento dedicado exclusivo para el log de
  transaciones
   Todo pasa por él
   Es secuencial
     No crees más de un fichero, no sirve de nada…
   Interesa máximo rendimiento en escrituras
 Cuidado con la fragmentación!
   Precrearlo con tamaño suficiente para que nunca crezca y si lo hace, que
    lo haga a intervalos gordos.
   Ultima salida…recrear el log, asique no dejes que esto te ocurra
   Revisa usando “dbcc loginfo”
Date Correlation Optimization

 Configuración a nivel de base de datos
 Optimizar equi-joins entre dos tablas con date o datetime correladas a
  las que aplicamos filtro
 Muy util en escenarios típicos de reporting o datawarehousing

ALTER DATABASE tu_Base_de_Datos
          SET DATE_CORRELATION_OPTIMIZATION ON;
Date Correlation Optimization:
                    Beneficios

 SQL Server mantendrá estadísticas de correlación entre ambas tablas
 El efecto será que interna y transparentemente se crearán vistas
  indexadas con la información necesaria
 SQL Server gestionará todas las casuísticas
   Añadirá nuevas estructuras cuando se cumplan
   Deshabilitará cuando algo deje de cumplirse
   Se encargará de ver si la consulta es mas eficiente usando la información
    extra calculada
Date Correlation Optimization:
                  Restricciones
 Debe existir clave ajena de una columna entre las tablas
 Ambas tablas deben tener columnas datetime NOT NULL
 Al menos una de las columnas debe ser la clave principal de un
  índice clústered
 Ambas tablas deben tener el mismo propietario

PRECAUCIÓN: En tablas altamente modificadas puede existir
detrimento de rendimiento por el mantenimiento interno que
producen las estadísticas
DEMO


DATE CORRELATION
  OPTIMIZATION
Parametrización: Mejorar escenarios
               ad-hoc (I)

 Optimize for ad-hoc workloads
   A nivel de instancia de SQL Server
   Solo útil para consultas ad-hoc livianas
   Almacena un pequeño código auxiliar en lugar del plan completo
    (300 bytes vs >15k)
   Minimiza presión sobre el
    cache de planes de ejecución
   Solo si se detecta reutilización,
    se recompila y almacena en
    cache
Mejorar escenarios ad-hoc (II)
 Force parametrization
   A nivel de base de datos
   Ocurre por cada statement. Cada batch puede tener múltiples statements
    autoparametrizados
   Fuerza la parametrización de toda sentencia SELECT, UPDATE, INSERT y DELETE
   En ciertos escenarios, mejora enormemente el rendimiento a base de
    reutilización de planes de ejecución
 PRECAUCIÓN: Testear siempre el entorno antes
  de poner en producción. Puede que salgamos
  perdiendo…
 Excepciones
      Statements dentro de SP, funciones,…
      Si ANSI_PADDING o ANSI_NULL = OFF
      Statements que referencian variables
      Statements en cursor
 Antes
                        % of memory used
                        0%
                                                                                      Datos reales
                   0%
            0%                     0%      Compiled Plan Proc
                    4% 10%
             14%                           Compiled Plan Trigger
                                           Compiled Plan Adhoc
                                           Compiled Plan Prepared
                                           Extended Proc Proc       uses      number_ocurrencies
                                                                                             cacheobjtype      percentage_memory_KB
                                           Parse Tree UsrTab                1           6583 Compiled Plan                        30,57
                             72%
                                           Parse Tree Check                 1              6 Parse Tree                            0,01
                                           Parse Tree View                  1          13123 Compiled Plan Stu                     0,00
                                                                            2           3525 Compiled Plan                         8,04

 Después                                                                   2
                                                                            3
                                                                                         653 Parse Tree
                                                                                        2710 Compiled Plan
                                                                                                                                   2,36
                                                                                                                                   4,69
                                                                            3             11 Parse Tree                            2,85
                                                                            3              1 Compiled Plan Stu                     0,02
                                                                            4            139 Parse Tree                            0,43
                                                                            4           2163 Compiled Plan                         0,00
                                                                            5           1998 Compiled Plan                         1,98
                                                                            5             41 Parse Tree                            0,34
                                                                            6           3578 Compiled Plan                         2,03
                                                                            6            333 Parse Tree                            1,06
                                                                            6              2 Extended Proc                         0,00
                                                                            7           2164 Compiled Plan                         1,49
                                                                            7             14 Parse Tree                            0,04
                                                                            8           1010 Compiled Plan                         0,90
     Más del 55% de la memoria de planes                                    8
                                                                            9
                                                                                         118 Parse Tree
                                                                                        1113 Compiled Plan
                                                                                                                                   0,36
                                                                                                                                   0,81
     de ejecución reutilizado menos de 10                                   9              8 Parse Tree                            0,02
                                                                           10            836 Compiled Plan                         0,68
     veces
Agenda

 Patrones para Developers
   Reducción de idas y venidas mediante el uso de TVP
   Las funciones en SQL Server, el desastre y su solución
TVP (Parámetros de tabla)

 Escenarios
     Actualización en lotes del servidor
     Parámetros en lote para usar en consultas
     Pasar una tabla entre rutinas
     Migración de otras bases de datos
 Los datos almacenados son tabulares!
 Criterio común
   Gran cantidad de datos pasados desde el cliente al servidor
   Aplicación de lógica de negocio antes de actualizar datos de forma persistente
   Ej. Data mining, sistemas de inventariado, herramientas ETL
TVP (Parámetros de tabla)

 Empaquetado de lógica de negocio
   Mejor modelo de programación
   Procesamos transacciones en orden de llegada
   Mejor manejabilidad (procedimiento almacenado lo puede hacer
    todo)
 Rendimiento
   Reducción de idas y vueltas al servidor
   Operaciones basadas en conjuntos
   Transporte de datos eficiente
 Tipado Fuerte
TVP (Parámetros de tabla)




“Aprovecha las características TVP y MERGE en tus aplicaciones”
http://msdn.microsoft.com/es-es/sqlserver
Funciones en SQL Server

 Podemos definir las funciones de usuario en:
   Funciones inline
   Funciones multi-statement
 Tendamos a eliminar las funciones…¿pero todas?
 Problema:
   No son visibles en los planes de ejecución gráficos
   Producen malísimas estimaciones estadísticas que derivan en
    inadecuados usos de NESTED LOOPS
   El código se interpreta en cada llamada (si no se usa bien)
   Por último y más importante: NO ES POSIBLE PARALELISMO
DEMO


FUNCIONES EN SQL SERVER.
EL DESASTRE Y SU SOLUCIÓN
Agenda

 Configuraciones avanzadas de SQL Server
     NUMA
     Threads vs fibers
     IO Affinity Mask
     Max Degree of parallelism
     Configuracion de memoria
     Tempdb
 Configuraciones avanzadas de base de datos
   Log transacciones
   Date correlation optimization
   Parametrization
 Patrones para Developers
   Reducción de idas y venidas mediante el uso de TVP
   Las funciones en SQL Server, el desastre y su solución
¿ PREGUNTAS ?

  ecatala@solidq.com


http://blogs.solidq.com/ElRinconDelDBA/default.aspx

Más contenido relacionado

La actualidad más candente

Oracle fusion cloud financial : How to create Journal , Manual Vs Spreadsheet?
Oracle fusion cloud financial : How to create Journal , Manual Vs Spreadsheet?Oracle fusion cloud financial : How to create Journal , Manual Vs Spreadsheet?
Oracle fusion cloud financial : How to create Journal , Manual Vs Spreadsheet?Pranav Pandya
 
MIS-CH15: Managing Global Systems
MIS-CH15: Managing Global SystemsMIS-CH15: Managing Global Systems
MIS-CH15: Managing Global SystemsSukanya Ben
 
Storage Primer
Storage PrimerStorage Primer
Storage Primersriramr
 
MIS-CH9: Achieving Operational Excellence and Customer Intimacy
MIS-CH9: Achieving Operational Excellence and Customer IntimacyMIS-CH9: Achieving Operational Excellence and Customer Intimacy
MIS-CH9: Achieving Operational Excellence and Customer IntimacySukanya Ben
 
Installing and configuring financial data quality management 11.1.2.1 for fin...
Installing and configuring financial data quality management 11.1.2.1 for fin...Installing and configuring financial data quality management 11.1.2.1 for fin...
Installing and configuring financial data quality management 11.1.2.1 for fin...Charan Patnaik
 

La actualidad más candente (7)

SOME_IP_29408.pdf
SOME_IP_29408.pdfSOME_IP_29408.pdf
SOME_IP_29408.pdf
 
Oracle fusion cloud financial : How to create Journal , Manual Vs Spreadsheet?
Oracle fusion cloud financial : How to create Journal , Manual Vs Spreadsheet?Oracle fusion cloud financial : How to create Journal , Manual Vs Spreadsheet?
Oracle fusion cloud financial : How to create Journal , Manual Vs Spreadsheet?
 
MIS-CH15: Managing Global Systems
MIS-CH15: Managing Global SystemsMIS-CH15: Managing Global Systems
MIS-CH15: Managing Global Systems
 
Storage Primer
Storage PrimerStorage Primer
Storage Primer
 
Capitulo 2 servidores
Capitulo 2   servidoresCapitulo 2   servidores
Capitulo 2 servidores
 
MIS-CH9: Achieving Operational Excellence and Customer Intimacy
MIS-CH9: Achieving Operational Excellence and Customer IntimacyMIS-CH9: Achieving Operational Excellence and Customer Intimacy
MIS-CH9: Achieving Operational Excellence and Customer Intimacy
 
Installing and configuring financial data quality management 11.1.2.1 for fin...
Installing and configuring financial data quality management 11.1.2.1 for fin...Installing and configuring financial data quality management 11.1.2.1 for fin...
Installing and configuring financial data quality management 11.1.2.1 for fin...
 

Destacado

Trucos, OptimizacióN Y Buenas PráCticas Para Sql
Trucos, OptimizacióN Y Buenas PráCticas Para SqlTrucos, OptimizacióN Y Buenas PráCticas Para Sql
Trucos, OptimizacióN Y Buenas PráCticas Para SqlAntonio Soto
 
Mejores practicas sql
Mejores practicas sqlMejores practicas sql
Mejores practicas sqlnnakasone
 
Administrando SQL Server, mejores practicas para un DBA
Administrando SQL Server, mejores practicas para un DBAAdministrando SQL Server, mejores practicas para un DBA
Administrando SQL Server, mejores practicas para un DBASpanishPASSVC
 
BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos
BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos
BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos SolidQ
 
BEST_PRACTICES: Buenas prácticas para el DBA
BEST_PRACTICES: Buenas prácticas para el DBA BEST_PRACTICES: Buenas prácticas para el DBA
BEST_PRACTICES: Buenas prácticas para el DBA SolidQ
 
Taller Consultas Básicas SQL Server No 1
Taller Consultas Básicas SQL Server No 1Taller Consultas Básicas SQL Server No 1
Taller Consultas Básicas SQL Server No 1Julián Castiblanco
 
Programacion con SQL Server 2005
Programacion con SQL Server 2005Programacion con SQL Server 2005
Programacion con SQL Server 2005brobelo
 
Técnicas avanzadas de consultas con sql server 2014
Técnicas avanzadas de consultas con sql server 2014Técnicas avanzadas de consultas con sql server 2014
Técnicas avanzadas de consultas con sql server 2014JOSE AHIAS LOPEZ PORTILLO
 
WebCast de optimización Sql Server - Almacenamiento e Índices
WebCast de optimización Sql Server - Almacenamiento e ÍndicesWebCast de optimización Sql Server - Almacenamiento e Índices
WebCast de optimización Sql Server - Almacenamiento e ÍndicesJOSE AHIAS LOPEZ PORTILLO
 
Novedades en el manejo de Grandes volúmenes de datos con SQL Server 2014
Novedades en el manejo de Grandes volúmenes de datos con SQL Server 2014Novedades en el manejo de Grandes volúmenes de datos con SQL Server 2014
Novedades en el manejo de Grandes volúmenes de datos con SQL Server 2014Enrique Puig
 
INDICES EN SQL SERVER
INDICES EN SQL SERVERINDICES EN SQL SERVER
INDICES EN SQL SERVERDarwin Durand
 
Curso sql server 2012 clase 1
Curso sql server 2012 clase 1Curso sql server 2012 clase 1
Curso sql server 2012 clase 1josealopezpastor
 
Curso sql server 2012 clase 3
Curso sql server 2012 clase 3Curso sql server 2012 clase 3
Curso sql server 2012 clase 3josealopezpastor
 
Bases de Datos Distribuidas con Sql Server 2012
Bases de Datos Distribuidas con Sql Server 2012Bases de Datos Distribuidas con Sql Server 2012
Bases de Datos Distribuidas con Sql Server 2012Antonio Ortiz
 
Curso sql server 2012 clase 2
Curso sql server 2012 clase 2Curso sql server 2012 clase 2
Curso sql server 2012 clase 2josealopezpastor
 
Spatial Data in SQL Server
Spatial Data in SQL ServerSpatial Data in SQL Server
Spatial Data in SQL ServerEduardo Castro
 
Unidad 1 algoritmos y programas
Unidad 1 algoritmos y programasUnidad 1 algoritmos y programas
Unidad 1 algoritmos y programasRoberth Camana
 
Variables, tipos de datos, operadores
Variables, tipos de datos, operadores Variables, tipos de datos, operadores
Variables, tipos de datos, operadores juan ventura
 

Destacado (20)

Trucos, OptimizacióN Y Buenas PráCticas Para Sql
Trucos, OptimizacióN Y Buenas PráCticas Para SqlTrucos, OptimizacióN Y Buenas PráCticas Para Sql
Trucos, OptimizacióN Y Buenas PráCticas Para Sql
 
Mejores practicas sql
Mejores practicas sqlMejores practicas sql
Mejores practicas sql
 
Administrando SQL Server, mejores practicas para un DBA
Administrando SQL Server, mejores practicas para un DBAAdministrando SQL Server, mejores practicas para un DBA
Administrando SQL Server, mejores practicas para un DBA
 
BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos
BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos
BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos
 
BEST_PRACTICES: Buenas prácticas para el DBA
BEST_PRACTICES: Buenas prácticas para el DBA BEST_PRACTICES: Buenas prácticas para el DBA
BEST_PRACTICES: Buenas prácticas para el DBA
 
Taller Consultas Básicas SQL Server No 1
Taller Consultas Básicas SQL Server No 1Taller Consultas Básicas SQL Server No 1
Taller Consultas Básicas SQL Server No 1
 
Programacion con SQL Server 2005
Programacion con SQL Server 2005Programacion con SQL Server 2005
Programacion con SQL Server 2005
 
Técnicas avanzadas de consultas con sql server 2014
Técnicas avanzadas de consultas con sql server 2014Técnicas avanzadas de consultas con sql server 2014
Técnicas avanzadas de consultas con sql server 2014
 
Taller Básico Sentencias SQL
Taller Básico Sentencias SQL Taller Básico Sentencias SQL
Taller Básico Sentencias SQL
 
WebCast de optimización Sql Server - Almacenamiento e Índices
WebCast de optimización Sql Server - Almacenamiento e ÍndicesWebCast de optimización Sql Server - Almacenamiento e Índices
WebCast de optimización Sql Server - Almacenamiento e Índices
 
Novedades en el manejo de Grandes volúmenes de datos con SQL Server 2014
Novedades en el manejo de Grandes volúmenes de datos con SQL Server 2014Novedades en el manejo de Grandes volúmenes de datos con SQL Server 2014
Novedades en el manejo de Grandes volúmenes de datos con SQL Server 2014
 
INDICES EN SQL SERVER
INDICES EN SQL SERVERINDICES EN SQL SERVER
INDICES EN SQL SERVER
 
Curso sql server 2012 clase 1
Curso sql server 2012 clase 1Curso sql server 2012 clase 1
Curso sql server 2012 clase 1
 
Curso sql server 2012 clase 3
Curso sql server 2012 clase 3Curso sql server 2012 clase 3
Curso sql server 2012 clase 3
 
Bases de Datos Distribuidas con Sql Server 2012
Bases de Datos Distribuidas con Sql Server 2012Bases de Datos Distribuidas con Sql Server 2012
Bases de Datos Distribuidas con Sql Server 2012
 
Curso sql server 2012 clase 2
Curso sql server 2012 clase 2Curso sql server 2012 clase 2
Curso sql server 2012 clase 2
 
Spatial Data in SQL Server
Spatial Data in SQL ServerSpatial Data in SQL Server
Spatial Data in SQL Server
 
Unidad 1 algoritmos y programas
Unidad 1 algoritmos y programasUnidad 1 algoritmos y programas
Unidad 1 algoritmos y programas
 
Variables, tipos de datos, operadores
Variables, tipos de datos, operadores Variables, tipos de datos, operadores
Variables, tipos de datos, operadores
 
EO_0317
EO_0317EO_0317
EO_0317
 

Similar a Lo que siempre has querido saber para exprimir sql server

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...SolidQ
 
Carbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshareCarbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshareJulián Castiblanco
 
Nuevo motor relacional In-memory OLTP
Nuevo motor relacional In-memory OLTPNuevo motor relacional In-memory OLTP
Nuevo motor relacional In-memory OLTPSolidQ
 
Introducción a bases de datos en memoria oltp
Introducción a bases de datos en memoria oltpIntroducción a bases de datos en memoria oltp
Introducción a bases de datos en memoria oltpEliana Caraballo
 
Sistemas de entrada y salida
Sistemas de entrada y salidaSistemas de entrada y salida
Sistemas de entrada y salidaIsrael Rey
 
Tema 1: Procesadores segmentados.Tema 1: Procesadores segmentados.
Tema 1: Procesadores segmentados.Tema 1: Procesadores segmentados.Tema 1: Procesadores segmentados.Tema 1: Procesadores segmentados.
Tema 1: Procesadores segmentados.Tema 1: Procesadores segmentados.Manuel Fernandez Barcell
 
Bases de datos NoSQL - Huancayo - 2010
Bases de datos NoSQL - Huancayo - 2010Bases de datos NoSQL - Huancayo - 2010
Bases de datos NoSQL - Huancayo - 2010Antonio Ognio
 
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
 
Sistema Operativo Oper Ajaja
Sistema Operativo Oper AjajaSistema Operativo Oper Ajaja
Sistema Operativo Oper Ajajaalbertman
 
Sistema Operativo Oper Ajaja
Sistema Operativo Oper AjajaSistema Operativo Oper Ajaja
Sistema Operativo Oper Ajajaguest111d2
 
Cassandra Instalacion y Utilizacion
Cassandra Instalacion y UtilizacionCassandra Instalacion y Utilizacion
Cassandra Instalacion y UtilizacionLeandro Carrera
 

Similar a Lo que siempre has querido saber para exprimir sql server (20)

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...
 
Carbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshareCarbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshare
 
Nuevo motor relacional In-memory OLTP
Nuevo motor relacional In-memory OLTPNuevo motor relacional In-memory OLTP
Nuevo motor relacional In-memory OLTP
 
Instancias Amazon EC2 a profundidad
Instancias Amazon EC2 a profundidadInstancias Amazon EC2 a profundidad
Instancias Amazon EC2 a profundidad
 
Introducción a bases de datos en memoria oltp
Introducción a bases de datos en memoria oltpIntroducción a bases de datos en memoria oltp
Introducción a bases de datos en memoria oltp
 
Arquitectura risc
Arquitectura riscArquitectura risc
Arquitectura risc
 
Sistemas de entrada y salida
Sistemas de entrada y salidaSistemas de entrada y salida
Sistemas de entrada y salida
 
Tema 1: Procesadores segmentados.Tema 1: Procesadores segmentados.
Tema 1: Procesadores segmentados.Tema 1: Procesadores segmentados.Tema 1: Procesadores segmentados.Tema 1: Procesadores segmentados.
Tema 1: Procesadores segmentados.Tema 1: Procesadores segmentados.
 
Arqui hardware
Arqui hardwareArqui hardware
Arqui hardware
 
Bases de datos NoSQL - Huancayo - 2010
Bases de datos NoSQL - Huancayo - 2010Bases de datos NoSQL - Huancayo - 2010
Bases de datos NoSQL - Huancayo - 2010
 
Sistema E S
Sistema E SSistema E S
Sistema E S
 
Optimiza tus queries desde abajo
Optimiza tus queries desde abajoOptimiza tus queries desde abajo
Optimiza tus queries desde abajo
 
Unidad IV
Unidad IVUnidad IV
Unidad IV
 
Sqlite
SqliteSqlite
Sqlite
 
Rendimiento en aplicaciones web con Symfony2
Rendimiento en aplicaciones web con Symfony2Rendimiento en aplicaciones web con Symfony2
Rendimiento en aplicaciones web con Symfony2
 
Exposicio teradat
Exposicio teradatExposicio teradat
Exposicio teradat
 
Sistema Operativo Oper Ajaja
Sistema Operativo Oper AjajaSistema Operativo Oper Ajaja
Sistema Operativo Oper Ajaja
 
Sistema Operativo Oper Ajaja
Sistema Operativo Oper AjajaSistema Operativo Oper Ajaja
Sistema Operativo Oper Ajaja
 
Cassandra Instalacion y Utilizacion
Cassandra Instalacion y UtilizacionCassandra Instalacion y Utilizacion
Cassandra Instalacion y Utilizacion
 
Gestion de Memoria
Gestion de MemoriaGestion de Memoria
Gestion de Memoria
 

Más de Enrique Catala Bañuls

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 serverEnrique Catala Bañuls
 
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 ServerEnrique Catala Bañuls
 
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 servidorEnrique Catala Bañuls
 
Técnicas avanzadas para resolver tus problemas de sql server
Técnicas avanzadas para resolver tus problemas de sql serverTécnicas avanzadas para resolver tus problemas de sql server
Técnicas avanzadas para resolver tus problemas de sql serverEnrique Catala Bañuls
 
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...Enrique Catala Bañuls
 
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 nextEnrique Catala Bañuls
 
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 servidorEnrique Catala Bañuls
 
Sql server 2016 novedades para desarrolladores
Sql server 2016 novedades para desarrolladoresSql server 2016 novedades para desarrolladores
Sql server 2016 novedades para desarrolladoresEnrique Catala Bañuls
 
Dawarehouse como servicio en azure (sqldw)
Dawarehouse como servicio en azure (sqldw)Dawarehouse como servicio en azure (sqldw)
Dawarehouse como servicio en azure (sqldw)Enrique Catala Bañuls
 
Datawarehouse como servicio en azure (sqldw)
Datawarehouse como servicio en azure (sqldw)Datawarehouse como servicio en azure (sqldw)
Datawarehouse como servicio en azure (sqldw)Enrique Catala Bañuls
 
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)Enrique Catala Bañuls
 
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 2015Enrique Catala Bañuls
 

Más 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
 
Paralelismo en SQL Server
Paralelismo en SQL ServerParalelismo en SQL Server
Paralelismo en 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
 
Técnicas avanzadas para resolver tus problemas de sql server
Técnicas avanzadas para resolver tus problemas de sql serverTécnicas avanzadas para resolver tus problemas de sql server
Técnicas avanzadas para resolver tus problemas de sql server
 
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
 
Paralelismo en sql server
Paralelismo en sql serverParalelismo en sql server
Paralelismo en 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
 
Query store
Query storeQuery store
Query store
 
Planes de ejecucion 2016
Planes de ejecucion 2016Planes de ejecucion 2016
Planes de ejecucion 2016
 
Sql server 2016 novedades para desarrolladores
Sql server 2016 novedades para desarrolladoresSql server 2016 novedades para desarrolladores
Sql server 2016 novedades para desarrolladores
 
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
 

Último

EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 

Último (10)

EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 

Lo que siempre has querido saber para exprimir sql server

  • 1. ¡OPTIMIZACIÓN! Lo que siempre has querido saber para exprimir SQL Server Enrique Catala Bañuls Mentor SolidQ ecatala@solidq.com
  • 2. Enrique Catalá Bañuls  Ingeniero Informático  Mentor en SolidQ  Microsoft Technical Ranger  Colaborador destacado en MSDN Spain  Microsoft Active Professional 2010  Microsoft Certified Trainer  Microsoft Certified IT Professional  Database Developer 2008  Database Administrator 2008  Arquitecto de entre otros Health Check y SCODA  Motero y piloto de ULM 
  • 3. Agenda  Configuraciones avanzadas de SQL Server  NUMA  Threads vs fibers  IO Affinity Mask  Max Degree of parallelism  Configuracion de memoria  Tempdb  Configuraciones avanzadas de base de datos  Log transacciones  Date correlation optimization  Parametrization  Patrones para Developers  Reducción de idas y venidas mediante el uso de TVP  Las funciones en SQL Server, el desastre y su solución
  • 4. Agenda  Configuraciones avanzadas de SQL Server  NUMA  Threads vs fibers  IO Affinity Mask  Max Degree of parallelism  Tempdb
  • 5. NUMA  Non-Uniform Memory Access  Particionado hardware donde cada nodo a grandes rasgos tiene subconjunto de CPU, memoria  Interesa no salir del nodo  Cada nodo NUMA tiene su propio lazywritter y su puerto para finalización de E/S (el network listener)
  • 6. NUMA  SQL Server detecta automáticamente la configuración NUMA  Pensada para mejorar la escalabilidad de sistemas multiprocesador  Minimiza la latencia de acceso a memoria  No hay que modificar aplicaciones ni tocar nada  Podemos afinar: máscara de afinidad y Soft-NUMA
  • 7. NUMA: Soft-NUMA  Segmentamos afinidad de procesador (no memoria)  Cada nodo numa software contiene Lazywritter y proceso E/S  Diferencia obvia con NUMA hardware:  En Soft-NUMA seguiremos teniendo un único nodo de memoria  Solo provee afinidad a nivel de CPU ALTER SERVER CONFIGURATION SET PROCESS AFFINITY CPU = 2 TO 5  Si vemos esperas CXPACKET y LAZYWRITTER unidas, debemos configurarlo (escenario no NUMA)  Segmentación multi-instancia
  • 8. Thread vs fibers: Scheduler  En entornos computacionales hay que dar solución al problema de la multitarea (más procesos que CPU concurrentemente)  El scheduler o programador se encarga de agendar a cada proceso un tiempo finito de acceso a recursos de la máquina para ejecución  Su eficiencia depende de:  Nº de procesos simultaneos a agendar  Latencia (tiempo entre que se solicita petición y se sirve)  Prioridades e imparcialidad entre semejantes al asignar tiempo CPU  SQL Server tiene su propio scheduler  En windows los procesos poseen acceso exclusivo a recursos generalmente  El scheduler de SQL Server facilita la cooperación entre procesos  Mucho mas escalable en tareas de SQL Server pero mas complejo de diseñar
  • 9. Thread vs fibers: SQL Server Workers  El scheduler puede ser visto como una CPU lógica  Un worker está asociado a un scheduler y solo a uno  Haciendo una comparación, seria como los procesos en windows, pero que corren sobre el scheduler  Pueden ser thread o fiber (hilo o fibra)  El scheduler se encarga de crear y destruir workers  Se pueden explícitamente fijar mediante la máscara de afinidad a una CPU concreta  Se crean si el scheduler recibe petición de tarea a lanzar y no hay workers inactivos  Se destruyen despues de 15 minutos de inactividad o si hay presión de memoria  En un sistema x64 cada worker usa como mínimo 2Mb  Cada core (sea o no hyperthreading) posee 1 worker al arrancar (OFFLINE si se ha quitado de su máscara de afinidad)
  • 10. Thread vs fibers  Varias fibras pueden correr sobre un único hilo ya que son muy ligeras (aprox 10 fibras/thread)  «lightweight pooling option» a 1, activa uso de fibras  Optimización de escenarios (aumento 15% rendimiento):  Processor time: ~80%  Context switches: >20k/sec  ADVERTENCIA no son siempre la mejor opción:  No se soporta CLR heterogeneo con consultas, SQL Mail, SQLXML, …  En escenarios como linked servers hay sobrecarga porque se obliga a convertir la tarea a hilo
  • 11. IO Affinity Mask  Optimización escenarios con alto consumo de CPU por E/S  Cada operación E/S en SQL Server necesita finalización  Validación de bytes transferidos, no errores en SO, correcto nº de página, checksum válido,…  En definitiva, consumo de CPU  La mascara de afinidad de E/S sirve para direccionar las operaciones E/S a un scheduler oculto con un lazywriter que que solo hace operaciones E/S  Cuidado al configurar la mascara y la máscara de IO MAL BIEN
  • 12. NUMA y max degree of parallelism  Siempre hay que afinar, sobre todo en sistemas OLTP  Como norma general:  Nunca exceder en MAXDOP el nº de hilos físicos por nodo NUMA  Aproximadamente 6ms por petición y más de 200h computacionales 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
  • 13. NUMA y max degree of parallelism  Se carga tabla en buffer cache NUMA 0  Cell 0: ms nodo NUMA 0  Cell 1: ms nodo NUMA 1  Cell 2: ms nodo NUMA 2 www.solidq.com
  • 14. Configuracion de memoria  Habilitar “Lock Pages in memory” siempre  Se habilita mediante política a nivel de máquina para el usuario del servicio  Evita swapping de RAM a disco  Trace flag “mágico”   834 (Large Page Allocation)  Solo recomendable en Win 2008 R2 y SQL 2008 R2  Medias de 10% de mejora de rendimiento obtenidas  Tiene un gran pero…
  • 15. Tempdb  El “borrador” de SQL Server…no es solo donde van las #tablas   Precrear a un mínimo de 2xMemoria física  El nº de ficheros de datos debe ser exáctamente igual nº de hilos CPU  IMPORTANTE: Todos precreados al mismo tamaño…TODOS  Es buena idea separar tempdb de la lun de datos  Excepcionalmente, si es un entorno OLTP altamente transaccional, poner los datos y tempdb en la misma LUN para mejorar aleatoriedad (ojo hablamos de sistemas de almacenamientos con mucho spindle)
  • 16. Agenda  Configuraciones avanzadas de BBDD  Log de transacciones  Date correlation optimization  Parametrization
  • 17. Log de transacciones  Siempre almacenamiento dedicado exclusivo para el log de transaciones  Todo pasa por él  Es secuencial  No crees más de un fichero, no sirve de nada…  Interesa máximo rendimiento en escrituras  Cuidado con la fragmentación!  Precrearlo con tamaño suficiente para que nunca crezca y si lo hace, que lo haga a intervalos gordos.  Ultima salida…recrear el log, asique no dejes que esto te ocurra  Revisa usando “dbcc loginfo”
  • 18. Date Correlation Optimization  Configuración a nivel de base de datos  Optimizar equi-joins entre dos tablas con date o datetime correladas a las que aplicamos filtro  Muy util en escenarios típicos de reporting o datawarehousing ALTER DATABASE tu_Base_de_Datos SET DATE_CORRELATION_OPTIMIZATION ON;
  • 19. Date Correlation Optimization: Beneficios  SQL Server mantendrá estadísticas de correlación entre ambas tablas  El efecto será que interna y transparentemente se crearán vistas indexadas con la información necesaria  SQL Server gestionará todas las casuísticas  Añadirá nuevas estructuras cuando se cumplan  Deshabilitará cuando algo deje de cumplirse  Se encargará de ver si la consulta es mas eficiente usando la información extra calculada
  • 20. Date Correlation Optimization: Restricciones  Debe existir clave ajena de una columna entre las tablas  Ambas tablas deben tener columnas datetime NOT NULL  Al menos una de las columnas debe ser la clave principal de un índice clústered  Ambas tablas deben tener el mismo propietario PRECAUCIÓN: En tablas altamente modificadas puede existir detrimento de rendimiento por el mantenimiento interno que producen las estadísticas
  • 21. DEMO DATE CORRELATION OPTIMIZATION
  • 22. Parametrización: Mejorar escenarios ad-hoc (I)  Optimize for ad-hoc workloads  A nivel de instancia de SQL Server  Solo útil para consultas ad-hoc livianas  Almacena un pequeño código auxiliar en lugar del plan completo (300 bytes vs >15k)  Minimiza presión sobre el cache de planes de ejecución  Solo si se detecta reutilización, se recompila y almacena en cache
  • 23. Mejorar escenarios ad-hoc (II)  Force parametrization  A nivel de base de datos  Ocurre por cada statement. Cada batch puede tener múltiples statements autoparametrizados  Fuerza la parametrización de toda sentencia SELECT, UPDATE, INSERT y DELETE  En ciertos escenarios, mejora enormemente el rendimiento a base de reutilización de planes de ejecución  PRECAUCIÓN: Testear siempre el entorno antes de poner en producción. Puede que salgamos perdiendo…  Excepciones  Statements dentro de SP, funciones,…  Si ANSI_PADDING o ANSI_NULL = OFF  Statements que referencian variables  Statements en cursor
  • 24.  Antes % of memory used 0% Datos reales 0% 0% 0% Compiled Plan Proc 4% 10% 14% Compiled Plan Trigger Compiled Plan Adhoc Compiled Plan Prepared Extended Proc Proc uses number_ocurrencies cacheobjtype percentage_memory_KB Parse Tree UsrTab 1 6583 Compiled Plan 30,57 72% Parse Tree Check 1 6 Parse Tree 0,01 Parse Tree View 1 13123 Compiled Plan Stu 0,00 2 3525 Compiled Plan 8,04  Después 2 3 653 Parse Tree 2710 Compiled Plan 2,36 4,69 3 11 Parse Tree 2,85 3 1 Compiled Plan Stu 0,02 4 139 Parse Tree 0,43 4 2163 Compiled Plan 0,00 5 1998 Compiled Plan 1,98 5 41 Parse Tree 0,34 6 3578 Compiled Plan 2,03 6 333 Parse Tree 1,06 6 2 Extended Proc 0,00 7 2164 Compiled Plan 1,49 7 14 Parse Tree 0,04 8 1010 Compiled Plan 0,90 Más del 55% de la memoria de planes 8 9 118 Parse Tree 1113 Compiled Plan 0,36 0,81 de ejecución reutilizado menos de 10 9 8 Parse Tree 0,02 10 836 Compiled Plan 0,68 veces
  • 25. Agenda  Patrones para Developers  Reducción de idas y venidas mediante el uso de TVP  Las funciones en SQL Server, el desastre y su solución
  • 26. TVP (Parámetros de tabla)  Escenarios  Actualización en lotes del servidor  Parámetros en lote para usar en consultas  Pasar una tabla entre rutinas  Migración de otras bases de datos  Los datos almacenados son tabulares!  Criterio común  Gran cantidad de datos pasados desde el cliente al servidor  Aplicación de lógica de negocio antes de actualizar datos de forma persistente  Ej. Data mining, sistemas de inventariado, herramientas ETL
  • 27. TVP (Parámetros de tabla)  Empaquetado de lógica de negocio  Mejor modelo de programación  Procesamos transacciones en orden de llegada  Mejor manejabilidad (procedimiento almacenado lo puede hacer todo)  Rendimiento  Reducción de idas y vueltas al servidor  Operaciones basadas en conjuntos  Transporte de datos eficiente  Tipado Fuerte
  • 28. TVP (Parámetros de tabla) “Aprovecha las características TVP y MERGE en tus aplicaciones” http://msdn.microsoft.com/es-es/sqlserver
  • 29. Funciones en SQL Server  Podemos definir las funciones de usuario en:  Funciones inline  Funciones multi-statement  Tendamos a eliminar las funciones…¿pero todas?  Problema:  No son visibles en los planes de ejecución gráficos  Producen malísimas estimaciones estadísticas que derivan en inadecuados usos de NESTED LOOPS  El código se interpreta en cada llamada (si no se usa bien)  Por último y más importante: NO ES POSIBLE PARALELISMO
  • 30. DEMO FUNCIONES EN SQL SERVER. EL DESASTRE Y SU SOLUCIÓN
  • 31. Agenda  Configuraciones avanzadas de SQL Server  NUMA  Threads vs fibers  IO Affinity Mask  Max Degree of parallelism  Configuracion de memoria  Tempdb  Configuraciones avanzadas de base de datos  Log transacciones  Date correlation optimization  Parametrization  Patrones para Developers  Reducción de idas y venidas mediante el uso de TVP  Las funciones en SQL Server, el desastre y su solución
  • 32. ¿ PREGUNTAS ? ecatala@solidq.com http://blogs.solidq.com/ElRinconDelDBA/default.aspx