Parámetros en PostgreSQL. Optimízalos

Para la optimización de los parámetros en PostgreSQL hay que tener en cuenta que vienen con un valor por defecto, pero no tiene por qué adecuarse a nuestro servicio. Generalmente no debería crear conflictos, pero si tenemos una carga de trabajo abultada si que deberíamos modificar dichos parámetros en PostgreSQL para asegurarnos no tener problemas en un futuro. En este artículo vamos a tratar 4 parámetros que pueden ayudar a optimizar tu servicio de PostgreSQL.

4 parámetros en PostgreSQL que podemos optimizar

Shared_buffers

El shared_buffers determina la cantidad de memoria que PostgreSQL utiliza para almacenar en caché los datos de las tablas y los índices. Según la documentación de PostgreSQL tiene que ser entre un 25% y 40% de la memoria RAM total. Por ejemplo, si tienes 64 GB de RAM, puedes empezar con un valor de 16 GB. El valor por defecto de este parámetro, que se establece en postgresql.conf, es:

Parámetros

Work_mem

El parámetro work_mem proporciona básicamente la cantidad de memoria que utilizarán las operaciones de ordenación internas y las tablas hash antes de escribir en los archivos temporales del disco. Las operaciones de ordenación se utilizan para order by, distinct, and merge join. Las tablas hash se utilizan en las uniones hash y en la agregación basada en hash. El valor por defecto de este parámetro, que se establece en postgresql.conf, es:

Parámetros

Establecer el valor correcto del parámetro work_mem puede dar como resultado un menor intercambio de discos y, por tanto, consultas mucho más rápidas. Podemos utilizar la siguiente fórmula para calcular el valor óptimo de work_mem para el servidor de base de datos:

Total RAM * 0.25 / max_connections

El parámetro max_connections es uno de los parámetros GUC para especificar el número máximo de conexiones concurrentes al servidor de base de datos. Por defecto está fijado en 100 conexiones.

También podemos asignar directamente work_mem a un rol:

Parámetros

Maintenance_work_mem

El parámetro maintenance_work_mem básicamente proporciona la cantidad máxima de memoria a utilizar por las operaciones de mantenimiento como vacuum, create index y alter table add foreign key. El valor por defecto de este parámetro, que se establece en postgresql.conf, es:

Parámetros

Se recomienda establecer este valor más alto que work_mem; esto puede mejorar el rendimiento para la limpieza. En general debería ser:

Total RAM * 0.05

Effective_cache_size

El parámetro effective_cache_size estima cuánta memoria está disponible para el almacenamiento en caché de disco por el sistema operativo y dentro de la propia base de datos. El planificador de consultas de PostgreSQL decide si se fija en RAM o no. Lo más probable es que se usen escaneos de índice frente a valores altos; de lo contrario, se usarán escaneos secuenciales si el valor es bajo. Se recomienda fijar Effective_cache_size en el 50% de la RAM total de la máquina.

 Qué hacer después de optimizar los parámetros en PostgreSQL

Una vez realizadas las modificaciones recomendadas debemos monitorizar el comportamiento del servicio y observar si han sido efectivas, en caso de que el ajuste no sea el adecuado deberemos ajustar los parámetros hasta conseguir un comportamiento adecuado.

Si quieres que te ayudemos con la gestión y mantenimiento del servidor, o chequeemos tu migración para ver si se ha realizado de forma correcta. Estamos a tu disposición en nuestra página de contacto sin compromiso alguno. Somos expertos en PostgreSQL.

¿Aún no conoces Query Performance? Descubre cómo puede ayudarte en tu entorno Oracle. Más información en su página de LinkedIn.

Sígue a GPS en LinkedIn

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *