miércoles, 8 de junio de 2011

Optimización de Performace en SQL Server

A continuación se detallan conceptos y pautas básicas a tener en cuenta para un confiable estrategia de optimizacion de rendimiento para DBMS SQL Server.

Existen tres conceptos esenciales.
1) Tareas: El proceso debe considerar trabajar sobre las siguientes areas:
a) Esquema de diseño.
b) Optimización del query.
c) Indexación.
d) Locking.
e) Server Tuning.
2) Importancia: Los niveles más bajos del modelo son muy impoortantes pues impactan en forma directa a la performance, pues no es lo mismo tratar de solucionar o mejorar rendimiento sobre algo no muy correctamante diseñado, es decir, si inviertes tiempo y recursos en el esquema de diseño, la base de datos será más fáciles de optimizar para los demás niveles.
3) Orden: Comienza desde el esquema de diseño y se mueve hacia el server tunning. Este es el orden en que los elementos de la base de datos son más fáciles de optimizar.
Esquema de Diseño
La primera y más importante tarea de performance es optimizar el esquema de diseño. Y optimizar el esquema - diseño de base de datos tiene un impacto directo sobre el resto de los niveles de optimización. En esta etapa engloba los conceptos típicos de normalización, desnormalizacion y generalización o método de análisis de relaciones, columnas y asociaciones entre ellas o mejor dicho relaciones padres e hijos en el esquema de base de datos.
Optimización de Query
El segundo paso en la optimización de la estrategia de performance es optimizar los queries. Esto involucra el rediseño de queries. Luego de que optimices el esquema de base de datos se debe revisar y rediseñar los queries.
Indexación
El paso siguiente es la optimización de índices. Porque ello es el puente entre tus queries y los datos. La existencia o ausencia de los indices pueden afectar la performance de la base de datos ya sea mejorando o empeorando la misma. Es por ello que hay que revisar los índices solo después de haber optimizado los queries y re evaluado tu esquema de base de datos.
Locking
La penúltima fase es la estrategia de optimización de locks. Esta fase impacta en la concurrencia de la base de datos, afectando la performance de la misma. Bien es sabido, que los locking en las bases de datos SQL Server, se recomienda que lo maneje el mismo dbms, salvo que tengan que realizar alguna tarea por ej. en batch y deban lockear alguna tabla para realizar alguna actualización masiva.

Server Tunning

Él ultima paso es la estrategia de optimización es tunear el server. Se puede tunear el server en diferentes aspectos: agregar memoria, mejorar el disco i/O, sumar procesador, etc. Dependiendo de donde tengamos el cuello de botella. Ojo, sumar mas hardware no asegura que el problema de performance desaparezca, sino que esta intimamente ligado a los aspectos tratados con anterioridad y lo que si puede pasar es que tarde un poco mas en alcanzar el pico, por ejemplo memoria, si no se revee bien los niveles anteriores.