Pasar al contenido principal

Consejos para aumentar el rendimiento de PostgreSQL

Como hemos dicho muchas veces, no existe siempre la solución perfecta para aumentar el rendimiento de nuestro sistema. Las bases de datos son sistemas dinámicos que se utilizan de diferentes maneras y contienen diferentes tipos de datos.

Una configuración que funciona bien con un sistema, no tiene porque hacerlo con otro y existen muchos factores que pueden afectar positiva y negativamente al rendimiento.

Pero 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.

Añadir nuevo comentario

Código de idioma del comentario.

Texto sin formato

  • No se permiten etiquetas HTML.
  • Saltos automáticos de líneas y de párrafos.
  • Las direcciones de correos electrónicos y páginas web se convierten en enlaces automáticamente.