Cuando nos encontramos con problemas de rendimiento en nuestro servidor
de base de datos, por lo regular pensamos que se trata de algún problema físico
(CPU, memoria, disco) del servidor. Sin embargo la mayoría de los problemas de
rendimiento se deben al diseño lógico de la Base de Datos, con esto me refiero
al el diseño de la BD, los Índices y en la forma de utilizar Transact-SQL para
consultar la BD.
Diseño
de la Base de Datos
El diseño de la BD es un punto muy importante. Si se tiene un buen
diseño, hecho a la medida de las reglas de negocio y necesidades para la cual
se está creando garantiza éxito y un menor tiempo de soporte.
Recomendaciones para diseñar
una Base de Datos
- No hay que olvidarnos de la Formas Normales.
- Crear por cada Tabla una llave Primaria que sirva como
identificador de la tabla.
- Los campos de llave primaria de preferencia deben ser numéricos e
”Identity”.
- Crear llaves foráneas para relacionar las tablas.
- Evitar relaciones muchos a muchos, crear tablas intermedias.
- No crear tablas ni campos que no se van a utilizar.
Creación
de Índices
Un índice es una estructura de datos definida sobre una columna de tabla
(o varias) y que permite localizar de forma rápida las filas de la tabla en
base a su contenido en la columna indexada.
Los índices son de suma importancia para un buen rendimiento de una Base
de Datos ya que estos permiten realizar consultas con menos operaciones de E/S
de disco y un menor uso de los recursos del sistema.
Recomendaciones para crear
índices
- Crear índices adecuados a las consultas más ejecutadas y las más
costosas.
- No solo crear índices por cada campo, crear índices compuestos
cuando las consultas así lo requieran.
- En las tablas que continuamente se están actualizando, no crear
demasiados índices y tratar de definirlos con el menor número de columnas.
- En tablas que no se actualizan constantemente y tienen un gran
número de datos se recomienda usar un número mayor de índices.
- En tablas con pocos datos no es necesario crear índices.
- Revisa periódicamente la fragmentación de los índices y en caso de
ser necesario re-indéxalos o reconstruirlos.
Creación
de consultas
Transact-SQL tiene una gran variedad de opciones para hacer una consulta
de distinta forma, es por ello que tenemos que encontrar la forma de realizar
las consultas de acuerdo a nuestras necesidades con el menor tiempo y costo
posible.
Recomendación para crear
consultas
- Revisar siempre el plan de ejecución de las consultas para que
identifiques como SQL está viendo la consulta y veas la manera de mejorar
el rendimiento.
- Tratar de no utilizar cursores, ya que impactan al rendimiento.
- Sub-Consultas transfórmalas en “JOINS”. Muchas veces las
sub-consultas con sentencias “IN” se vuelven muy lentas.
- Evitar consultas que generan bloqueos.
- Evitar el uso de “NOT IN”, usar mejor “EXISTS” o “NO EXISTS”.
- Evitar usar “SUBSTRING” dentro de un “WHERE”
- Usar “ORDER BY” solo si es absolutamente necesario.
- No usar el comando “GROUP BY” sin una función de agregación.
- Consultar únicamente las filas y columnas requeridas. No usar un
“SELECT”.
No hay comentarios:
Publicar un comentario