Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Perfomace do update Uma dúvida cotidiana minha, eu tenho uma rotina onde eu preciso atualizar registro baseado na leitura de um xml Eu abro a transação com o banco de dados dentro ou fora do laço? ...
FC
Perfomace do update  
Fechado
Uma dúvida cotidiana minha, eu tenho uma rotina onde eu preciso atualizar registro baseado na leitura de um xml

Eu abro a transação com o banco de dados dentro ou fora do laço?


Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4


Dominando o Adianti 7 Quero me inscrever agora!

Comentários (7)


FC

  1. <?php
  2.            //read xml
  3.             $xml simplexml_load_file('xl_xml_data.xml');
  4.             //TTransaction::open('banco')  (Aqui)
  5.             //each this xml
  6.             foreach( $xml->record as $child ) {
  7.            /// abro executo o store e fecho a conexão (ou Aqui)
  8.                 
  9.             }
  10. ?>
MG

Felipe

Para muitos registros o ideal seria dentro do laço com um contador.

A cada 500 registros, por exemplo você committa e abre uma nova transação.

Para poucos registros faça fora do laço.

Abraços
FC

Obrigado Marcelo o Commit no Adianti ocorre no store ou ao fechar a conexão no close ?
MG

Felipe

O commit ocorre no TTransaction::close().

SF

Sempre fora do laço, conexão é uma coisa "cara" para o servidor , quanto menos melhor.
MG

Sergio

Sim, é isso mesmo, mas depende da quantidade de registros.

Se forem muitos registros, pode ocorrer "time-out" do servidor e a rotina ser cancelada sem fazer o que é preciso.

Para muitos registros, é recomendável que se faça por partes para evitar time-out no servidor e perder a execução da rotina.

Lembrando que dependendo do ambiente ou empresa, o desenvolvedor não tem como alterar as variáveis do ambiente de produção...
FC

Quando trabalhamos com grande volume de dados é complicado o jeito foi tratar os dados fora do servidor depois melhorar o algoritmo.

Obrigado a todos conseguir resolver.