ApplyUpdates, melhor maneira de usar...

Delphi

17/05/2004

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

Curtidas 0

Respostas

Lucas Silva

Lucas Silva

17/05/2004

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.


GOSTEI 0
Gilberto Fernandes

Gilberto Fernandes

17/05/2004

vlw Lucas...

mas tomara q tenha mais opiniões...


GOSTEI 0
Nerdex

Nerdex

17/05/2004

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


GOSTEI 0
Gilberto Fernandes

Gilberto Fernandes

17/05/2004

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...


GOSTEI 0
Lucas Silva

Lucas Silva

17/05/2004

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


GOSTEI 0
Gilberto Fernandes

Gilberto Fernandes

17/05/2004

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...


GOSTEI 0
Kotho

Kotho

17/05/2004

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...


GOSTEI 0
Tnaires

Tnaires

17/05/2004

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.


GOSTEI 0
Gilberto Fernandes

Gilberto Fernandes

17/05/2004

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


GOSTEI 0
POSTAR