Ir al contenido

Caso real: optimizacion de transferencias masivas

Introducción

Uno de los procesos más importantes de Odoo son las transferencias, que mueven productos entre ubicaciones: el sistema reserva cantidades, verifica la disponibilidad y valida la entrega. Cuando este proceso clave se vuelve lento, todo se resiente: las operaciones se detienen, el equipo pierde tiempo y el servidor trabaja al límite. Este fue el caso de un cliente que buscaba velocidad y estabilidad. En este blog te contamos qué estaba pasando, cómo lo solucionamos y qué resultados obtuvimos.

¿Qué estaba pasando?

El proceso de transferencias trabajaba con alto volumen de datos y realizaba búsquedas/validaciones repetitivas. Eso disparaba el tiempo de respuesta y cargaba innecesariamente la base de datos y el sistema de mensajería (notificaciones internas), generando esperas y poca previsibilidad en picos de uso.

 

Lo que hicimos

Antes de tocar una sola línea de código, medimos. Con los hallazgos del perfilador, definimos un plan para reducir llamadas innecesarias a la base de datos, controlar el volumen que se procesa en cada transacción y ordenar el flujo para que sea más estable y predecible.


Etapa 1 · Diagnóstico

Usamos herramientas de profiling para ver exactamente dónde se iba el tiempo:

  • pg_stat_statements y EXPLAIN ANALYZE para ubicar las consultas más costosas.
  • Herramientas de rendimiento de Odoo para detectar métodos con llamadas redundantes al ORM y validaciones innecesarias.


Etapa 2 · Plan de optimización

Diseñamos mejoras de bajo riesgo y alto impacto:

  1. Acelerar las consultas “calientes”
  • Creamos índices específicos (p.ej., en company_id, product_id en stock_valuation_layer y en move_id en account_payment). Resultado:
    • Una consulta de valoración bajó de 47.919 ms a 33.880 ms (≈ 29% más rápida).
    • La consulta a pagos pasó de 91.109 ms a 1.866 ms (≈ 98% de mejora).

​2. Menos ruido, más eficiencia en el flujo

  • Validaciones más livianas: desactivamos suscripciones/notificaciones automáticas innecesarias durante la validación masiva, reduciendo carga en el sistema de mensajes.
  • Escrituras seguras y mínimas: consolidamos actualizaciones para evitar múltiples validaciones/lecturas en cada cambio de campo.

​3. Código que hace menos (y mejor)

  • Simplificamos condiciones y eliminamos duplicidades en funciones auxiliares (p. ej., cálculos y banderas de visibilidad), reduciendo operaciones que no aportaban al resultado final.
  • Modularizamos pasos para mejorar legibilidad, pruebas y mantenimiento.

Etapa 3 · Resultados

  • Consultas críticas aceleradas con mejoras puntuales de hasta ~98% gracias a índices bien colocados.
  • Menos carga en la base de datos y en el sistema de mensajería al evitar validaciones y notificaciones innecesarias.
  • Proceso más estable en picos de volumen, con una ejecución más predecible y tiempos de espera menores para el equipo.



Beneficios para el negocio

  • Velocidad visible para el usuario: transferencias que “salen” sin bloqueos ni esperas innecesarias.
  • Estabilidad operativa: menos incidencias en horas críticas y procesos que terminan a tiempo.
  • Escalabilidad: mejoras que aguantan crecimiento de datos y de usuarios concurrentes.

Recomendaciones

  1. Mide antes de cambiar: perfila y prioriza el 20% que explica el 80% del tiempo.
  2. Pon índices donde duele: analiza tus consultas reales (no supuestas) y crea índices específicos.
  3. Evita trabajo repetido: consolida escrituras y valida solo lo imprescindible en operaciones masivas.
  4. Reduce el “ruido”: desactiva notificaciones automáticas que no aportan en procesos batch.
  5. Piensa en mantenimiento: modulariza el flujo para facilitar ajustes futuros sin romper nada.

Conclusiones

Optimizar transferencias masivas no va de “más servidor”, sino de hacer menos, mejor y en el orden correcto: indexar, simplificar y evitar validaciones y mensajes que sobran. El resultado es un proceso ágil y confiable que devuelve el control al equipo.

¿Tus procesos están lentos?

Con un diagnóstico rápido te mostramos dónde está el cuello de botella y te entregamos un plan accionable.
Conversemos y acelera tu Odoo.

Solicitar ahora

Caso real: Optimizacion de informes contables