[firebase-br] Regressão no Firebird???

Denis Pereira Raymundo denisuba em gmail.com
Ter Maio 10 15:55:02 -03 2016


    Aqui na empresa gostamos muito do Firebird, mas desta vez aconteceu um 
episódio muito estranho. Quando atualizamos um cliente que estava na versão 
2.5.1 para a 2.5.5 uma SQL simplesmente parou tudo. Trouxemos o banco para 
análise e fizemos teste também na versão 3.0.0 e por incrível que pareça 
continuou com o mesmo problema:

    Na versão 2.5.1 o comando roda em milissegundos, já nas versões mais 
novas demora 4 minutos e meio.

    Achei que fosse algo relacionado à escolha do plano de execução, mas 
forçando o mesmo plano, as leituras ao disco continuaram muito altas. Vejam 
os logs abaixo:

    Se alguém ( tipo Cantú :-) ) quiser dar uma olhada, tenho como enviar a 
SQL e o banco apenas com as tabelas envolvidas.

    Em tempo: Já revolvemos o problema modificando a forma como a SQL era 
feita. O problema é que o pessoal perde a confiança nas versões mais novas e 
não quer atualizar outros clientes com medo de se deparar com outros 
problemas do tipo.

Firebird 2.5.1
PLAN (DP_REGISTRO_OEST INDEX (UNQ1_DP_REGISTRO_OEST))
PLAN (DP_FERIAS INDEX (DP_FERIAS_IDX1, FK_DP_FERIAS_3))
PLAN JOIN (JOIN (JOIN (JOIN (DP_REGISTRO NATURAL, DP_RECIBO INDEX 
(FK_DP_RECIBO_1)), DP_RECIBO_EVE INDEX (FK_DP_RECIBO_EVE_1, 
DP_RECIBO_EVE_IDX2)), DP_EVENTO INDEX (RDB$PRIMARY_DP_EVENTO)), 
DP_RECIBO_PER_ANTERIOR INDEX (FK_DP_RECIBO_PER_ANTERIOR_1))

------ Performance info ------
Prepare time = 0ms
Execute time = 16ms
Current memory = 1.382.144
Max memory = 2.246.624
Memory buffers = 75
Reads from disk to cache = 141
Writes from cache to disk = 0
Fetches from cache = 4.731




Firebird 3.0
PLAN (DP_REGISTRO_OEST INDEX (UNQ1_DP_REGISTRO_OEST))
PLAN (DP_FERIAS INDEX (DP_FERIAS_IDX1))
PLAN JOIN (JOIN (JOIN (JOIN (DP_REGISTRO NATURAL, DP_RECIBO INDEX 
(FK_DP_RECIBO_1)), DP_RECIBO_EVE INDEX (FK_DP_RECIBO_EVE_1, 
DP_RECIBO_EVE_IDX2)), DP_EVENTO INDEX (RDB$PRIMARY_DP_EVENTO)), 
DP_RECIBO_PER_ANTERIOR INDEX (FK_DP_RECIBO_PER_ANTERIOR_1))

------ Performance info ------
Prepare time = 16ms
Execute time = 4m 32s 844ms
Current memory = 2.960.928
Max memory = 3.030.104
Memory buffers = 90
Reads from disk to cache = 5.693.279
Writes from cache to disk = 0
Fetches from cache = 9.345.611


Obrigado pela ajuda.

Denis Pereira Raymundo
"O seu Deus o ensina e o instrui acerca do que há de fazer" Is 28.26 






Mais detalhes sobre a lista de discussão lista