miércoles, 17 de abril de 2013

RENDIMIENTO DE UNA BASE DE DATOS


            RENDIMIENTO DE UNA BASE DE DATOS
Técnicas de estimación para medir el rendimiento de la base de datos
Cuando diseña e implementa una base de datos, debe identificar las tablas de gran tamaño y los procesos más complejos que realizará la base de datos. También debe prestar una atención especial al rendimiento cuando diseña estas tablas. Además, debe considerar los efectos que puede tener en el rendimiento el aumento del número de usuarios con acceso a la base de datos.
Los siguientes cambios de diseño, entre otros, pueden mejorar el rendimiento:
·         Si una tabla que contiene cientos de miles de filas debe resumirse en un informe diario, puede agregar a la tabla una o varias columnas que contengan datos previamente agregados para utilizarlos sólo en dicho informe.
·         Las bases de datos pueden normalizarse en exceso. Esto significa que la base de datos se define con un gran número de tablas pequeñas interrelacionadas. Cuando la base de datos procesa los datos de estas tablas, debe realizar muchas más operaciones para combinar los datos relacionados. Este procesamiento adicional puede repercutir negativamente en el rendimiento de la base de datos. En esos casos, una reducción de la normalización de la base de datos para simplificar procesos complejos puede mejorar el rendimiento.
Este planeamiento o diseño debería tener en cuenta lo siguiente:
·         El tipo de disco que se va a utilizar, por ejemplo, los dispositivos RAID (matriz redundante de discos independientes). Para obtener más información, vea Acerca de las soluciones basadas en hardware.
·         Cómo se van a colocar los datos en los discos. Para obtener más información, vea Usar archivos y grupos de archivos.
·         El diseño de índices que se va a utilizar con el fin de mejorar el rendimiento de las consultas para tener acceso a los datos. Para obtener más información, vea Diseñar índices.
·         Cómo se van a establecer correctamente todos los parámetros de configuración para que la base de datos obtenga un buen rendimiento. Para obtener más información, vea Optimizar el rendimiento del servidor.
existen diferentes técnicas que se pueden usar aisladas ó en conjunto que ayudan en muchos casos a mejorar el rendimiento. Aqui teneis una pequeña lista con algunos consejos generales que suelen ayudar en muchas ocasiones cuando se necesita mejorar el rendimiento. En esta lista no tendremos en cuanta las mejorias que se pueden obtener con el uso adecuado de SQL y normalización de los datos.
  • Ejecutar VACUUM ANALYZE tan a menudo como sea necesario, Bien manualmente ó ajustanto autovacuum si es necesario
  • Un sistema de discos de alto rendimiento suele ser más importante que la cantidad de memoria disponible y esta a su vez más importante que la CPU utilizada.
  • Un servidor de bases de datos nunca tendra suficiente memoria. Cuanta más memoria, mejor.
  • Cuanto más discos disponibles en RAID, mejor. Usar Tablespaces para organizar los datos.
  • RAID 1+0 / 0+1 suele funcionar mejor que RAID 5.
  • Saparar el registro de transacciones (ficheros WAL) del resto de datos, usar diferentes discos.
  • Aumentar el valor de checkpoint_segments en sistemas con una alta concurrencia de actualizaciones de los datos (insert,update,delete)
  • Discos SCSI y SAS som preferibles en servidores con un alto nivel de utilización
  • Múltiples CPUs ayudan a ejecutar/realizar trabajos paralelos en nuestras bases de datos.
  • Ejecutar CLUSTER cuando sea viable en tablas con una alto nivel de actualización de datos.
  • Utilizar un servidor dedicado siempre que sea posible. Será más facil de configurar y ajustar para mejorar nuestro rendimiento.
  • Al inicializar/poblar una nueva base de datos con una gran cantidad de datos:
    • Usar COPY en vez de INSERT
    • Remover los indices durante la restauración de los datos.
    • Aumentar el valor de maintenance_work_mem
    • Aumentar el valor de checkpoint_segments
    • fsync=false !! No olvidar cambiar este valor a TRUE cuando termineis de restaurar los datos !!
    • No olvidar ejecutar ANALYZE al termino de la restauración de los datos
Bueno, y hasta aqui los consejos generales, más adelante iremos profundizando en aspectos concretos que pueden afectar al rendimiento.
Los índices se utilizan para buscar las filas con valores de columna específicos rápidamente. Sin un índice, MySQL debe comenzar con el primer disco y luego leer a través de toda la tabla para buscar las filas correspondientes. Cuanto mayor sea la tabla, más esto cuesta. Si la tabla tiene un índice para las columnas en cuestión, MySQL puede determinar rápidamente la posición de buscar en el medio del archivo de datos sin tener que mirar a todos los datos. Si una tabla tiene 1000 filas, entonces este es al menos 100 veces más rápido que la lectura secuencial. Tenga en cuenta que si usted necesita para acceder a la mayoría de las filas, es más rápido para leer de forma secuencial, ya que esto minimiza el disco busca.
http://www.postgresql.org.es/node/223
http://msdn.microsoft.com/es-es/library/ms190619(v=sql.105).aspx

TIEMPO DE CONSULTA




No hay comentarios:

Publicar un comentario