23 de abril de 2025 por
Opencloud - 509851380, Ricardo Martins

Odoo: Dicas de Performance e Escalabilidade para o Seu ERP

Gerir um ERP Odoo com centenas (ou milhares) de utilizadores requer atenção especial ao desempenho e à escalabilidade. Neste artigo, vamos explorar um conjunto de truques técnicos que o ajudarão a acelerar o seu ambiente Odoo, desde a medição do desempenho até à optimização de módulos e base de dados.

Para soluções de implementação, personalização e suporte avançado, visite www.opencloud.pro – parceiro oficial Odoo:
https://www.odoo.com/partners/opencloud-unipessoal-lda-12774


1. Medir e Analisar o Desempenho

  1. Profiler do Odoo
  2. Active o profiling no ficheiro de configuração (odoo.conf):
    ini [options] log_level = debug_sql
  3. Utilize o módulo profiler (addons/community) para identificar bottlenecks no código Python.

  4. PostgreSQL e pg_stat_statements

  5. Ative a extensão pg_stat_statements no PostgreSQL para rastrear queries lentas:
    sql CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
  6. Consulte as queries mais pesadas:
    sql SELECT query, calls, total_time FROM pg_stat_statements ORDER BY total_time DESC LIMIT 10;

  7. Odoo.sh & CI/CD

  8. Utilize ambientes separados de build e produção.
  9. Configure testes automatizados para regressão de performance.

2. Boas Práticas na Criação de Módulos

2.1 Campos Computados com Store

Para cálculos em lista (tree) e relatórios, use campos computados armazenados (store=True), evitando cálculos em tempo real:

```python from odoo import models, fields, api

class SaleOrderLine(models.Model): _inherit = 'sale.order.line'

total_discount = fields.Float(
    string='Desconto Total',
    compute='_compute_total_discount',
    store=True
)

@api.depends('product_uom_qty', 'discount', 'price_unit')
def _compute_total_discount(self):
    for line in self:
        line.total_discount = (line.price_unit * line.product_uom_qty) * (line.discount / 100)

```

2.2 Somar Valores dentro de uma Célula (View)

Para exibir somas directamente numa vista Tree, use <footer> no XML:

xml <record id="view_sale_order_tree_inherit" model="ir.ui.view"> <field name="name">sale.order.tree.total</field> <field name="model">sale.order</field> <field name="arch" type="xml"> <tree> <field name="amount_total"/> <footer> <field name="amount_total" sum="Total Geral"/> </footer> </tree> </field> </record>


3. Optimização de Queries e Índices

  • Índices compostos: Crie índices em campos frequentemente usados em domain ou joins.
  • Partitioning: Para tabelas gigantes (ex.: logs, facturação), avalie o particionamento por data ou empresa.
  • VACUUM e ANALYZE: Agende manutenções regulares para manter estatísticas actualizadas.

4. Configuração de Workers e Cache

  • Defina um número adequado de workers no odoo.conf: ini [options] workers = 4 max_cron_threads = 1
  • Use o Redis como cache para sessões e longpolling, reduzindo carga no banco de dados.

5. Conclusão e Próximos Passos

A performance do seu Odoo resulta de várias camadas: código Python optimizado, vistas XML eficientes, tuning de PostgreSQL e configuração adequada de workers.
Se pretende levar o seu ERP Odoo ao próximo nível, a equipa da Opencloud está pronta para ajudar com:

  • Auditorias de performance
  • Desenvolvimento de módulos personalizados
  • Suporte 24/7 e Formação

Visite-nos em www.opencloud.pro ou como parceiro oficial Odoo em
https://www.odoo.com/partners/opencloud-unipessoal-lda-12774
e descubra como transformar o seu Odoo num sistema rápido, estável e totalmente adaptado ao seu negócio.


Palavras-chave SEO: Odoo performance, escalabilidade Odoo, optimização ERP, módulos Odoo, PostgreSQL, cache Redis, computed fields, profiling Odoo, Opencloud. ```