[firebase-br] Transações x IBO x Delphi
Carlos H. Cantu
listas em warmboot.com.br
Sáb Dez 20 11:19:09 -03 2014
Que eu me lembre, antes de um componente do IBO ser destruido, ele
mesmo verifica se está preparado e dá o unprepare.
Quanto a ter 7.000 transações, tem algo errado aí no seu código ou
talvez algum bug no IBO, pois o padrão do IBO é usar a mesma transação
interna e não ficar abrindo uma nova. Eu iria mais além e nesse caso
faria o controle transacional explicitamente.
Faça um debug mais profundo do seu código para ver o que está
acontecendo. Outra coisa: o Sinatica não tem a capacidade de
"capturar" informações que aconteceram muito rapidamente. Para isso,
use FBScanner ou a própria TraceAPI do Firebird.
[]s
Carlos H. Cantu
www.FireBase.com.br - www.firebirdnews.org
www.warmboot.com.br - blog.firebase.com.br
VG> Pessoal tenho uma outra situação
VG>
VG> Em uma rotina, de importação em massa, envolvida por várias tabelas
VG> Clientes
VG> Produtos
VG> NF
VG> Itens
VG> Contas Receber
VG>
VG> Enfim, uma importação do arquivo SPED Fiscal (para quem conhece sabe que em
VG> um único TXT vem informações de várias tabelas)
VG>
VG> Tenho uma rotina, com vários querys, e cursores, e um script para inserção
VG> no banco ou update das informações lidas.
VG>
VG> O que o sistema faz, lê o arquivo do sped, verifica se já tem a informação
VG> no cadastro, se tiver, verifica se é necessário atualizar se não for
VG> necessário não dá update, se for necessário, ai dá o update, se não existir,
VG> ai dá o insert.
VG>
VG> Ocorre que, existem alguns selects, que se repetem, então para agilizar eu
VG> tenho alguns cursores, onde eu apenas troco os parâmetros e dou refresh, em
VG> alguns casos tenho querys.
VG>
VG> Estou monitorando e vi que nesta rotina o número de transações sobe a 7 mil
VG> transações abertas, coisa que dificilmente tenho 7 mil queries (isso supondo
VG> que eu tenha uma transação a cada query)
VG> Nesta janela, as consultas principais e o script tenho apenas uma transação,
VG> mas tenho alguns componentes que usam a transação default do ibo.
VG>
VG> Monitorando pelo sinatica, tem muitas transações que não mostram o comando
VG> que originou a transação, isso porque, quando vc dá um close no query, ele
VG> fecha, mas não da o unprepare.
VG>
VG> Minha ideia é dar o unprepare manual porque este número está muito alto.
VG>
VG> Fora esta solução alguém tem alguma outra suspeita ?
VG> Alguém conhece uma maneira deu adicionar antes de destruir a query da
VG> memória dar o unprepare na mesma ?, mas sem alterar os fontes do ibo ? (tipo
VG> no meu fonte, eu adicionar algo assim: antes do destroy de todas as query,
VG> dar o unprepare, desta forma não precisa ir form por form e fazer isso)
VG>
VG>
VG>
VG> Atenciosamente,
VG> Valdemir
VG>
VG> ______________________________________________
VG> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
VG> Para saber como gerenciar/excluir seu cadastro na lista, use:
VG> http://www.firebase.com.br/fb/artigo.php?id=1107
VG> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
Mais detalhes sobre a lista de discussão lista