Optimización del rendimiento de PostgreSQL Server

PostgreSQL es un sistema de gestión de bases de datos relacionales de código abierto, a nivel empresarial, conocido por su robustez. Varias organizaciones eligen PostgreSQL ya que admite tipos de datos avanzados, cumple con el modelo ACID, escala fácilmente y tiene robustas funciones de seguridad. Dado que muchas aplicaciones de misión crítica utilizan PostgreSQL, los administradores de bases de datos tienen que asegurarse de contar con un sistema de monitoreo para ayudar a identificar puntos débiles y ajustar la base de datos como y cuando sea necesario para mejorar el rendimiento de la base de datos.

Veamos algunos de los parámetros de configuración más importantes para optimizar el servidor de bases de datos PostgreSQL:
Optimización de memoria
Ajustesshared_buffers
Descripción

Los buffers compartidos son una sección específica de la memoria designada para almacenar en caché los bloques de índice y datos a los que se accede con frecuencia. Al utilizar buffers compartidos, el sistema de base de datos puede mejorar su rendimiento minimizando la necesidad de leer datos del disco, que normalmente es un proceso lento.

Nota: Para aumentar esta configuración se debe aumentar el parámetro max_wal_size para procesar la mayor cantidad de datos cuando se produce un punto de control.
Predeterminado128 MB
Recomendado25% de la RAM
Ajusteswork_mem
Descripción

La memoria de trabajo en PostgreSQL es la memoria asignada para ejecutar operaciones individuales, como ordenar o agrupar. Esta memoria contiene estructuras de datos temporales y resultados intermedios que se generan durante la operación. La cantidad de memoria de trabajo requerida por una operación depende de la complejidad y el tamaño de los datos de entrada, así como de la memoria del sistema disponible. Una memoria de trabajo inadecuada puede provocar que las operaciones utilicen archivos temporales basados en disco, lo que puede ralentizar el rendimiento.

Nota: Postgres 13 presenta una nueva configuración llamada hash_mem_multiplier, que sirve como una opción extra para optimizar la asignación de memoria.
Predeterminado4 MB
RecommendedSe puede elegir un valor razonable en función de la cantidad de datos que se consultan y se guardan en la memoria. Es posible que también tenga que considerar el parámetro max_connections antes de definir un valor, ya que varias conexiones pueden estar ejecutándose en paralelo. (RAM total utilizada = work_mem * conexiones simultáneas). Encontrar el valor óptimo para work_mem puede ser difícil, pero un valor predeterminado razonable que podría funcionar universalmente es de alrededor de 64 MB.
Ajustesmaintenance_work_mem
DescriptionEl parámetro maintenance_work_mem controla la cantidad de memoria utilizada para operaciones de mantenimiento como VACUUM, creación de índices y adición de claves externas. Dado que sólo se puede ejecutar una de estas operaciones a la vez en una sesión de base de datos, es seguro definirlo como un valor mayor que work_mem. Los valores superiores pueden mejorar el rendimiento del comando "vacuum" y la restauración de los volcados de la base de datos.
Predeterminado64 MB
RecommendedAquí, debe considerar que cuando se ejecuta "autovacuum", la memoria consumida = autovacuum_max_workers x maintenance_work_mem. El valor puede ser de 512 MB.
Optimización de caché
Ajusteseffective_cache_size
Descripción

El parámetro effective_cache_size especifica la cantidad de memoria que el servidor de base de datos puede utilizar para almacenar en caché los datos y bloques de índice en la memoria. Este parámetro representa la cantidad estimada de memoria utilizada por la caché del sistema de archivos del sistema operativo y cualquier otro proceso que se esté ejecutando en el mismo sistema.

El planificador de consultas utiliza el parámetro effective_cache_size para calcular el costo de varios planes de ejecución de consultas. Este ajuste permite al planificador realizar una estimación informada de la cantidad de datos que se espera que se almacenen en caché en la memoria, que luego se utiliza para tomar decisiones óptimas con respecto a la selección del plan de ejecución de consultas.

Predeterminado4 GB
Recomendado50% de la memoria
Parámetros de trabajo
Ajustesmax_worker_processes
DescripciónEl parámetro max_worker_processes en PostgreSQL establece un límite en el número de procesos de trabajo en segundo plano concurrentes que se pueden ejecutar simultáneamente. Estos procesos de trabajo realizan varias funciones, como la ejecución de consultas en paralelo, el manejo de conexiones y las tareas en segundo plano.
Predeterminado8
RecomendadoSe recomienda utilizar el 50% de los procesadores para que el sistema pueda funcionar normalmente.
Ajustesmax_parallel_workers
DescripciónEl parámetro max_parallel_workers en PostgreSQL limita el recuento total de procesos de trabajo paralelos que pueden estar activos simultáneamente. Estos procesos de trabajo se emplean para mejorar el rendimiento del sistema durante la ejecución de consultas paralelas y otras operaciones. Es crucial configurar con cuidado este parámetro porque puede afectar significativamente la utilización de recursos y el rendimiento general del sistema.
Predeterminado2
RecomendadoSe recomienda utilizar el 50% de los procesadores para que el sistema pueda funcionar de manera óptima.
Ajustesmax_parallel_workers_per_gather
DescriptionEl parámetro max_parallel_workers_per_gather de PostgreSQL gestiona el recuento máximo de procesos de trabajo paralelos que pueden estar involucrados en una sola operación. Este parámetro establece un límite superior en el número de trabajadores que pueden ejecutar escaneos de tablas y planes de consulta en paralelo. Puede afectar significativamente al rendimiento de las consultas paralelas y se debe configurar cuidadosamente teniendo en cuenta los recursos del sistema y las características de la carga de trabajo.
Predeterminado2
RecomendadoLos trabajadores paralelos se toman del conjunto de procesadores establecido por max_worker_processes y limitado por max_parallel_workers.
Otros
Ajustesmax_wal_size
Description

El parámetro max_wal_size en PostgreSQL establece un límite superior en el tamaño del registro de escritura anticipada (WAL) que el sistema de base de datos puede usar. El WAL es una parte crítica del mecanismo de gestión de transacciones de PostgreSQL, responsable de mantener la consistencia y durabilidad de los datos, incluso en caso de fallos o errores del sistema.

La configuración de este parámetro le permite establecer el tamaño máximo para el aumento de tamaño de WAL durante los puntos de control automáticos. El tamaño de WAL puede exceder el valor de max_wal_size bajo circunstancias especiales, como una carga pesada, un fallo en archive_command o un valor alto de wal_keep_size.

Predeterminado1 GB
RecomendadoEl aumento de este parámetro puede incrementar la cantidad de tiempo necesario para la recuperación en caso de fallos.
Ajustesdefault_statistics_target
DescripciónEl parámetro de configuración default_statistics_target especifica el nivel de detalle utilizado por el optimizador de consultas al recopilar estadísticas sobre la base de datos. El número de filas que examina el optimizador para determinar el plan de ejecución de consultas más eficaz se rige por este parámetro. Determina el tamaño de ejemplo que el optimizador usa al analizar una tabla para este fin.
PredeterminadoTamaño de ejemplo = 300 * default_statistics_target
RecomendadoLos valores mayores aumentan el tiempo necesario para trabajar con el comando ANALYZE, pero podrían mejorar la calidad de las estimaciones del planificador.

Precaución: Cambiar una configuración afectará al sistema. Se recomienda probar el sistema con una carga de prueba antes de realizar las modificaciones en la configuración de producción.

Applications Manager es una herramienta altamente efectiva para monitorear el rendimiento de la base de datos PostgreSQL. Gracias a sus amplias funciones de monitoreo, ayuda a los administradores de bases de datos a garantizar que la base de datos funcione sin problemas con un tiempo de inactividad mínimo y costos generales predecibles a largo plazo. Puede configurar alarmas para métricas importantes y recibir notificaciones cuando se infrinjan los umbrales. ¡Esto puede servirle de advertencia para optimizar su base de datos con el fin de mejorar el rendimiento y garantizar una excelente experiencia de usuario!

Si desea probar Applications Manager para optimizar el rendimiento de PostgreSQL

¡Descargue una prueba gratuita de 30 días ahora mismo!

Amado por clientes de todo el mundo

"Herramienta destacada con amplias capacidades de monitoreo"

Nos permite realizar un seguimiento de métricas cruciales como los tiempos de respuesta, la utilización de recursos, las tasas de error y el rendimiento de las transacciones. Las alertas de monitoreo en tiempo real nos notifican rápidamente sobre cualquier problema o anomalía, lo que nos permite tomar medidas inmediatas.

Industria: Investigación y desarrollo

"La recomiendo muy seguido por lo simple que es la herramienta al usarse, por el soporte que dan y tiene un buen precio."
Alejandro Aguirre

Jefe de aplicaciones, Axtel

Confiado por más de 6000 empresas globales