[firebase-br] Performance Inclusão Massa x Trigger x Tabelas

Carlos H. Cantu listas em warmboot.com.br
Sex Nov 30 16:48:52 -03 2012


Vg> Mas pelo que eu vi, o firebird, verifica que na trigger carrega informação
Vg> da tabela clientes, e ai acho que faz algum processo para deixar mas rapido
Vg> a trigger se ele passar pelo codigo.

Não existe isso. O código do seu exemplo é executado muito rapidamente
se o campo ID estiver indexado na tabela de clientes. Você
dificilmente notará qualquer diferença de performance com o uso
"normal" do sistema.

Além disso, com o decorrer do uso do banco de dados, tanto o cache do
firebird como o cache do sistema operacional vai sendo preenchido,
deixando as consultas ainda mais rápidas pois não há leitura no HD.

[]s
Carlos H. Cantu
www.FireBase.com.br - www.firebirdnews.org
www.warmboot.com.br - blog.firebase.com.br

Vg> Gladiston

Vg> Eu sempre nunca entendi bem mesmo como que os "caras do SQL", fazem magica,
Vg> de deixar uma aplicação com um unico arquivo enorme, ficar mais rapida do
Vg> que em arquivos pequenos separados por tabelas, sou da epoca do clipper e
Vg> DBF.

Vg> Acredito que o firebird, deve fazer algum cache, quando uma trigger usa mais
Vg> de uma tabela, eu na minha ignorancia, pensava que o fato de proteger um
Vg> codigo em uma trigger não causaria lendição.. Ex

Vg> Supondo que seja necessario ferificar se o cliente tem saldo disponivel
Vg> quando ele faz uma compra a prazo, para isso deve-se fazer uma consulta na
Vg> tabela de clientes pelo campo LimiteDisponivel

Vg> na trigger before insert da tabela de vendas pensaria em fazer o seguinte

If valorPrazo >> 0
Vg>     Select limitedisponivel from clientes where id = :parid into limite
Vg>     if ValorPrazo > limite
Vg>         Expception 'limite indisponivel'
Vg>     End
Vg> End

Vg> O codigo acima foi apenas para estudo provavelmente tem falhas ao compilar a
Vg> trigger, mas enfim usando a logia acima, ele irá consultar a tabela de
Vg> clientes apenas se o valorprazo > 0, ou seja na minha ignorancia de 
Vg> desenvolvedor, se o valor sempre for a vista, ele nunca passara pelo codigo,
Vg> e teoricamente ele não vai causar queda de performance a não ser se a venda
Vg> seja a prazo.

Vg> Mas pelo que eu vi, o firebird, verifica que na trigger carrega informação
Vg> da tabela clientes, e ai acho que faz algum processo para deixar mas rapido
Vg> a trigger se ele passar pelo codigo.

Vg> Este processo na vesão 2.5 será que esta mais inteligente ? , tipo ele
Vg> verifica que o valor prazo não é maior que zero e ai nem perde tempo 
Vg> verificando o resto nem carregando em cache informações da tabela cliente ?





Mais detalhes sobre a lista de discussão lista