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
- Profiler do Odoo
- Active o profiling no ficheiro de configuração (
odoo.conf
):
ini [options] log_level = debug_sql
-
Utilize o módulo
profiler
(addons/community) para identificar bottlenecks no código Python. -
PostgreSQL e pg_stat_statements
- Ative a extensão
pg_stat_statements
no PostgreSQL para rastrear queries lentas:
sql CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
-
Consulte as queries mais pesadas:
sql SELECT query, calls, total_time FROM pg_stat_statements ORDER BY total_time DESC LIMIT 10;
-
Odoo.sh & CI/CD
- Utilize ambientes separados de build e produção.
- 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. ```