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

Eurides Baptistella eurides.baptistella em gmail.com
Qui Ago 18 12:50:39 -03 2011


Boa tarde pessoal.

Estou com um problema em uma base de dados rodando sobre o Firebird
2.5, já procurei e não encontrei uma solução e nem a causa.

O mais próximo do problema que encontrei em um fórum foi nesse tópico
(http://www.forumweb.com.br/foruns/topic/86395-banco-firebird-lento-derepente)
na ForumWeb, mas ainda sem solução.

A base de dados possui 8.3Gb, já fiz backup/restore e não resolveu.

O que acontece é que logo após ligar o servidor, tudo está normal. Com
o passar do tempo e execução de alguns processos, o banco começa a
ficar lento.
nos meus testes estou executando um processo que pode ser repetido a
qualquer momento. Já verifiquei todas as stored-procedures e triggers
envolvidas e todas estão utilizando os índices corretamente.
Executo várias vezes a mesma coisa, e a cada execução, o processo fica
mais lento.
1º vez: 00:01:32
2º vez: 00:06:25
3º vez: 20:00:00

Se eu não reiniciar o servidor, a lentidão continua aumentando até o
ponto de ficar impraticável. Ao reiniciar, o tempo de execução volta
ao normal (1 minuto e 32 segundos).

Cheguei a olhar diversos sites e foruns que falam sobre lentidão em
bancos firebird, alguns mencionam um problema com o Windows Server
2008 64 Bits, também vi alguns relatos de problemas com o gerenciador
de cache do sistema operacional, mas pelo que pude avaliar, não é esse
o meu caso.

Nessa base de dados, consegui simular o problema nesses ambientes:
Firebird 2.5 + Windows 7 Ultimate 32bits
Firebird 2.5 + Windows Server 2008 R2
Firebird 1.5 + Windows 7 Ultimate 32bits

uma curiosidade:
Em outro processo, que também fiz testes, é executado diversos
deletes, que disparam triggers, que possuem updates em outras tabelas,
logo, é uma seqüencia de Deletes e updates. Esses updates estavam
muito lentos, dava para perceber no debug, todos os updates possuíam
as chaves das tabelas e as tabelas não são grandes (2000 registros) e
mesmo assim, levava quase meio segundo para executar cada update. Ao
recompilar a trigger que faz o update via IBExpert o processo passou a
ser rápido, até que depois de algum tempo voltou a ficar lento...

Desde já agradeço.

--
Eurides V. Baptistella
E-mail: eurides.baptistella em gmail.com
Fone: +55 (49) 9125-6572




Mais detalhes sobre a lista de discussão lista