evolution-api icon indicating copy to clipboard operation
evolution-api copied to clipboard

Otimização da query de atualizar mensagem

Open Pequem opened this issue 7 months ago • 1 comments

Bem-vindo!

  • [x] Sim, pesquisei solicitações semelhantes no GitHub e não encontrei nenhum.

Qual tipo de recurso?

Outro

Qual a motivação para a solicitação?

O update abaixo gera um table scan sempre que é executada, não sendo possível otimizar a execução com uso de índice. Isso está consumindo muito o banco (o meu esta num servidor com 4 núcleos AMD Epic 7003 dedicados e está usando 100% de todos os núcleos no dia a dia, a tabela de mensagens tem 5 gigas atualmente e o evolution tem 130 instancias).

Image https://github.com/EvolutionAPI/evolution-api/blob/427c99499394d3894e4b065626323c45e91022e4/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts#L4360C1-L4372C8

Query gerada: UPDATE "public"."Message" SET "status" = $1 WHERE (("public"."Message"."key"#>ARRAY[$2]::text[])::jsonb::jsonb = $3 AND ("public"."Message"."key"#>ARRAY[$4]::text[])::jsonb::jsonb = $5 AND "public"."Message"."messageTimestamp" <= $6 AND ("public"."Message"."status" IS NULL OR "public"."Message"."status" = $7))

Exemplos de Uso

Uso em um servidor com 130 instancias do whatsapp-baileys

Como o recurso deve ser desenvolvido?

Vejo dois caminhos. Escrever a query manualmente para poder usar operadores que possuem suporte a índices ou extrair ambos os campos usados para colunas na tabela. A segunda opção é a melhor implementação, pois o índice da coluna é mais eficiente que o do BJson.

Notas Adicionais

Posso realizar a implementação e abrir um PR, a requisição aqui é mais com intuito de discutir qual solução teria o PR aceito pelo projeto.

Pequem avatar May 12 '25 17:05 Pequem

Comos as correções deve demorar, uma sugestão pra vc (depois vc desfaz):

Cria um índice para a coluna status.

Como os status null e menores que 3 (status pendentes) provavelmente serão bem poucos em relação ao total de mensagens, então vc acelera bastante a query.

cleytoncoro avatar May 13 '25 03:05 cleytoncoro

o update tá funcionando ? pra mim não dá certo

sostenesapollo avatar Sep 25 '25 12:09 sostenesapollo