Optimización del rendimiento de PostgreSQL Server

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
Ajustes shared_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.
Predeterminado 128 MB
Recomendado 25% de la RAM
Ajustes work_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.
Predeterminado 4 MB
Recommended Se 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.
Ajustes maintenance_work_mem
Description El 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.
Predeterminado 64 MB
Recommended Aquí, 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é
Ajustes effective_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.

Predeterminado 4 GB
Recomendado 50% de la memoria
Parámetros de trabajo
Ajustes max_worker_processes
Descripción El 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.
Predeterminado 8
Recomendado Se recomienda utilizar el 50% de los procesadores para que el sistema pueda funcionar normalmente.
Ajustes max_parallel_workers
Descripción El 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.
Predeterminado 2
Recomendado Se recomienda utilizar el 50% de los procesadores para que el sistema pueda funcionar de manera óptima.
Ajustes max_parallel_workers_per_gather
Description El 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.
Predeterminado 2
Recomendado Los trabajadores paralelos se toman del conjunto de procesadores establecido por max_worker_processes y limitado por max_parallel_workers.
Otros
Ajustes max_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.

Predeterminado 1 GB
Recomendado El aumento de este parámetro puede incrementar la cantidad de tiempo necesario para la recuperación en caso de fallos.
Ajustes default_statistics_target
Descripción El 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.
Predeterminado Tamaño de ejemplo = 300 * default_statistics_target
Recomendado Los 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!

Usted está en una compañía confiable.

>> <<
Solución para el monitoreo de aplicaciones e infraestructura