FAZER 3 PROCESSOS SIMULTANEOS
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
Desde já agradeço a todos
Vai depender de como é o processo, o que ele faz.
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
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
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
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
Agradeço o retorno
Vlw, darei uma olhada sim
Vlw, darei uma olhada sim
Threads, pode ser o Componente BackgroundWorker ele faz isso.
Quanto tempo está demorando e quanto tempo vc espera chegar?
Hoje está tudo em apenas um arquivo ou já estão em arquivos divididos?
Hoje está tudo em apenas um arquivo ou já estão em arquivos divididos?
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
Entenda como usar bulkinsert ou outras técnicas de tsql e voce vai largar esse tipo de abordagem
Agradeço o retorno, não sei o que aconteceu não recebi as notificações
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
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.
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