Tener un servidor de bases de datos optimizado es crucial para una buena respuesta de nuestra aplicación web. Ya sea un blog personal o una instancia de Peertube, es recomendable configurar correctamente los servidores de bases datos para que las consultas sean lo más rápidas posibles.

En este caso, vamos a mirar de optimizar un servidor con PostgreSQL.

Optimizar PostgreSQL con PGTune

¿PGTune? ¿De que estás hablando?

Vaaale. Primero de todo, pasemos ha explicar que narices es esto del PGTune.

PGTune es una web donde calcula la configuración para PostgreSQL basándose en el máximo rendimiento para una configuración de hardware determinada. No es la configuración definitiva, es decir, la configuración que te recomienda no significa que sea la que optimizará al 100% el servidor, pero si que se acerca a una muy buena configuración.

Muchos ajustes no sólo dependen de la configuración de hardware, sino que también del tamaño de la base de datos, el número de clientes y la complejidad de las consultas.

Una configuración óptima de la base de datos sólo puede hacerse si se tienen en cuenta todos estos aspectos.

Para ello solo tendremos que ir a la web de PGTune y rellenar los datos que hay en el formulario:

PGTune

Por ejemplo, si tengo un servidor Debian 11 con PostgreSQL 13 y con 32GB de RAM y 16 vcores, deberemos de rellenar el formulario de la siguiente forma:

PGTune configurado para un servidor

Todas las opciones disponibles que hay en el formulario, os las explicamos ahora:

  • DB version: Aquí tenemos que seleccionar la versión de PostgreSQL que tenemos instalada. Por ejemplo, para Debian 11 la versión disponible en repositorios es la 13. (De la 9.5 a la 14)
  • OS Type: Seleccionaremos el sistema operativo (Linux, Windows, OS X)
  • DB Type: Deberemos seleccionar el tipo de la base de datos, si es para una Aplicación Web, Aplicación de Escritorio, etc.
  • Total Memory: La memoria RAM que tiene el servidor.
  • Number of CPUs: Número de CPUS disponibles en el servidor.
  • Number of Connections: Aquí podemos indicar el número de conexiones máximas que queremos.
  • Data Storage: Tipo de almacenamiento que tiene nuestro servidor (SSD, HDD o SAN)

Una vez tengamos la configuración en el formulario le daremos a enviar y nos generará la configuración que tenemos que añadir en el fichero de configuración de PostgreSQL:

Configuración para añadir

Ahora deberemos de editar /etc/postgresql/13/main/postgresql.conf y añadir la configuración que nos pide:

# DB Version: 13
# OS Type: linux
# DB Type: web
# Total Memory (RAM): 32 GB
# CPUs num: 16
# Data Storage: ssd

max_connections = 200
shared_buffers = 8GB
effective_cache_size = 24GB
maintenance_work_mem = 2GB
checkpoint_completion_target = 0.9
wal_buffers = 16MB
default_statistics_target = 100
random_page_cost = 1.1
effective_io_concurrency = 200
work_mem = 10485kB
min_wal_size = 1GB
max_wal_size = 4GB
max_worker_processes = 16
max_parallel_workers_per_gather = 4
max_parallel_workers = 16
max_parallel_maintenance_workers = 4

Tras modificar la configuración, como siempre tendremos que recargar el servicio:

systemctl restart postgresql.service

Y listo, ya deberíamos de tener PostgreSQL optimizado para nuestro servidor.

Haz que cada palabra cuente: tu donación nos inspira a seguir creando contenido. Accede al apartado de Donación para hacer tu aportación