Fórum Queda de desempenho usando Firebird 2.5.2 #438540
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
Gostei + 0
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
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)