MacacoLoco Novato
Registrado: Terça-Feira, 7 de Julho de 2015 Mensagens: 55
|
Enviada: Sáb Jun 09, 2018 5:05 pm Assunto: O mais recomendado seria uma trigger ou computedby? |
|
|
Pessoal, hoje me bateu uma dúvida. Até então uso no bd Firebrid, para validar uma informação, faço na TAB_MASTER um check, que é lançado sobre um campo VALOR, o qual é um ComputedBy, que pega este VALOR na TAB_DETALHE, checando por exemplo se VALOR > 0. Funciona bem.
Considerando uma trigger ou um campo computedby, combinado com chec, com a mesma sql.
Porém uma dúvida, posso fazer isto usando apenas uma trigger, que aparentemente faz a mesma coisa com mais eficiente e segurança, só irá ser acionada quando for gravar ou atualizar, e me parece mais leve.
Vi em algum local que usar campos ComputedBy demais pode acarretar em perda de desempenho, principalmente num tabela que terão muitos cadastros.
A dúvida é se é eficiente usar apenas a trigger ou ela pode falhar neste checagem? (se desabilitada, se o bd possui erros, em travamentos graves no so).
Estou reunindo argumentos para me ajudar a decidir pelo que for melhor.
o que vi até agora foi:
Se for muitos inserts por segundo, triggers podem causar lentidão. Eu pensava o contrário.
Permanece a dúvida apenas se, ao usar (mesma sql) em campos ComputedBy, irá causar lentidão em inserts ou selects, considerando uns raros picos de 1 inserção a cada 5 segundos, e no normal, cerca de 3 inserts por minutos, mas em raras vezes precisarei de selects em toda a tabela, com aproximadamente uns 10 mil registros, nesta base. Acho que neste caso tanto faz.
O que A Firebird diz: perde performance
http://www.firebirdfaq.org/faq289/
Resta saber até quando, se em meu cenário vale a pena.
EDIT:
Neste caso do link acima no firebirdfaq, só me é possível usar um campo computedby com um check na TB_MASTER, ou, é possível eu usar, dentro do firebird uma SP? não consigo imaginar encaixando uma sp, só um computed by com o sql...ou a forma seria usar a sp dentro de uma trigger no INSERT da TB_MASTER? e caio na mesma dúvida inicial (uma trigger com uma sql simples). |
|