Para que não ocorram deadlocks no sistema a ser desenvolvido...
incumbência de desenvolver um sistema com as características
apresentadas a seguir.
* O sistema deverá ser integrado, interoperável, portável e
seguro.
* O sistema deverá apoiar tanto o processamento online, quanto
o suporte a decisão e gestão de conteúdos.
* O sistema deverá ser embasado na plataforma JEE (Java
enterprise edition) v.6, envolvendo servlets, JSP (Java server
pages), Ajax, JSF (Java server faces) 2.0, Hibernate 3.5, SOA
e web services.
O líder da equipe iniciou, então, um extenso processo de
coleta de dados com o objetivo de identificar as condições
limitantes da solução a ser desenvolvida e tomar decisões
arquiteturais e tecnológicas que impactarão várias características
funcionais e não funcionais do sistema, ao longo de seu ciclo de
vida. A partir dessa coleta, o líder deverá apresentar à equipe um
conjunto de informações e de decisões.
No que se refere a técnicas de análise de desempenho e otimização
de consultas SQL, no contexto do desenvolvimento do sistema
descrito no texto, julgue os itens seguintes.
Questão que merece ser anulada.
Justificativa abaixo dado por Marcio Vitorino.
Segundo Elmasri e Navathe (2002, p. 554) as principais estratégias utilizadas em transações OLTP para evitar deadlocks são
Bloqueio em Duas Fases Conservador, Ordenamento de Registros de Timestamp e > Validação.
> > No entanto, a questão afirma que "Para que não ocorram deadlocks
> > no sistema a ser desenvolvido pela equipe, deve-se evitar o desenho de
> > transações do SGBD nas quais o usuário precise realizar entrada de dados,
> > especialmente em sistemas de processamento transacional online."
> >
> > Esta afirmação afirma que basta evitarmos entradas de dados para
> > que não ocorram deadlock, quando na verdade as operações de exclusão e
> > atualização de dados também causam deadlock.
> >
> > ELMASRI, R.; NAVATHE, S. B. Sistemas de Banco de Dados - Fundamentos e
> > Aplicações. 3. ed. Rio de Janeiro: LTC S.A., 2002. 837p.
> >
> > Marcio Victorino
Concordo com o colega. A resposta correta da questão causa muita estranheza. Ao estudarmos o assunto nos deparamos com vários protocolos para evitar deadlocks, já que a entrada de dados é necessária.
Discordo num ponto. Podemos talvez interpretar por "entrada de dados" qualquer alteração, não apenas inclusão, mas também alteração e exclusão. Digo isso por que neste estudo resumimos as operações em "read"s e "write"s.
Mesmo considerando isso, discordo do gabarito, principalmente por que a necessidade de entrada de dados será ditada pela necessidade do negócio, não cabendo ao analista/DBA evitá-las ou não. Se num OLTP qualquer é preciso, por exemplo, registrar vendas, não há opção de evitar tais registros (inclusão, exclusão e alteração). Um OLTP implica especialmente nisso na maioria dos casso. Se a questão estivesse salientando a parte OLAP (mencionada implicitamente no enunciado em "suporte a decisão") eu até concordaria.
Na página da CESPE o gabarito ainda consta como preliminar:
http://www.cespe.unb.br/concursos/TCU2010/
Vamos aguardar.
O gabarito foi alterado de Certo para Errado em 08/09. Vide questão 145 da prova.
Link da prova: http://www.cespe.unb.br/concursos/TCU2010/arquivos/TCU10_001_5.pdf
Link da correção: http://www.cespe.unb.br/concursos/TCU2010/arquivos/TCU_10_TI_JUSTIFICATIVAS_DE_ALTERAO_DE_GABARITO.PDF
Abs, Edu.
Olá, pessoal!Justificativa da banca: O item é claro ao indicar que as transações as quais se refere são aquelas do SGBD delimitadas por BEGIN e END transaction. Dessa forma, ao afirmar que “deve-se evitar o desenho de transações do SGBD nas quais o usuário precise realizar entrada de dados", está claro que a entrada de dados seria aquela realizada no escopo da transação do SGBD, e não antes ou depois da transação. Sob outro aspecto, não se pode afirmar que as entradas de dados feitas pelo usuário provocam apenas inclusão, uma vez que a exclusão ou atualização de dados também envolvem entrada de dados. O item está errado, pois afirma que evitar o desenho de transações do SGBD nas quais o usuário precise realizar entrada de dados é condição necessária e suficiente para que se obtenha um sistema livre de deadlocks, quando, de fato, existem outros aspectos envolvidos.
Alternativa correta: E - Errado.
O enunciado aborda a questão de deadlocks em sistemas de banco de dados, que são situações onde duas ou mais transações ficam bloqueadas indefinidamente, pois cada uma está esperando por um recurso que a outra transação detém. Entendendo isso, vamos analisar porque a alternativa é incorreta.
O enunciado sugere que, para evitar deadlocks, deve-se evitar transações nas quais o usuário tenha que realizar entrada de dados, especialmente em sistemas de processamento transacional online (OLTP). No entanto, esta não é uma estratégia eficaz para prevenir deadlocks. Deadlocks são prevenidos e gerenciados por meio de técnicas como detecção de deadlocks, algoritmos de prevenção e de resolução, como o algoritmo do banqueiro, e não pela forma como as transações são desenhadas em relação à entrada de dados do usuário.
Na prática, em ambientes OLTP, é comum que os usuários precisem inserir dados durante as transações. Portanto, evitar a entrada de dados do usuário não é uma solução viável. Em vez disso, são utilizadas técnicas de gerenciamento de concorrência, como controle de concorrência otimista e pessimista, e mecanismos de lock para garantir que as transações sejam processadas de maneira eficiente, mantendo a integridade do banco de dados.
Em resumo, a estratégia de evitar a entrada de dados do usuário para prevenir deadlocks não é adequada nem prática. Por isso, a assertiva é considerada errada, visto que o foco para evitar deadlocks deve estar no gerenciamento e na detecção apropriados no nível do SGBD (Sistema Gerenciador de Banco de Dados), e não na limitação da interação do usuário com o sistema.