Fórum ApplyUpdates, melhor maneira de usar... #232673

17/05/2004

0

Amigos do fórum, estou querendo trocar uma idéia com relação ao ApplyUpdates...

com a ajuda da matéria de Profiling da ClubeDelphi Edição 51, que diga-se de passagem, uma excelente matéria, reparei que em muitas rotinas de meus sistemas o principal ´gargalo´ estava em rotinas de loop para gravar dados em tabelas, eu estava dando applyupdates em cada inserção, mudando o applyupdates para o fim do loop (depois de todos os registros gravados na memória) a velocidade da rotina foi muito melhor.

Mas aí em fiquei curioso, até que ponto a rotina ser desse jeito é interessante? A integridade dos dados não ficará comprometida? Ou na verdade essa é a maneira correta de se escrever a rotina?

quem puder dar a sua opinião eu agradeceria...

Exemplo:

antes:
while not Tabela1.EOF do
begin
Tabela2.Insert;
{Atribuindo campos}
Tabela2.Post;
Tabela2.ApplyUpdates(0);
Tabela1.Next;
end;

Depois:
while not Tabela1.EOF do
begin
Tabela2.Insert;
{Atribuindo campos}
Tabela2.Post;
Tabela1.Next;
end;
Tabela2.ApplyUpdates(0);


Gilberto Fernandes

Gilberto Fernandes

Responder

Posts

17/05/2004

Lucas Silva

while not Tabela1.EOF do 
begin 
Tabela2.Insert; 
{Atribuindo campos} 
Tabela2.Post; 
Tabela2.ApplyUpdates(0); 
Tabela1.Next; 
end; 


Eu acho melhor este, pois a cada registro inserido você atualiza seu banco.
Com este código a rotina fica bem mais lenta, que no outro.


Responder

Gostei + 0

18/05/2004

Gilberto Fernandes

vlw Lucas...

mas tomara q tenha mais opiniões...


Responder

Gostei + 0

18/05/2004

Nerdex

Gilberto... eu não curto esse ´tipo de padrão´, e uso Querys e SQLs para tudo... creio que seja mais rápido... ñ?


Responder

Gostei + 0

19/05/2004

Gilberto Fernandes

NerdeX, eu geralmente utilizo comandos de Insert e Update por SQL... mas tem algumas rotinas q isso não é possível... mas realmente a velocidade é maior nesses casos...


Responder

Gostei + 0

19/05/2004

Lucas Silva

Se você já tem o método ´POST´ na query, eu acho bobagem ficar fazendo a inserção por SQL


Responder

Gostei + 0

19/05/2004

Gilberto Fernandes

Lucas eu quis dizer q algumas rotinas eu uso inserção e alteração por SQL... porém em outras, onde não é possível usar SQL, eu uso o método post...

e como o Nerdex disse, a inserção por SQL é bem mais veloz do q o método de dar o applyupdates...

mas a minha questão é usar o applyupdates em cada inserção ou usá-lo depois de todas as inserções...


Responder

Gostei + 0

19/05/2004

Kotho

imagine se acabar a energia no meio do processo!!! O ApplyUpdates no final da operação garantiria que, ou todo o processo seria processado, ou nenhum...


Responder

Gostei + 0

19/05/2004

Tnaires

Eu, particularmente, concordo com o Kotho. Por razoes de segurança dos dados armazenados, prefiro aplicar as atualizaçoes depois do laço. Mas a melhor pessoa pra decidir isso e vc, Gilberto.


Responder

Gostei + 0

19/05/2004

Gilberto Fernandes

com relação a queda de energia, as experiências q eu tive com relação ao interbase me levam a crer que quase todas as vezes que uma interrupção abrupta do sistema o banco se corrompe e tenho que restaurar um backup. Então nem faria muita diferença entre as rotinas.

vlw galera


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar