Pular para o conteúdo principal

Uma postagem marcadas com "transactions"

Ver todas os Marcadores

· Leitura de 2 minutos
Willian Luis Zuqui

Motivação

A motivação deste post é compartilhar algumas diferenças encontradas com o time de desenvolvimento entre processamento em lote ou granular. Com o objetivo de ajudar a entender qual a melhor forma de processar os dados.

Com o passar do tempo desenvolvendo aplicações workers que são aplicativos que processam dados em segundo plano, percebi que existem duas formas de processar os dados, em lote ou granular, com eles suas vantagens e desvantagens que serão abordadas neste post.

Processamento em lote

O processamento em lote é quando você processa um conjunto de dados de uma vez só, por exemplo, você tem uma lista de 1000 usuários e precisa enviar um e-mail para cada um deles, você pode processar todos de uma vez só, ou seja, em lote.

Processamento granular

O processamento granular é quando você processa um conjunto de dados de forma granular, ou seja, um por um, por exemplo, você tem uma lista de 1000 usuários e precisa enviar um e-mail para cada um deles, você pode processar um por um, ou seja, de forma granular.

Tabela comparativa

Processamento granularProcessamento em loteVantagem
Muito selects executados no banco de dadosMenos selects executados no bancoLote
SQL com menos parâmetrosSQL com acima de 2.100 parâmetros causam erros de execuçãoGranular
Caso aconteça um erro, você pode identificar em qual registro parou sua aplicaçãoPerde a transactions inteira do loteGranular
Salva o cursor/posição na qual o registro está seja ele com erro ou sucessoO cursor não consegue identificar o real problema, e salva o cursor somente no fimGranular
Conseguimos identificar o tempo de processamento de cada registroConseguimos apenas a média de tempo para cada registroGranular
Menos concorrência e change track no efcoreMais concorrência gerando mais lock no bancoGranular

Placar final: Granular 6 x 1 com vantagem para o processamento granular

Conclusão

Conforme for passando o tempo, e novas experiências forem surgindo, vou atualizando este post com novas informações. Mas por enquanto, a melhor forma de processar os dados é de forma granular.