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?


Curso completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto 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.