Optimización de aplicaciones
de bases de datos OLTP
Speaker: Edinson Medina
SQL Server Premier Field Engineer
Microsoft Corporation
Blog: http://blogs.technet.com/b/sql_pfe_latam/
Twitter: @dixitox
Moderador: Juan Romagosa
Microsoft Technology Specialist
Grabando Sesión
• Asegúrate que todos estén en modo Mudo.
• Por favor descarguen el cliente de Live Meeting. El cliente WEB no soporta
Audio.
• Clic en feedback (Parte superior derecha) y cambia tu estatus de color en caso
de requerir apoyo del moderador.
• Si tienes alguna pregunta, escríbela en el área de Preguntas & Respuestas.
• Edinson Medina es un Ingeniero Premier de Campo para Microsoft SQL
Server, Experto en el Motor de Dase de datos de SQL Server:
Performance, Troubleshooting, Optimizacion, Adminsitracion y
tecnologías de Alta Disponibilidad. Se especializa en soporte proactivo
como chequeos de Salud y Riesgos para Ambientes de SQL Server y
también soporte Reactivo. Ha aplicado sus conocimientos en diversas
compañías de sectores como Sector Publico, Petroleras, Educación,
Telecomunicaciones,
Ventas/Retail
y
Financieras;
diseñando,
desarrollando, implementando y dirigiendo proyectos concernientes a
las áreas mencionadas anteriormente.
Optimización de
aplicaciones de
bases de datos OLTP:
En esta sesión hablaremos de algunas de las Mejores Practicas en
diferentes niveles de SQL Server para obtener un buen
rendimiento en SQL Server.
AGENDA
• Optimización a Nivel de Instancia




Máximo Grado de Paralelismo
Máxima Memoria para el Servidor
Optimización de Almacenamiento
Configuración de TEMPDB
• Optimización a Nivel de Base de datos
 Actualización Automática de Estadísticas
 Creación Automática de Estadísticas
• Optimización de consultas




Índices
Filtrado (Likes, Functions)
Data type mismatch
Estadísticas
• Conclusiones
Optimizacion a Nivel
de Instacia
 Máximo Grado de Paralelismo
 Máxima Memoria para el Servidor
 Optimización de Almacenamiento
 Configuración de TEMPDB
Optimizacion a Nivel
de Instacia
Máximo Grado de Paralelismo:
• Para los servidores que utilizan más de ocho procesadores, utilice la
siguiente configuración: MAXDOP = 8
• Para los servidores que utilizan procesadores de ocho o menos, utilice la
siguiente configuración: MAXDOP = 0 a N
Optimizacion a Nivel
de Instacia
Máxima Memoria para el Servidor:
•
•
Que pasaría si no configuro el Max Server Memory?
Como se configura el Max Server Memory?
•
Es Max Server Memory lo máximo de memoria que SQL Server consumirá de la
memoria del Servidor?
Como debo calcular el valor para Max Server Memory?
•
Optimizacion a Nivel
de Instacia
Máxima Memoria para el Servidor:
Escenario: 8GB RAM, 8 CPU Cores
Memoria a Reservar = Memoria Sistema Operativo + Worker Thread Memory + Non-SQL Buffer Pool + Other SQL Components + Other
Aplications
Memoria Sistema Operativo = Dejar 1 GB para el S.O, puede Variar
Worker Thread Memory = 2 MB (Porque es x64) * 512 + ((N-4) * 16). N es el numero de cores
Other = 1.5 GB, puede variar
Memoria a Reservar = 1 GB + 1.5 GB + 1.5 GB = 4 GB
Memoria MAX = 8 GB - 3,2 GB = 4 GB
Optimizacion a Nivel
de Instacia
Optimización de Almacenamiento:
•
•
•
•
•
•
Entender la características de IO de SQL Server y Aplicaciones
Mas spindles y mas rápidos mejora el performance
Siempre coloca los archivos de Log en RAID 1+0 (o RAID 1)
Aislé los archivos de Log de Transacciones de los Archivos de Data.
Trate de hacer crecer los archivos manualmente, en vez de basarse en el AUTOGROW
Deje encendido el Autogrow, y configúrelo para crecer por tamaño y no porcentaje.
Optimizacion a Nivel
de Instacia
Configuración de TEMPDB:
•
•
•
•
Para mayor rendimiento coloque a TEMPDB en RAID 1+0.
Pre configure TEMPDB con un tamaño adecuado.
Configure mas de 1 archivo de data, la recomendación GENERAL es de 1
archivo por núcleo, hasta un máximo de 8.
Todos los data files deben tener el mismo tamaño y misma configuración de
AUTOGROW.
DEMO
 Máximo Grado de Paralelismo
 Máxima Memoria para el Servidor
 Optimización de Almacenamiento
 Configuración de TEMPDB
Optimizacion a Nivel de
Base de Datos
 Actualización Automática de
Estadísticas
 Creación Automática de
Estadísticas
Optimizacion a Nivel de
Base de Datos
Actualización Automática de Estadísticas:
•
•
AUTO_UPDATE_STATISTICS: el optimizador de consultas determina si las
estadísticas están desactualizadas y las actualiza cuando son usadas por una
consulta.
AUTO_UPDATE_STATISTICS_ASYNC determina si el optimizador de consultas
utiliza actualizaciones sincrónicas o asincrónicas de las estadísticas.
Optimizacion a Nivel de
Base de Datos
Creación Automática de Estadísticas:
•
AUTO_CREATE_STATISTICS, el optimizador de consultas crea las estadísticas en
columnas individuales en el WHERE de la consulta, según sea necesario, para
mejorar las estimaciones de cardinalidad para el plan de consulta.
DEMO
 Actualización Automática de
Estadísticas
 Creación Automática de
Estadísticas
Optimizacion de
consultas
Índices
Filtrado (Likes, Functions)
Data type mismatch
Estadísticas
Optimizacion de
consultas
Indices
 Tipos de Índices:
Clustered
No Clustered
 Mejores Practicas:
• Columnas usadas en el WHERE
• Columnas usadas en el JOIN
• Columnas en Foreing Keys
• Usar Índices Cubiertos donde es
apropiado
• Escoja un índice clustered para
mejor rendimiento
• Evite el sobre-indexamiento
Optimizacion de
consultas
Filtrado:
• Aplicar funciones en columnas le hace imposible a SQL
Server el usar un índice en dicha columna
• Evite usar la expresión LIKE con el prefijo % (wildcard)
Optimizacion de
consultas
Data type mismatch:
• Los predicados en ambos lados de una compasión
siempre deben tener el mismo tipo de datos.
Optimizacion de
consultas
Malas Estadísticas:
•
•
AUTO UPDATE STATISTICS esta apagado
Tablas muy grandes pueden causar que el muestreo por
defecto sea insuficiente para generar buenas estadísticas.
DEMO
Índices
Filtrado (Likes, Functions)
Data type mismatch
Conclusiones
Un mejor rendimiento se base en menos IO.
Existen algunas mejores practicas Generales, sin
embargo para determinar el valor mas adecuado se
debe hacer pruebas y análisis.
Estadísticas Actualizadas son muy importantes para
un buen rendimiento.
La creación de Índices adecuados dependerá de las
consultas enviadas a SQL Server.
Preguntas y Respuestas
Contactos
Sitio web:
http://venezuela.sqlpass.org/
Facebook:
https://www.facebook.com/sqlpassvzla
Twitter:
https://twitter.com/sqlpassve
https://twitter.com/dixitox
Blog:
http://blogs.technet.com/b/sql_pfe_latam/
http://blogs.technet.com/b/pfelatam/
Preguntas y Respuestas
Muchas gracias por tu participación
Descargar

Optimización de aplicaciones de bases de datos