FAZER 3 PROCESSOS SIMULTANEOS

ALVAROVB2009 09/11/2022 12:00:57
#500747
Pessoal tenho um processo em um banco de dados que preciso analisar em mais de 50 milhões de registros o que precisa ser incluído e/ou editado e eles são divididos em 10 arquivos, eu queria diminuir o meu tempo de processo dividindo esses 10 arquivos em 3 ou 4 processos simultâneos na mesma máquina, teriam como que dar uma luz de como fazer isso, andei procurando e não achei muita coisa a respeito.

Desde já agradeço a todos
KERPLUNK 09/11/2022 12:36:34
#500748
Vai depender de como é o processo, o que ele faz.
ALVAROVB2009 09/11/2022 13:04:33
#500749
Obrigado pelo retorno

o processo é simples, ele abre o arquivo e vai lendo as informações linha a linha, não tem como armazenar tudo na memória pela quantidade de registros, com isso ele vai vendo se aquela empresa existe no banco de dados, e ai verifica a necessidade de incluir ou alterar
O banco de dados é em mysql e esta rodando diretamente na máquina, não teria nenhum outro projeto ou processo rodando junto, essa máquina esta exclusivamente para esse processo

A minha idéia seria ter 3 ou 4 processsos simultâneos que estariam fazendo essa verificação, com isso iria diminuir o tempo de verificação
Seria algo assim
Processo 1 fica com os arquivos 0 e 1
processo 2 com os arquivos 2 3 4
processo 3 com os arquivos 5 6 7
processo 4 com os arquivos 8 e 9
ALTAFIN 09/11/2022 17:53:46
#500751
Boa tarde,
Estude um pouco sobre Threads, acho que irá ajudar a fazer o que deseja.
No site do Macoratti tem uma explicação e exemplo.
https://www.macoratti.net/10/09/c_thd1.htm
ALVAROVB2009 09/11/2022 18:36:14
#500753
Agradeço o retorno

Vlw, darei uma olhada sim
NILSONTRES 09/11/2022 19:29:19
#500754
Threads, pode ser o Componente BackgroundWorker ele faz isso.
MARCOSPRADOS 07/12/2022 19:35:26
#500862
Quanto tempo está demorando e quanto tempo vc espera chegar?
Hoje está tudo em apenas um arquivo ou já estão em arquivos divididos?
VERA.PALI 07/12/2022 22:13:16
#500863
Não é melhor largar coisas de banco para o banco ??
Entenda como usar bulkinsert ou outras técnicas de tsql e voce vai largar esse tipo de abordagem
ALVAROVB2009 22/12/2022 10:53:01
#500919
Agradeço o retorno, não sei o que aconteceu não recebi as notificações
Citação:

:
Quanto tempo está demorando e quanto tempo vc espera chegar?
Hoje está tudo em apenas um arquivo ou já estão em arquivos divididos?


As planilhas já estão separadas, e na forma que estava, durava em torno de 10 a 12 dias para o processo total, entre selecionar o que precisa, comparar se existe no banco.

Andei estudando sobre os threads e mudou bastante, aprendi sobre o processo paralelo e consegui fazer todo o processo de seleção dos dados e criar um único arquivo com todos os dados em pouco mais de 3 min (devido a limitação da minha máquina).
Agora o que estou vendo é como mandar de forma paralela para o banco de dados isso, para poder usar máximo da minha máquina e diminuir o tempo de processo


Citação:

:
Não é melhor largar coisas de banco para o banco ??
Entenda como usar bulkinsert ou outras técnicas de tsql e voce vai largar esse tipo de abordagem


Eu não conhecia esse bulkinsert , uma rápida pesquisa no nome e vi várias coisas entre elas inserir multiplas linhas, um outro inserir mais de 2 milhões de registros etc , darei uma olhada com carinho para essa solução, e acho que isso é realmente o que vai ajudar, pois eu estava vendo o que eu iria precisar fazer no processo paralelo para mandar os dados que quero para o banco.
Nessa rápida olhada vi que esse comando é aplicado em Sql Server, e no meu caso o banco é Mysql, más como comentei agora darei uma pesquisada com calma, sabendo o que preciso fica mais fácil e se tem para o Sql Server deve ter algo assim para o Mysql.
Faça seu login para responder