Parte de nuestra serie Performance & Scalability
Leer la guía completaUna instancia de PostgreSQL correctamente ajustada puede mejorar los tiempos de respuesta de Odoo entre 2 y 5 veces en comparación con la configuración predeterminada. La mayoría de los problemas de rendimiento de Odoo se remontan a la configuración de la base de datos: la configuración predeterminada de PostgreSQL está diseñada para un uso mínimo de recursos, no para alimentar un sistema ERP multiusuario.
Conclusiones clave
- La configuración predeterminada de PostgreSQL usa solo 128 MB de buffers compartidos; la producción de Odoo necesita el 25 % de RAM
- Los índices faltantes en las columnas consultadas con frecuencia provocan análisis completos de la tabla y cargas de página lentas.
- La agrupación de conexiones con PgBouncer reduce la sobrecarga de conexión de la base de datos en un 80%
- VACUUM y ANALYZE regulares previenen la hinchazón de la tabla y mantienen los planes de consulta óptimos
Ajuste de configuración de PostgreSQL
Configuración de memoria
Edite postgresql.conf con la configuración adecuada para su hardware. Para un servidor con 16 GB de RAM, configure los búferes compartidos en 4 GB (25 % del RAM total), el tamaño de caché efectivo en 12 GB (75 % del RAM total), el work_mem en 64 MB por operación, el mantenimiento_work_mem en 1 GB y el wal_buffers en 64 MB.
Para la planificación de consultas, establezca random_page_cost en 1.1 para almacenamiento SSD (el valor predeterminado 4.0 supone HDD), Effective_io_concurrency en 200 para SSD y default_statistics_target en 200 para planes de consulta más precisos.
Pautas de tallas:
| RAM del servidor | buffers_compartidos | tamaño_caché_efectivo | memoria_trabajo |
|---|---|---|---|
| 4GB | 1GB | 3GB | 16MB |
| 8GB | 2GB | 6GB | 32MB |
| 16GB | 4GB | 12GB | 64MB |
| 32GB | 8GB | 24GB | 128MB |
| 64 GB | 16GB | 48GB | 256 MB |
Configuración de conexión
Establezca max_connections en al menos trabajadores de Odoo x 2 más el búfer. Con 4 trabajadores y 2 subprocesos cron, necesitas al menos 12 conexiones. Agregue conexiones para herramientas de administración, monitoreo y tareas en segundo plano. Un valor de 200 proporciona un cómodo espacio para la cabeza.
Estrategias de indexación para Odoo
Identificar índices faltantes
Habilite el registro de consultas lento configurando log_min_duration_statement en 500 ms. Luego analice el registro de consultas lentas para identificar escaneos completos de la tabla.
Índices comunes de Odoo
Odoo crea índices en claves primarias y claves externas automáticamente. Agregue índices en columnas filtradas con frecuencia como sale_order(state), account_move(state), stock_move(state), account_move(date) y sale_order(date_order).
Los índices de varias columnas mejoran las combinaciones de filtros comunes: account_move_line(account_id, date) y stock_quant(product_id, location_id).
Para tablas con columnas de estado, los índices parciales en registros activos son más eficientes: indexe solo las filas donde el estado no está cancelado ni finalizado.
Análisis de consultas con EXPLAIN ANALYZE
Ejecute EXPLAIN (ANALYZE, BUFFERS) en consultas lentas para comprender los planes de ejecución. Busque:
- Seq Scan: escaneo completo de la tabla que indica que falta un índice
- Bucle anidado: puede resultar costoso con conjuntos de resultados grandes
- Ordenar: los ordenamientos en memoria exceden el derrame de work_mem en el disco.
- Lectura de buffers compartidos: los valores altos significan que los datos no se almacenan en caché
Asesinos comunes del rendimiento:
- Faltan índices en las columnas de la cláusula WHERE
- Cláusulas IN grandes generadas por Odoo ORM
- Campos calculados almacenados que activan el recálculo en escrituras
- Consultas de informes complejas que unen más de 5 tablas
ASPIRACIÓN y Mantenimiento
PostgreSQL MVCC crea tuplas muertas cuando se actualizan o eliminan filas. VACUUM recupera este espacio y actualiza las estadísticas.
Configure el vacío automático para cargas de trabajo de Odoo: habilite el vacío automático con 3 trabajadores como máximo, una siesta de 60 segundos, un factor de escala de vacío de 0,05 y analice un factor de escala de 0,02. Para tablas de alta escritura (account_move_line, stock_move, mail_message), establezca configuraciones por tabla más agresivas.
Supervise la inflación de la tabla comprobando el tamaño total de las relaciones y el recuento de tuplas muertas. Utilice VACUUM FULL solo para hinchazón extrema (más del 50% de espacio muerto) y solo durante las ventanas de mantenimiento, ya que bloquea la mesa.
Agrupación de conexiones con PgBouncer
PgBouncer se encuentra entre Odoo y PostgreSQL, agrupando conexiones para reducir la sobrecarga. Utilice el modo de grupo de transacciones para Odoo, que libera conexiones entre transacciones. Establezca default_pool_size en 40 y max_client_conn en 200. Apunte Odoo al puerto PgBouncer en lugar de PostgreSQL directamente.
Monitoreo
Métricas esenciales
- Conexiones activas: debe permanecer muy por debajo de max_connections
- Proporción de aciertos de caché: debe estar por encima del 99%
- Tasa de transacción: punto de referencia y atento a anomalías
- Recuento de consultas lento: consultas que superan su umbral
- Retraso de replicación: si se utilizan réplicas de lectura
- Uso de disco: tasa de crecimiento del tamaño de la base de datos
- Inflación de tabla: Proporción de tuplas muertas por tabla
Utilice la extensión pg_stat_statements para realizar un seguimiento del rendimiento de las consultas a lo largo del tiempo. Registra el recuento de ejecución, el tiempo total, el tiempo medio y las filas devueltas para cada patrón de consulta distinto.
Preguntas frecuentes
P: ¿Cómo sé si PostgreSQL es el cuello de botella?
Habilite el registro de consultas lento y verifique los registros de rendimiento de Odoo. Si la mayoría de las solicitudes lentas corresponden a consultas lentas, el ajuste será útil. Si las consultas son rápidas pero Odoo es lento, el cuello de botella está en el código de la aplicación o en la red.
P: ¿Debo usar réplicas de PostgreSQL para Odoo?
Las réplicas de lectura descargan consultas de informes de la base de datos principal. Odoo no admite de forma nativa la división de lectura/escritura, por lo que la configuración personalizada enruta consultas de solo lectura a las réplicas. Esto es principalmente útil para implementaciones muy grandes.
P: ¿Qué versión de PostgreSQL debo usar con Odoo?
Utilice la última versión estable compatible con su versión de Odoo. Las versiones más recientes incluyen mejoras en el optimizador de consultas y un mejor rendimiento del vacío. Se recomienda PostgreSQL 16 o 17 para las versiones actuales de Odoo.
P: ¿En qué medida ayuda realmente un ajuste adecuado?
Según nuestra experiencia, pasar de la configuración predeterminada a una configuración optimizada generalmente mejora los tiempos promedio de carga de la página entre un 40% y un 60% y reduce la frecuencia de consultas lentas entre un 80% y un 90%. La mejora es dramática e inmediata.
¿Qué sigue?
El ajuste de PostgreSQL es la optimización de mayor impacto para el rendimiento de Odoo. Comience con la configuración de la memoria y la indexación: estos dos cambios por sí solos a menudo reducen los tiempos de respuesta a la mitad.
Comuníquese con ECOSIRE para obtener ayuda sobre la optimización de la base de datos, o explore nuestros servicios de soporte de Odoo para una gestión continua del rendimiento.
Publicado por ECOSIRE: ayuda a las empresas a escalar con soluciones de software empresarial.
Escrito por
ECOSIRE TeamTechnical Writing
The ECOSIRE technical writing team covers Odoo ERP, Shopify eCommerce, AI agents, Power BI analytics, GoHighLevel automation, and enterprise software best practices. Our guides help businesses make informed technology decisions.
ECOSIRE
Transforme su negocio con Odoo ERP
Implementación, personalización y soporte experto de Odoo para optimizar sus operaciones.
Artículos relacionados
ADempiere vs Odoo (2026): comparación de ERP de código abierto
Comparación honesta de ADempiere y Odoo: arquitectura, salud de la comunidad, TCO real, rutas de migración y quién debería quedarse en ADempiere.
Axelor vs Odoo (2026): comparación honesta de dos ERP de código abierto
Axelor vs Odoo en 2026: cómo el ERP low-code centrado en BPM de Axelor se compara con el ecosistema de aplicaciones de Odoo — fortalezas reales, licencias, precios y cuándo gana cada uno.
Coste total de propiedad del ERP en la nube: las cifras reales a 5 años
Un modelo transparente de TCO a 5 años para ERP en la nube: suscripción, implementación, personalización, migración, formación, alojamiento, actualizaciones y tiempo de administración interna, con una comparación para una pyme de 25 usuarios entre Odoo, NetSuite y ERPNext.
Más de Performance & Scalability
Optimización de la velocidad de Shopify: una lista de verificación técnica que realmente mueve los elementos básicos de la web (2026)
Una lista de verificación de velocidad de Shopify probada en campo para 2026: qué realmente mejora LCP, INP y CLS en tiendas reales, qué es una pérdida de tiempo y cómo auditar aplicaciones y temas.
Lista de verificación de auditoría técnica de SEO 2026: 47 comprobaciones que realizamos en el sitio de cada cliente
La lista de verificación de auditoría técnica de SEO de 47 puntos que ejecutamos en el sitio de cada cliente en 2026: rastreabilidad, indexación, canónicos, hreflang, Core Web Vitals y registros.
Odoo 19 RRHH: Matriz de Habilidades, Planes de Carrera, Ciclos de Desempeño
Actualización de recursos humanos de Odoo 19: matriz de habilidades nativas, planificación de trayectoria profesional, ciclos de revisión del desempeño, cuadrícula de 9 casillas, planificación de sucesión, integración HRIS.
Puntos de referencia de rendimiento de Odoo 19: números de ajuste de PostgreSQL 17
Puntos de referencia de rendimiento de Odoo 19 en el mundo real: velocidad del cliente web, rendimiento de ORM, configuración de ajuste de PG17, agrupación de conexiones, recuento de trabajadores, umbrales de escala.
Optimización de costos de OpenClaw y eficiencia de tokens a escala
Optimización de costos de tokens OpenClaw: almacenamiento en caché de avisos, enrutamiento de modelos, almacenamiento en caché de respuestas, API por lotes y barreras de costos por inquilino para agentes de producción.
Actualización incremental de Power BI para tablas de más de 10 millones de filas
Guía de actualización incremental de Power BI para tablas de más de 10 millones de filas: diseño de particiones, RangeStart/RangeEnd, políticas de actualización, plegado de consultas e híbridos de DirectQuery.