Queda de desempenho usando Firebird 2.5.2
01/04/2013
0
olá pessoal,
Antes meu sistema usava a versão do Firebird 1.5.6, e naquela época, alguns clientes reclamavam de lentidão e queda de desempenho ao longo do tempo... então a gente fazia um backup/restore, e tudo voltava ao normal... tinha que fazer isso de tempos em tempos.
Então resolvemos migrar para Firebird 2.5.2, e agora, ainda estão reclamando de lentidão (gradual - piora conforme o tempo passa). E fiz um teste, apenas reiniciei o serviço do Firebird e voltou a ficar numa velocidade aceitável...
Alguém já viu isso, por passou por algo do tipo??
Obs:
- o maior banco de dados que vi de cliente tem uns 2,4 GB
- usamos os índices das tabelas corretamente
Antes meu sistema usava a versão do Firebird 1.5.6, e naquela época, alguns clientes reclamavam de lentidão e queda de desempenho ao longo do tempo... então a gente fazia um backup/restore, e tudo voltava ao normal... tinha que fazer isso de tempos em tempos.
Então resolvemos migrar para Firebird 2.5.2, e agora, ainda estão reclamando de lentidão (gradual - piora conforme o tempo passa). E fiz um teste, apenas reiniciei o serviço do Firebird e voltou a ficar numa velocidade aceitável...
Alguém já viu isso, por passou por algo do tipo??
Obs:
- o maior banco de dados que vi de cliente tem uns 2,4 GB
- usamos os índices das tabelas corretamente
Fernando
Curtir tópico
+ 0
Responder
Posts
01/04/2013
Rafael Cunha
Cara faz o seguinte cria a procedure abaixo e manda executar a mesma e veja se ocorreu alguma melhora no desempenho.
Isso ocorre devido ao uso e crescimento de um banco de dados e ate mesmo em falhas de configuração, é possivel que os Índices fiquem Fragmentados e com a estatística desatualizada. Isto pode ocasionar que eles sejam preteridos pelo compilador na hora de gerar o plano de execução dos comandos o que pode degradar a performance ( pesquisa lenta por exemplo).
CREATE PROCEDURE RECOSTRUIR_INDEX AS DECLARE VARIABLE INDEX_NAME VARCHAR(31); BEGIN FOR SELECT R.RDB$INDEX_NAME FROM RDB$INDICES R WHERE R.RDB$SYSTEM_FLAG <> 1 INTO :INDEX_NAME DO BEGIN EXECUTE STATEMENT 'ALTER INDEX ' || :INDEX_NAME || ' ACTIVE;'; END END
Isso ocorre devido ao uso e crescimento de um banco de dados e ate mesmo em falhas de configuração, é possivel que os Índices fiquem Fragmentados e com a estatística desatualizada. Isto pode ocasionar que eles sejam preteridos pelo compilador na hora de gerar o plano de execução dos comandos o que pode degradar a performance ( pesquisa lenta por exemplo).
Responder
04/04/2013
Fernando
Então, se faz um backup/restore (onde há a reconstrução dos índices) volta a funcionar numa velocidade bem razoável.
Uso Delphi 7 + DBExpress.
As principais gravações do sistema (tipo estoque, caixa, etc) são feitas via stored procedure e com transação.
Uso Delphi 7 + DBExpress.
As principais gravações do sistema (tipo estoque, caixa, etc) são feitas via stored procedure e com transação.
try Randomize; transacao.TransactionID:=Random(999999); transacao.IsolationLevel :=xilREADCOMMITTED ; DMCONN.SQLConn.StartTransaction(Transacao); DmProcedures.SPGrava.ExecProc; //Comando de Atualizacao DMCONN.SQLConn.Commit(Transacao); Executado:=true; except on E: Exception do begin DMCONN.SQLConn.Rollback(Transacao); Executado:=false; end; end;
Responder
Clique aqui para fazer login e interagir na Comunidade :)