PROGRESSO DURANTE PROCESSAMENTO
Tenho umas consultas UPDATE e gostaria de informar ao usuario o progresso dessas consultas...ou seja, mostrar um percentual ou algo parecido que ele perceba em que [Ô]pé está[Ô] os processamentos do sistema...exemplo: tenho uma função de calcular médias dos alunos...e esse processamentos demora um pouco..todas as consultas estão assim: cn.execute [Ô]UPDATE....[Ô] são vários assim....queria que o usuario ficasse sabendo o que está se passando...já coloquei uma ampulheta..mas queria algo mais transparente pro usuario...alguem poderia me ajudar?
Tenho quase certeza que vc já postou essa dúvida, mas lá vai...
Creio que isso não seja possÃvel, pois vc está executando uma DML em massa.
A não ser que vc faça um cursor, mas aà você perde em performance.
Então, é o seguinte: vc prefere enfeitar o sistema ou ter performance?
Creio que isso não seja possÃvel, pois vc está executando uma DML em massa.
A não ser que vc faça um cursor, mas aà você perde em performance.
Então, é o seguinte: vc prefere enfeitar o sistema ou ter performance?
na verdade queria que o usuario pudesse ter noção do que esta acontecendo..porque as vezes tem usuario aperriado que aperta tudo quanto é tecla pensando que esta demorando...mas agradeço
Citação:MARCOSLING escreveu:
Tenho quase certeza que vc já postou essa dúvida, mas lá vai...
Creio que isso não seja possÃvel, pois vc está executando uma DML em massa.
A não ser que vc faça um cursor, mas aà você perde em performance.
Então, é o seguinte: vc prefere enfeitar o sistema ou ter performance?
Por acaso o processamento está muito demorado?
Citação:Às vezes sim...MARCOSLING escreveu:
Por acaso o processamento está muito demorado?
AMELORP.
Se você está fazendo um UPDATE para cada aluno é possÃvel mostrar o andamento. Se você simplesmente envia o comando UPDATE para o banco de dados calcular de uma só vez, o processamento fica aguardando a resposta do banco então não é possÃvel checar a posição.
Se você faz um update por turma, então a medição pode ser feita com o parâmetro TURMA (xx% de turmas atualizadas).
Enfim, conforme o MARCOSLING já foi bem claro, você perde com a performance pois a cada comando UPDATE o banco é lido. A não ser que você ponha o Ãndice do banco com o conteúdo da cláusula WHERE. Neste caso a performance melhora para ambos os casos (TODOS ou PARTE), sabendo-se que a parte terá performance PIOR que o TODO.
Se você está fazendo um UPDATE para cada aluno é possÃvel mostrar o andamento. Se você simplesmente envia o comando UPDATE para o banco de dados calcular de uma só vez, o processamento fica aguardando a resposta do banco então não é possÃvel checar a posição.
Se você faz um update por turma, então a medição pode ser feita com o parâmetro TURMA (xx% de turmas atualizadas).
Enfim, conforme o MARCOSLING já foi bem claro, você perde com a performance pois a cada comando UPDATE o banco é lido. A não ser que você ponha o Ãndice do banco com o conteúdo da cláusula WHERE. Neste caso a performance melhora para ambos os casos (TODOS ou PARTE), sabendo-se que a parte terá performance PIOR que o TODO.
Uma coisa não ficou claro, você está usando UM ÚNICO UPDATE ou uma série dele?
Citação:AMELORP escreveu:
MARCOSLING escreveu:
Por acaso o processamento está muito demorado?
Às vezes sim...
O que vc pode fazer é:
- Se vc quiser colocar um barra de progresso, vc poderia quebrar o seu update em grupos. Isso seria menos ruim.
- Uma outra questão que vc deve considerar é revisar o seu update. As vezes a lentidão pode estar na forma de como vc faz o update.
- Se vc estiver usando sqlserver, vc poderia usar stored procedure
Tópico encerrado , respostas não são mais permitidas