SóProvas


ID
769510
Banca
CESPE / CEBRASPE
Órgão
Banco da Amazônia
Ano
2012
Provas
Disciplina
Banco de Dados
Assuntos

A inclusão de gatilhos (triggers) propicia melhor desempenho do banco de dados, em virtude de eliminar a necessidade de execução de algumas operações de acesso a esse banco de dados.

Alternativas
Comentários
  • acho q a questão esta certa...

    se X deve ser deletado no caso de Y ser deletado. Com um trigger isso seria feito através de uma chamada para deletar Y (um acesso?)

    alguem comenta?
  • Concordo com o colega acima. Considero a resposta como correta.
    Alguém poderia explicar melhor?
  • Marquei errado, pois no meu entedimento gatilhos (triggers) não são para melhorar o desempenho de um banco de dados, na verdade eles ajudam na proteção da integridade do mesmo. Logo está mais para questões de proteção dos dados e aplicação de regras para consistência deles do que melhora em desempenho.
  • Justamente por isto a questão estaria certa. Se as regras de integridade não forem verificadas no Banco, elas terão que serem verificadas na aplicação, o que aumentaria o número de acessos para validar as regras. Algúem me explica o erro?
  • Trigger melhora o desempenho do banco? Correto.
    Porém a questão afirma que isso ocorre em virtude de eliminar a necessidade de execução de operações de acesso. Isso está errado
  • Acredito que Trigger nao melhora a performance do banco, faz o contrario, imputa mais carga no acesso aos dados, CPU e cursores. Triggers melhoram a performance da aplicacao, pois parte do processamento que deveria ser feito pela aplicacao para manter a consistencia passou a ser feito pelo banco de dados, sobrecarregando assim o SGBD.
  • Nunca vi uma trigger melhorar a performance... Pode ser que em algum caso bem específico ela melhore (0.01%).
    Na verdade elas são uma verdadeira dor de cabeça para a performance. Quem já foi DBA sabe!
  • Triggers não melhoram o desempenho dos bancos de dados de modo geral, pois fazem que seja necessária um overhead de processamento a mais na hora de fazer atualizações, inserções ou deletar tuplas. Percebam que o sgbd fica mais sobrecarregado, principalmente se pensarmos que um servidor é recurso escasso (geralmente algumas maquinas fazem todo o trabalho), já cada cliente tem sua própria maquina. Por exemplo imaginem que queiramos fazer uma inserção de uma conta nova em um banco, e queiramos garantir que o saldo inicial seja maior ou igual a 0, poderíamos fazer isso em um trigger, porém é um overhead desnecessário, pois é algo facilmente verificável pelo cliente sem sobrecarregar o servidor com algo tao simples. É a mesma lógica de porque validação de campo de email em um web site é feito usando por exemplo javascript, uma linguagem que roda no cliente, e não no servidor. Triggers devem ser usados para manter consistência em situações mais complicadas, as vezes usando ate mais de uma relação, sendo que nesses casos pode haver uma melhora de desempenho para a aplicação por ela não ter que fazer consultas para o banco antes de fazer o update, perdendo tempo um tempo extra devido o proprio trafego dainformação pela rede. Mas veja o ganho é da aplicação não do bd

  • Vinícius, falar que a verificação de integridade será feita na aplicação está fora do escopo da questão.

  • Depois de analisar os comentários tive que pesquisar a respeito devido as controvérsias dos comentários, a maioria dos artigos que achei enfatizam que as triggers ajudam sim na performance.

    Segue:

    Uma trigger pode ser executada antes de atualizar um registro no banco, através do comando BEFORE UPDATE, após efetivar uma atualização para que ela seja garantida através do comando AFTER UPDATE. Antes de uma inclusão para testar valores,  restringindo a inclusão se não são de acordo com as regras da empresa, pois as triggers são feitas baseadas nestas, para isso se  usa o comando BEFORE INSERT e para garantir uma inclusão, por meio do comando AFTER INSERT. Também pode ser utilizada antes de uma exclusão, para que se possa confirmar a exclusão de um registro ou bloquear a mesma, através do comando BEFORE DELETE e depois de uma exclusão, com o comando AFTER DELETE, para garantir que o registro realmente foi excluído.

    Os cinco pontos que podem ser chamados de benefícios são:

    1. 1. Reduzir o tráfego na rede;
      2. Criar regras de negócios adaptadas a aplicação cliente,
    2. 3. Criar rotinas comuns que podem ser utilizadas para toda a empresa, reduzindo o tempo de desenvolvimento e manutenção.
    3. 4. Centralizar o processamento no servidor e reduzir os requisitos de hardware na estação cliente.
    4. 5. Aumentar a performance das aplicações.
    Enfim através das Stored procedures e das Triggers, todas as regras de negocio de uma empresa são realizadas, isto é centralizadas e executadas no servidor de banco de dados, por isso quando é realizado um evento ou uma ação na aplicação seja ela desktop ou web os comandos são enviados ao servidor de banco de dados, que vai interpretá-los, executa-los retornando apenas a resposta ao que foi solicitado, reduzindo assim a tráfego na rede, pois as informações já estarão "resumidas", ou seja, selecionadas de acordo com o solicitado pela aplicação.

    .

    Fonte: http://www.oficinadanet.com.br/artigo/banco_de_dados/dicas_triggers_e_procedures


    Espero ter ajudado.

    Só não conseguiu quem desistiu.
    Paz e força sempre.

  • Pessoal, 

    lembrem apenas que a questão fala explicitamente sobre melhor desempenho DO BANCO DE DADOS. Certamente, como vários colegas falaram,há uma melhoria de performance da aplicação com o uso de gatilhos e de procedures devido a uma série de fatores, inclusive o fato de preservar a consistência e integridade do banco. Mas para isso, há um overhead de operações no BD devido às operações dos triggers. Sendo assim, a performance do BD em si, não melhora.

  • Errado. O procedimento que melhora o desempenho são as store procedures, triggers não.