Las guías de tuning de Postgres tienen veinte parámetros. En la práctica, para una instancia Odoo de tamaño medio, son seis los que mueven la aguja. Este es el subset que recomendamos y por qué.
shared_buffers
Regla rápida: 25% de la RAM disponible si el servidor es dedicado a Postgres. Si es un servidor compartido con Odoo + Postgres, bájelo a 15–20%. Más no necesariamente es mejor — el OS también cachea páginas.
work_mem
Por sesión, no global. Para Odoo, 32–64 MB suele ser suficiente. Subirlo sin medir es la forma más rápida de quedarse sin memoria cuando hay 50 conexiones concurrentes.
effective_cache_size
Estimación, no asignación. Dele 50–75% de la RAM. Es lo que el planificador asume que el OS cachea — afecta los planes de ejecución, no consumo real.
maintenance_work_mem
Para VACUUM, CREATE INDEX, ALTER TABLE. 256 MB–1 GB en instancias con tablas grandes. Hace la diferencia en mantenimiento nocturno.
random_page_cost
En SSD, bájelo a 1.1 (default 4.0). Esto hace que el planificador prefiera índices sobre full-scans cuando son comparables — que en SSD casi siempre es lo correcto.
checkpoint_completion_target
0.9. Distribuye la escritura del checkpoint en el tiempo, evita picos de I/O. Es uno de los cambios “gratis” más obvios.