Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
gika Novato


Registrado: Quinta-Feira, 28 de Junho de 2007 Mensagens: 37 Localização: Bauru - SP
|
Enviada: Seg Nov 19, 2007 2:33 pm Assunto: ApplyUpdates parcial |
|
|
Olá!!
Gostaria de saber se existe alguma maneira de dar um ApplyUpdates parcial em um ClientDataSet...
Dentro de um loop preciso atualizar todos os registros de uma tabela!
São muitos! Então, queria ver uma maneira de não dar o applyupdates no dataset inteiro, mas só em um pedaço dele...
Se alguém souber de algo...
Muito Obrigada! _________________ Se todo animal inspira ternura, o que houve, então, com os homens? (Guimarães Rosa) |
|
Voltar ao Topo |
|
 |
danielbuona Profissional


Registrado: Quinta-Feira, 30 de Junho de 2005 Mensagens: 576 Localização: São Paulo/SP
|
Enviada: Seg Nov 19, 2007 2:50 pm Assunto: |
|
|
Você não precisa executar o Apply a cada post.... pode ser apenas 1 no final do processo. |
|
Voltar ao Topo |
|
 |
gika Novato


Registrado: Quinta-Feira, 28 de Junho de 2007 Mensagens: 37 Localização: Bauru - SP
|
Enviada: Seg Nov 19, 2007 2:53 pm Assunto: |
|
|
Eu não quero executar um a cada post!!
Estou dando ApplyUpdates só no final! Mas está demorando muito!
Por isso queria tentar dividir em partes o ApplyUpdates! _________________ Se todo animal inspira ternura, o que houve, então, com os homens? (Guimarães Rosa) |
|
Voltar ao Topo |
|
 |
Borland_Linuxer Moderador

Registrado: Terça-Feira, 11 de Outubro de 2005 Mensagens: 4252 Localização: Manaus - Am
|
Enviada: Seg Nov 19, 2007 3:15 pm Assunto: |
|
|
gika escreveu: | Eu não quero executar um a cada post!!
Estou dando ApplyUpdates só no final! Mas está demorando muito!
Por isso queria tentar dividir em partes o ApplyUpdates! |
Ola gika seguinte :
se estiver usando o cds para da tipo insert, update e so delete nem precisar sar ele e melhor uma Tquery mesm vc vai ter mais desepenho.
Por que como vc ta dentro de um while talves esteja usando ele para fazer um tipo que operação que eu cirei acima e pelos os meus teste com o cds fica mais lento mesmo por que ele fica criando cache,.
corrija-me se estiver errado mais pelos meus testes e.
Abraços _________________ Abraços
Sérgio Guedes
www.lsisistemas.com.br
www.scvarejo.com.br - Projetos para parceiros e desenvolvedores |
|
Voltar ao Topo |
|
 |
DonOctavioDelFlores Colaborador

Registrado: Quarta-Feira, 12 de Setembro de 2007 Mensagens: 2630 Localização: Pra lá de Bagda
|
Enviada: Seg Nov 19, 2007 3:15 pm Assunto: |
|
|
veja a quantidade de registros que seja grande o suficiente e nao demore para dar o commit... dai controla para commitar e startar a transacao a cada numero desse...
ex:
loop
se Limite for multiplo de 1000, commit e start transaction
fim loop
o ruim disso é que se ocorrer alguma excecao só o bloco dos ultimos 1000 sera desfeito... _________________ “The problem with the world is that everyone is a few drinks behind.” Humphrey Bogart |
|
Voltar ao Topo |
|
 |
danielbuona Profissional


Registrado: Quinta-Feira, 30 de Junho de 2005 Mensagens: 576 Localização: São Paulo/SP
|
Enviada: Seg Nov 19, 2007 3:34 pm Assunto: |
|
|
gika escreveu: | Eu não quero executar um a cada post!!
Estou dando ApplyUpdates só no final! Mas está demorando muito!
Por isso queria tentar dividir em partes o ApplyUpdates! |
Ok, desculpe minha má interpretação...
Automático o TClientDataSet não dá esse suporte, o que você quer é um tipo de PacketRecords para o apply, certo?
Bom, uma maneira simples seria você criar uma var inteira, e a cada post vc ir incrementando nela, e quando chegar a uma certa quantidade você executaria o post.
Espero ter ajudado. |
|
Voltar ao Topo |
|
 |
gika Novato


Registrado: Quinta-Feira, 28 de Junho de 2007 Mensagens: 37 Localização: Bauru - SP
|
Enviada: Seg Nov 19, 2007 3:43 pm Assunto: |
|
|
Isso! Era exatamente isso que estava pensando em fazer! Só tenho uma dúvida! Por exemplo! dei ApplyUpdates nos 1.000 primeiros registros, ok, quando for dar applyupdates nos próximo 1.000 ele vai dar applyupdates nos 1.000 anteriores de novo?
Fiz isso que disse, do contador, mas conforme vou dando ApplyUpdates vai ficando mais lento!
Mais ou menos isso... _________________ Se todo animal inspira ternura, o que houve, então, com os homens? (Guimarães Rosa) |
|
Voltar ao Topo |
|
 |
danielbuona Profissional


Registrado: Quinta-Feira, 30 de Junho de 2005 Mensagens: 576 Localização: São Paulo/SP
|
Enviada: Seg Nov 19, 2007 4:01 pm Assunto: |
|
|
na verdade o problema da lentidão não é só por causa do apply.... se vc tirar o apply e só ir dando post no cds, vai ver que na medida do progresso ele vai ficando cada vez mais lento.... quando ele vai chegando perto dos 9k registros, você já tá quanse terrubando a aplicação de tão lento...
O que eu fiz para resolver esse problema nos meus programas, eu fiz como os amigos ai em cima disseram, usei comando SQL. |
|
Voltar ao Topo |
|
 |
gilsonnrodrigues Moderador

Registrado: Quinta-Feira, 14 de Abril de 2005 Mensagens: 9009 Localização: Governador Valadares-MG
|
Enviada: Seg Nov 19, 2007 4:24 pm Assunto: |
|
|
eu não vou emitir minha opinião sobre isso pq o pessoal apela comigo!!!
mas são qtos registros + ou -?
pq tenho um exemplo com + de 800.000 registros e não ficou lento em momento algum.
ah! ia me esquecendo!!
eu não uso CDS.
será q é por isso??
puts! não era pra eu dizer! |
|
Voltar ao Topo |
|
 |
Borland_Linuxer Moderador

Registrado: Terça-Feira, 11 de Outubro de 2005 Mensagens: 4252 Localização: Manaus - Am
|
Enviada: Seg Nov 19, 2007 4:32 pm Assunto: |
|
|
gilsonnrodrigues escreveu: | eu não vou emitir minha opinião sobre isso pq o pessoal apela comigo!!!
mas são qtos registros + ou -?
pq tenho um exemplo com + de 800.000 registros e não ficou lento em momento algum.
ah! ia me esquecendo!!
eu não uso CDS.
será q é por isso??
puts! não era pra eu dizer! |
Pois e gilson eu crie um programa recentemente para migrar um banco de um cliente meu e usando Tsqlquery e foi rapidinho e quando tentei usar cds ficou lentão.
Então e bom saber a hora de usar o cds, por que as vezes ele nem se faz necessario tem analizar primeiro antes de usa-lo
abraços _________________ Abraços
Sérgio Guedes
www.lsisistemas.com.br
www.scvarejo.com.br - Projetos para parceiros e desenvolvedores |
|
Voltar ao Topo |
|
 |
gilsonnrodrigues Moderador

Registrado: Quinta-Feira, 14 de Abril de 2005 Mensagens: 9009 Localização: Governador Valadares-MG
|
Enviada: Seg Nov 19, 2007 8:28 pm Assunto: |
|
|
Borland_Linuxer escreveu: | gilsonnrodrigues escreveu: | eu não vou emitir minha opinião sobre isso pq o pessoal apela comigo!!!
mas são qtos registros + ou -?
pq tenho um exemplo com + de 800.000 registros e não ficou lento em momento algum.
ah! ia me esquecendo!!
eu não uso CDS.
será q é por isso??
puts! não era pra eu dizer! |
Pois e gilson eu crie um programa recentemente para migrar um banco de um cliente meu e usando Tsqlquery e foi rapidinho e quando tentei usar cds ficou lentão.
Então e bom saber a hora de usar o cds, por que as vezes ele nem se faz necessario tem analizar primeiro antes de usa-lo
abraços |
aconteceu um caso comigo q contei pra um programador colega meu e ele nem acreditou. dessa vez a culpa nem era do CDS.
eu fiz um prog de atualização q criava um banco em branco e copiava os dados de um banco pra o outro.
eu usava o componente IBODataset (IBOQuery)
e tava mt demorado. ai teve um cliente com um banco mt grande q fiz questao de copiar o banco dele aki pra empresa e fazer a atualização aki pra testar.
demorou 1 hora e 6 minutos.
fiz de td pra melhorar a inserção, até q descobri q o prob era a leitura.
mudei o compo de leitura pra o IB_Cursor, demorou miseros 6 minutos e meio, confeço q fiquei pasmo.
esse colega meu veio aki pra ver. pegamos o mesmo projeto, substituia o compo de leitura pra um IBOQuery, demorava + de uma hora, mudava ele pra IB_Cursor, demorava menos de 7 minutos.
ele tb ficou pasmo.
então tem q se ter mt paciencia pra ter o melhor proveito desses componentes. |
|
Voltar ao Topo |
|
 |
Borland_Linuxer Moderador

Registrado: Terça-Feira, 11 de Outubro de 2005 Mensagens: 4252 Localização: Manaus - Am
|
Enviada: Seg Nov 19, 2007 8:51 pm Assunto: |
|
|
Ola gilsonnrodrigues falando de coisas estranhas.
Ja peguei casos que o sistema dava uns erros doidos e nao funcionava de nenhum geito e qual a solução ?
Troquei o cds por outro configurado do mesmo jeito cara meio inacreditavel mais ja conteceu comigo.
Coisas do delphi. _________________ Abraços
Sérgio Guedes
www.lsisistemas.com.br
www.scvarejo.com.br - Projetos para parceiros e desenvolvedores |
|
Voltar ao Topo |
|
 |
gika Novato


Registrado: Quinta-Feira, 28 de Junho de 2007 Mensagens: 37 Localização: Bauru - SP
|
Enviada: Ter Nov 20, 2007 10:27 am Assunto: |
|
|
Pois é pessoal! Fiz as mesmas atualizações sem usar o ClientDataSet, só usando comando SQL!
Ficou muito mais rápido!!
 _________________ Se todo animal inspira ternura, o que houve, então, com os homens? (Guimarães Rosa) |
|
Voltar ao Topo |
|
 |
Borland_Linuxer Moderador

Registrado: Terça-Feira, 11 de Outubro de 2005 Mensagens: 4252 Localização: Manaus - Am
|
Enviada: Qua Nov 21, 2007 10:44 am Assunto: |
|
|
gika escreveu: | Pois é pessoal! Fiz as mesmas atualizações sem usar o ClientDataSet, só usando comando SQL!
Ficou muito mais rápido!!
 |
Pois e gika temos que analisar a situação adequada para usar o cds.
Abraços _________________ Abraços
Sérgio Guedes
www.lsisistemas.com.br
www.scvarejo.com.br - Projetos para parceiros e desenvolvedores |
|
Voltar ao Topo |
|
 |
|