miércoles, 17 de abril de 2013

Rendimiento de una base de datos

El administrador de bases de datos es el profesional  responsable de los aspectos técnicos, tecnológicos, científicos, inteligencia de negocios y legales de bases de datos. Los administradores de bases de datos, implementan, dan soporte y gestionan, bases de datos corporativas. Los administradores de bases de datos, crean y configuran bases de datos relacionales. Los administradores de bases de datos, son responsables de la integridad de los datos y la disponibilidad. Los administradores de bases de datos, diseñan, despliegan y monitorizan servidores de bases de datos. Los administradores de bases de datos, diseñan la distribución de los datos y las soluciones de almacenamiento. Los DBAs, garantizan la seguridad de las bases de datos, incluyendo backups y recuperación de desastres. Los administradores de bases de datos, planean e implementan el aprovisionamiento de los datos y aplicaciones. Los administradores de bases de datos, diseñan planes de contigencia. Los administradores de bases de datos, diseñan y crean las bases de datos corporativas de soluciones avanzadas.

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