[firebase-br] Processo rodando procedures/triggers fica lento depois de se executado mais de 1 vez

Eduardo Jedliczka edujed em gmail.com
Seg Ago 29 08:02:04 -03 2011


Caso o problema ainda persista, faça um teste....

Faça um gstat -h ao iniciar o banco, e após cada chamada a procedure,
faça novamente um gstat -h.

coloque o resultado dele aqui na lista, assim podemos ter uma idéia do
que está ocorrendo.

Outra coisa, como está o COMMIT desta Procedure ?

==========================
Eduardo Jedliczka
Apucarana - Pr
==========================



Em 19 de agosto de 2011 13:06, Eurides Baptistella
<eurides.baptistella em gmail.com> escreveu:
>
> Amigos, obrigado pelas respostas ... seguem meu relatos...
>
> Respondendo as duas perguntas:
> 1 - A linguagem de programação é Delphi 2007 usando InterXpress for Firebird
> como driver de conexão, mas esse não é o problema pois a chamada é em uma
> Procedure que é executada somente uma vez pelo Delphi. Outro ponto que
> isenta a aplicação é o fato de que a execução direta da Procedure já causa
> lentidão, é ela que executa vários updates, deletes seletc ....etc ...
> A aplicação está descartada acredito eu .....
>
> 2 - Foi identificado que existe uma lentidão "descomunal" em um simples
> Update que é disparado por uma trigger de outra tabela, claro que pode não
> ser o único problema mas ao menos quando removido o comando de update da
> trigger o tempo da execução reduz consideravelmente, o que pressupõe que o
> problema seja de fato o Update (ou o fato de disparar a trigger diversas
> vezes em cascata executando o delete/update embora os comandos sejam simples
> "delete from tabela where cod=OLD.COD" por exemplo).
> Todos os comandos utilizam índices de forma correta e eficiente e o update
> não é feito nos campos de índices da tabela.
> O GC está desativado e é executado todos os dias as 2h da madrugada
> juntamente com processos de backup/restore.
> Quanto ao Forced Writes, utilizo ele ligado, ou seja, enviando imediatamente
> para o disco, acho um risco desnecessário se pensarmos em hardwares de
> qualidade. Mas essa sua dica me chamou a atenção, pois nessa transação tenho
> mais de 20 mil registros afetados e irei realizar um teste desligando o
> Forced Writes.
>
> Para complementar as informações, vou rabiscar um exemplo de como é a
> cascata que tenho....
>
>
>   1. APLICAÇÃO DELPHI
>   2. EXECUTA PROCEDURE
>      1. SELECIONA VÁRIOS REGISTROS
>      2. EXECUTA VÁRIAS OUTRAS OPERAÇÕES..........
>      3. EXECUTA DELETE TABELA1
>         1. Executa trigger no before delete
>            1. A Trigger faz uma subtração do (valor a ser excluído - valor
>            atual), realizar o update do novo valor na TABELA5
>            4. EXECUTA DELETE TABELA2
>         1. Executa trigger no before delete
>            1. A Trigger faz uma subtração do (valor a ser excluído - valor
>            atual), realizar o update do novo valor na TABELA6
>         5. EXECUTA DELETE TABELA3
>         1. Executa trigger no before delete
>            1. A Trigger faz uma subtração do (valor a ser excluído - valor
>            atual), realizar o update do novo valor na TABELA7
>         6. EXECUTA VÁRIAS OUTRAS OPERAÇÕES
>
>
> Se for necessário posso tentar encaminhar os trechos de códigos para que vcs
> possam analisar.
>
> Novamente agradeço a atenção de todos .... aguardo por novas sugestões.
>
> att.
>
> --
> Eurides V. Baptistella
> E-mail: eurides.baptistella[@]gmail.com
> Fone: +55 (49) 9125-6572
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use: http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa




Mais detalhes sobre a lista de discussão lista