Optimize UPDATE on Message Table to Avoid Table Scan
Davidson Gomes
PT:
O UPDATE usado no whatsapp.baileys.service.ts faz table scan porque filtra dados dentro de campos JSON, sem aproveitar índices. Isso está gerando alto consumo de CPU em ambientes de produção, especialmente com tabelas grandes (5GB+) e muitas instâncias (ex.: 130+).
Solução proposta:
• Extrair os campos filtrados para colunas dedicadas com índice (opção preferida), ou
• Criar índices de expressão no JSON e reescrever a query para usar operadores indexáveis.
EN:
The UPDATE query in whatsapp.baileys.service.ts performs a full table scan because it filters on JSON fields without using indexes. This causes very high CPU usage in production with large tables (5GB+) and many instances (e.g., 130+).
Proposed solution:
• Extract the filtered fields into indexed columns (preferred option), or
• Create expression indexes on the JSON fields and rewrite the query to use index-supported operators.
Casos de Uso / Use Cases
• PT: Melhorar performance em ambientes com muitas instâncias; reduzir consumo de CPU e travamentos no banco.
• EN: Improve performance in high-load environments; reduce CPU usage and DB contention.
🔗 GitHub Issue #1441