Prévia do material em texto
Aula 04
Banco de Dados p/ Polícia Federal
(Perito - Área 3 - Tecnologia da
Informação) - 2020
Autores:
Equipe de TI do Estratégia
Concursos, Thiago Rodrigues
Cavalcanti
Aula 04
27 de Fevereiro de 2020
Processamento de transações, controle de concorrência e recuperação. ........................... 3
Introdução ....................................................................................................................................... 3
O problema ..................................................................................................................................... 4
O que é uma transação? ................................................................................................................. 4
Fluxo de uma transação .................................................................................................................. 8
O Log do sistema ........................................................................................................................... 10
Ponto de efetivação ...................................................................................................................... 13
Plano de execução ......................................................................................................................... 14
Serialidade (Serializability) ............................................................................................................ 16
Equivalência de planos .................................................................................................................. 18
Suporte a transação em SQL ......................................................................................................... 20
Controle de Concorrência ................................................................................................. 23
A importância do controle de concorrência .................................................................................. 23
Por que o controle de concorrência? ............................................................................................. 24
Técnicas de bloqueio ..................................................................................................................... 24
Protocolo de bloqueio em duas fases ............................................................................................ 27
Protocolo com base em Grafos ..................................................................................................... 31
Ordenação por Timestamp ............................................................................................................ 32
Recuperação após falha .................................................................................................... 35
Classificação das falhas ................................................................................................................. 35
Estrutura de armazenamento ....................................................................................................... 36
O uso dos arquivos de log ............................................................................................................. 37
Modificações adiadas e imediatas ................................................................................................ 38
Checkpoint .................................................................................................................................... 39
Paginação Shadow ........................................................................................................................ 42
Visão geral do algoritmo de Aries ................................................................................................. 43
Mapas mentais ................................................................................................................. 46
Mapas ........................................................................................................................................... 46
Questões Comentadas diversas bancas ............................................................................ 49
Questões Sem Comentários........................................................................................................... 96
Gabarito ...................................................................................................................................... 123
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
2
124
Considerações Finais ...................................................................................................... 124
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
3
124
PROCESSAMENTO DE TRANSAÇÕES, CONTROLE DE
CONCORRÊNCIA E RECUPERAÇÃO.
INTRODUÇÃO
Nosso assunto agora é transações! Vamos descrever os conceitos necessários aos
sistemas de processamento de transações. Discutiremos as técnicas de controle de
concorrência usadas para assegurar a propriedade de não interferência ou isolamento das
transações executadas concorrentemente. A correta implementação de um mecanismo de
controle de transações ajuda na proteção e na integridade dos dados.
Professor, você poderia contextualizar melhor os assuntos previstos para esta aula? Claro
... vamos observar a figura abaixo:
Figura 1 - Elementos básicos de uma transação.
As transações são unidades lógicas de trabalho! Elas têm um início em um comando de
BEGIN TRANSACTION que dá o pontapé inicial em um conjunto de operações que devem
ser executadas pelo SGBD. Essas operações podem fazer uma ou mais modificações sobre
os dados. Se ao longo da execução de uma transação algum problema acontecer, o banco
de dados deve retornar ao mesmo estado que estava no início da transação. As ações de
desfazer são executadas após o comando de ROLLBACK, que pode ser explícito ou
implícito.
Caso todas as operações sejam concluídas com sucesso, o comando de COMMIT de ser
acionado para que as mudanças sejam efetivadas na base de dados. Levando assim, o
banco de dados para um novo estado válido. A nossa aula será sobre esses assuntos ...
conhecer um pouco mais sobre transações e suas características e observar como a
recuperação após falha pode ser executada. Vamos nessa!!?
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
4
124
O PROBLEMA
Uma transação comercial é uma interação no mundo real, geralmente entre uma empresa
e uma pessoa ou outra empresa, onde algo é trocado. Por exemplo, uma transação poderia
envolver a troca de dinheiro por produtos, informações ou serviços. Normalmente, algum
registro é necessário para gravar o que aconteceu. E muitas vezes, este registro é feito por
um sistema de computador, para uma melhor escalabilidade, confiabilidade e custo.
Um sistema de processamento de transações tem que lidar com grandes volumes de forma
eficiente, evitar erros devido às operações simultâneas, evitar a produção de resultados
parciais, crescer de forma incremental, evitar a paralisação das operações, “nunca” perder
registros, oferecer distribuição geográfica, ser personalizável, escalar de forma harmônica,
e ser fácil de gerir. É uma tarefa difícil, mas possível.
Esta aula descreve como essa tarefa é executada. Explica os princípios subjacentes de
automatizar as transações comerciais, tanto para as empresas tradicionais quanto para o
ambiente de comércio eletrônico. Vamos exploraras complexidades de tecnologias
fundamentais, tais como o uso de logging e bloqueio.
Mas fique tranquilo! Não queremos pular estágios no seu processo de aprendizado,
vamos começar então descrevendo os conceitos básicos para podermos evoluirmos de
forma tranquila pelo conteúdo.
O QUE É UMA TRANSAÇÃO?
A primeira coisa que precisamos saber sobre o
assunto é a definição de transação. De forma mais
ampla é um programa em execução ou um processo
que inclui um ou mais acessos ao banco de dados,
que efetuam leitura ou atualizações de seus
registros. Pode ser considerada também uma
unidade lógica e atômica de trabalho que estará
completa ou não será realizada.
Perceba que essa definição é leva você a acertar
questões sobre o assunto ... quer ver?
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
5
124
1. CEBRASPE (CESPE) - Analista Judiciário (TJ PA)/Análise de
Sistema/Suporte/2020
Um sistema de banco de dados proporciona a empresas o controle centralizado de
todos os seus dados. O funcionamento do banco de dados baseia-se em unidades
lógicas de trabalho conhecidas como
a) entidades.
b) ocorrências.
c) registros.
d) tabelas.
e) transações.
Comentário: Perceba que a questão quer saber qual o termo associada a seguinte
definição: "uma unidade lógica de trabalho". Acabamos de ver que essa é a definição
de transação. Logo, nossa resposta encontra-se na alternativa E.
Para viabilizar a execução das transações o Sistema Gerenciador de Banco de Dados
(SGBD) possui um módulo denominado monitor de processamento de transações ou
simplesmente gerenciador de transações. Esse módulo é responsável pela execução
correta das operações presentes em uma transação. É importante perceber que ao executar
uma transação todas as operações devem ser concluídas ou nenhuma delas deve ser
efetivada.
O fato de ser realizada com sucesso (ou não ser realizada) nos leva a uma das
características usadas para entender o processo de execução das transações: a
atomicidade. Juntamente com outras propriedades desejáveis, conhecidas pela sigla ACID,
essas características devem ser percebidas em um sistema de gerenciamento de
transações:
Atomicidade: representa uma unidade atômica de processamento. Cada
transação deve ser executada por completo ou não ser executada. Em outras
palavras, cada operação presente dentro de uma transação deve ser executada
com sucesso ou nenhuma delas será executada (sofrem rollback e são desfeitas).
Não deve existir a possibilidade de apenas parte de uma transação ser
concluída com sucesso. O subsistema de recuperação é responsável pela
atomicidade.
ACID
TRANSAÇÕES
A
ATOMICIDADE
C
CONSISTÊNCIA
I
ISOLAMENTO
D
DURABILIDADE
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
6
124
Consistência: a correta execução de uma transação deve levar o banco de dados
de um estado consistente para outro estado igualmente consistente. Desta forma,
conserva-se a consistência interna do banco de dados. Dentro deste contexto,
todas as restrições de integridade devem ser respeitadas. A obtenção da
consistência fica a cargo dos programadores ou do módulo de restrições de
integridade.
Isolamento: as atualizações não devem ser tornadas visíveis para outras
transações até o commit. Uma transação não deve ter conhecimento sobre a
execução das demais. Podemos dizer que um conjunto de transações é isolado
entre si caso o efeito da execução delas concorrentemente seja o mesmo da
execução de cada uma delas sequencialmente. O subsistema de controle de
concorrência é responsável pela garantia do isolamento.
Durabilidade: sempre que o banco de dados for modificado e essas mudanças
forem efetivadas, elas não podem ser perdidas por causa de falhas subsequentes.
A durabilidade é garantida por meio das cópias de segurança, dos logs de
transação e do subsistema de recuperação.
Vejamos duas questões sobre o assunto. Aqui, é bom dizer que você deve fazer um esforço
para entender bem cada uma dessas propriedades (um segredo: elas desabam em
provas!!!)
2. Consultor Legislativo (ALEPI)/Tecnologia da Informação/2020
Para garantir as propriedades ACID de um Sistema Gerenciador de Banco de Dados
(SGBD) da Assembleia Legislativa do Piauí, um Analista de TI verificou que:
I. A execução de uma transação deve levar o banco de dados de um estado íntegro a
um outro estado íntegro;
II. Os efeitos de uma transação em caso de sucesso (commit) devem persistir no banco
de dados mesmo em casos de quedas de energia, travamentos ou erros. Garante que
os dados estarão disponíveis em definitivo.
Assinale a opção que corresponde CORRETAMENTE aos protocolos I e II,
respectivamente, as propriedades ACID.
a) Consistência e Durabilidade.
b) Consistência e Atomicidade.
c) Durabilidade e Atomicidade.
d) Durabilidade e Isolamento.
e) Isolamento e Atomicidade.
Comentário: Apenas relembrando os conceitos que vimos acima ...
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
7
124
• Atomicidade: Garante que a transação no SGBD será atômica , ou seja,
indivisível. Aqui é TUDO ou NADA. Ou seja, a transação será executada por
completo ou não será executada.
• Consistência: A consistência afirma que uma transação levará um banco de dados
de um estado consistente para outro. (essa é a definição do ITEM I).
• Isolamento: Garante que cada transação é executada de forma isolada. Dessa
forma, uma transação que ainda não foi concluída não irá afetar a execução de
outra transação que esteja ocorrendo.
• Durabilidade: Os dados permanecem registrados no SGBD depois do COMMIT
independente de falha ou erro, são persistentes ou permanentes. (essa definição
está associada ao ITEM II.
Assim temos a nossa resposta na alternativa A.
Gabarito: A.
3. Técnico (UEPA)/Informática/2020
As propriedades de transações impostas pelos métodos de controle de concorrência e
recuperação do Sistema de Gerenciamento de Banco de Dados (SGBD) são
a) atomicidade, preservação da consistência, isolamento e durabilidade.
b) atomicidade, preservação da concorrência, rastreamento e durabilidade.
c) granularidade, preservação da consistência, rastreamento e durabilidade.
d) granularidade, preservação da concorrência, isolamento e durabilidade.
Comentário: Perceba que essa questão cobra apenas a lista das propriedades de uma
transação, quais sejam: ATOMICIDADE, CONSISTÊNCIA, ISOLAMENTO e
DURABILIDADE. Perceba que essa lista de propriedades continua sendo bastante
cobrada.
Gabarito: A.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
8
124
FLUXO DE UMA TRANSAÇÃO
Depois de entendermos o conceito
básico, passaremos agora para analisar
o seu fluxo ou processo. Esse fluxo, que
descreve as ações presentes na
execução, possui alguns estados e
mudanças de um estado para outro
acontece por meio de uma operação.
Observe a figura abaixo, as elipses
representam os estados, as palavras ao
lado de cada seta tratam das
operações, que podem ou não resultar
em uma mudança de estado.
Analisando a máquina de estados da figura acima, observe que operação de Begin
Transaction inicia a execução da transação, levando a mesma para o estado ATIVO. Em
seguida, são executadas as operações de Read/Write, ou seja, operações de leituraou
escrita de itens no banco de dados, que são executadas como parte da transação. Essas
operações fazem acesso ao banco. Após a execução de todos os comandos sobre o banco
uma operação de End Transaction especifica que as operações terminaram, marca o limite
final da transação e leva a transação para o estado PARCIALMENTE EFETIVADA.
Nesta etapa todas as mudanças feitas pela operação estão devidamente gravadas no log,
porém, em alguns casos, os dados ainda não estão efetivamente armazenados no banco
de dados. A grande questão aqui é: de posse do arquivo de log podemos fazer uma
recuperação do banco de dados caso o comando de efetivar (COMMIT) seja executado com
erro ou uma falha aconteça durante está operação!
A operação de COMMIT leva a transação para o estado de EFETIVADA. O Commit
Transaction sinaliza a finalização com sucesso de uma transação, de modo que qualquer
atualização executada pela transação possa ser efetivada no banco de dados.
Figura 2 - Estados e operações de uma transação.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
9
124
Até aqui vimos o caminho feliz, outra possibilidade é a ocorrência de um problema durante
a execução da transação, neste caso, a operação de Rollback ou Abort é executada,
sinaliza que a transação terminou sem sucesso e o que foi executado ou modificado deve
ser desfeito. Essas ações de desfazer são feitas no estado de FALHA.
Após essa rápida descrição textual, faremos abaixo um resumo para fixarmos os estados
de uma transação:
• Ativa: poderá emitir operações de read e write.
• Parcialmente efetivada: alguns protocolos de restauração precisam garantir
que uma falha de sistema não impossibilite a gravação permanente dos
dados. Uma possibilidade é a gravação das alterações nos logs. Nesta etapa
são feitas algumas verificações para garantir a continuação da execução.
• Efetivada (committed state): uma vez atendida todas as verificações da
etapa anterior, é possível executar o commit que se encarregar de gravar os
dados em um armazenamento não volátil.
• Falha: se uma das verificações falhar ou se a transação for interrompida em
seu estado ativo. A transação deverá ser revertida para desfazer os efeitos
das operações de write já efetivadas no banco de dados.
• Encerrada: Quando a transação deixa o sistema.
Vamos agora fazer uma questão para fixarmos o assunto visto até aqui.
4. Técnico (UEPA)/Informática/2020
Considerando conceitos de processamento de transações em bancos de dados,
analise as afirmativas a seguir.
I. Uma transação é um programa em execução que forma uma unidade lógica de
processamento de banco de dados que inclui uma ou mais operações de acesso, como
operações de inserção, exclusão, modificação ou recuperação.
II. Para especificar os limites de uma transação são utilizadas as operações explícitas
BEGIN_TRANSACTION e WRITE_TRANSACTION em um programa de aplicação.
III. A operação COMMIT_TRANSACTION executa as mudanças realizadas pela
transação de modo que elas podem ser desfeitas posteriormente.
Considerando V como afirmativa verdadeira e F como falsa, a sequência que expressa
corretamente o julgamento das afirmativas é
a) I - V; II - V; III - F.
b) I - F; II - V; III - V.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
10
124
c) I - V; II - F; III - V.
d) I - V; II - F; III - F.
Comentário: Vamos analisar cada uma das afirmativas:
I. Certa. A afirmativa trouxe a definição correta de uma transação. Em outras palavras:
uma transação é uma unidade de trabalho que contém um bloco de operações. Essas
operações podem inserir, remover, modificar ou até mesmo buscar dados nas tabelas.
Ao final da transação, é possível confirmar as alterações realizadas (através do
comando COMMIT_TRANSACTION) ou descartar as alterações (comando
ROLLBACK_TRANSACTION).
II. Errada. Para especificar os limites de uma transação são usados dois comandos
explícitos: BEGIN_TRANSACTION e END_TRANSACTION, que marcam o início e o
fim de uma transação, respectivamente.
III. Errada. O comando COMMIT_TRANSACTION confirma as operações realizadas
pela transação, de forma que elas ficam registradas permanentemente no banco de
dados. Não é possível desfazê-las através de um ROLLBACK_TRANSACTION.
Assim, chegamos à sequência V - F - F, o que nos leva resposta na alternativa D.
Gabarito: D.
O LOG DO SISTEMA
Já entendemos que o fluxo da transação pressupõe
mecanismos de segurança para garantir a atomicidade e a
durabilidade das operações nele contidas. Um desses
mecanismos é o uso do log de transações. Utilizado para
permitir recuperação de falhas de transações. Também
chamado de Journal ele registra todas as operações que
afetam valores de itens do banco de dados. O log fica
devidamente armazenado em disco e, periodicamente, pode
sofrer backup em fita ou outro dispositivo de armazenamento
secundário ou terciário.
O log não será afetado por nenhum tipo de falha, exceto
falhas de disco ou catastrófica. A ideia é armazenar as operações executas pela
transação. Podemos, por exemplo, durante uma falha desfazer as operações, por meio dos
registros nos arquivos de log, das transações que não foram efetivadas. Outra utilização
das informações contidas no log seria para efetivar na base de dados as transações que
tenham a operação de commit ou efetivação devidamente registrada no log utilizando a
operação de refazer.
Os registros no log também são conhecidos como entradas. O perfil ou os dados
armazenados em cada uma dessas entradas vão depender do tipo de uso que se pretende
dar ao log. Se estamos tratando de um log de redo ou de recuperação precisamos
armazenar apenas dados sobre a transação, a operação, o item de dados e seus valores,
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
11
124
antigo e novo. Veja que o log de redo está preocupado apenas com a reconstrução do banco
de dados após uma falha.
É importante abrir um parêntese aqui antes de continuarmos.
Existe um conceito importante que permeia o uso do log que é o rollback em
cascata. Nele, caso uma transação T1 tenha lido um dado escrito ou modificado
por outra transação T2 e a transação T2 sofra rollback, a transação T1 também
sofrerá. Vejam que nestes casos é importante armazenar no log os registros de
leitura.
Existem protocolos para controle de transações que evitam reversões em cascata – os
quais compreendem quase todos os protocolos práticos – eles não exigem que as
operações de READ sejam escritas no log do sistema. Entretanto, se o log também for
usado para outros fins, como auditoria, então esse tipo de entrada deverá ser incluído no
log. Os logs de auditoria armazenam outros dados como o usuário que efetuou a operação.
Isso faz diferença se você quiser saber quem teve acesso aos registros na base de dados.
Um caso interessante de log de auditoria aconteceu recentemente, o supremo
solicitou acesso ao banco de dados de uma investigação do COAF. Como não é
possível negar informação a justiça, foi passada uma senha que acessava um
banco de dados de consulta (acesso apenas de leitura). É lógico que o ministro
entendeu que qualquer busca ou acesso aos dados ficaria registrada. Então, uma
busca por uma pessoa específica poderia levantar alguma suspeita. Acho que o
banco acabou não sendo utilizado.
Vamos voltar para os logs de transação e para os conceitos teóricos que nos interessam
neste momento. É importante salientar que os SGBDs possuemvárias outras informações
em seus arquivos de log de transação, mas vamos facilitar sua vida e a nossa em prol do
aprendizado e dos assuntos relevantes para concursos. Vejamos uma lista simplificada de
possíveis entradas no arquivo de log:
• [start_transaction, T]
• [write_item, T, X, old-value, new-value]
• [read_item, T, X]
• [commit, T]
• [abort, T]
As entradas acima representam as operações que as transações podem sofrer ao longo da
sua execução. Quando uma transação (T1) começa a ser executada, um registro contendo
“[start_transaction, T1]” será armazenado no arquivo de log de redo.
Utilizando as informações contidas no arquivo de log podemos executar algumas operações
sobre o banco de dados. A operação de UNDO ou desfazer, que é similar ao Rollback, mas
aplicada a uma única operação. E a operação de REDO ou refazer que especifica que certas
operações de uma transação devem ser refeitas para garantir que todas as operações de
uma transação efetivada (commited) foram aplicadas com sucesso ao banco de dados.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
12
124
Ambas as transações são consideradas
idempotentes, ou seja, se aplicadas várias vezes
produzem o mesmo efeito de serem executadas
apenas uma vez. O exemplo do UNDO é bem claro
neste ponto, se quisermos atribuir um novo valor a
coluna salário de um determinado funcionário. O
funcionário receberá 20 mil reais ao invés de 10 mil.
Contudo, durante a execução da transação que faria a
alteração, ocorreu uma falha no sistema de banco de
dados. Vamos então voltar o salário do funcionário
para seu valor antigo, ou seja, 10 mil. Não importa se
o valor atual seja igual ao valor final proposto pela
transação, ao aplicarmos a operação de UNDO várias vezes seguidas teremos como
resultado o valor antigo.
A outra situação é o commit da transação ter sido incluído no arquivo de log, mas a mudança
de salário de 10 para 20 mil não tenha sido efetivada. Neste caso, temos que reaplicar a
operação sobre base de dados. Mais uma vez, não importa quantas vezes efetuarmos a
operação de REDO para ajustar o salário, sempre chegaremos ao mesmo valor de 20 mil.
Isso é a característica denominada idempotência!
Vejamos mais uma questão sobre transações:
5. Ano: 2012 Orgão: EBSERH Cargo: Analista de TI – Banco de dados Q. 39
Em relação aos conceitos de transações, assinale a alternativa correta.
(A) Uma transação é considerada como terminada, somente se tiver sido confirmada
(commit).
(B) As transações acessam os dados, usando duas operações: read e write.
(C) Quando uma transação tiver sido confirmada (commit), podemos desfazer seus
efeitos, abortando-a.
(D) A propriedade ATOMICIDADE diz que depois que uma transação for completada
com sucesso, as mudanças persistem, ou seja, são atômicas.
(E) A propriedade ISOLAMENTO diz que a execução de uma transação isolada,
preserva a consistência do banco de dados.
Comentários: Vamos analisar cada uma das alternativas acima.
Vimos que a máquina de estados de uma transação pode chegar ao estado final pelo
caminho feliz, onde todas as operações são executadas com sucesso e a transação
pode ser efetivada. Contudo, caso a transação falhe por algum motivo, é possível que
a operação de rollback seja executada, levando ao término da transação sem a
execução do commit.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
13
124
De forma simples, como observamos na máquina de estado de uma transação, os
dados são acessados por meio de operações de leitura ou escrita. Sendo assim, a
alternativa B é a nossa resposta.
Após uma transação ter sido confirmada não é possível desfazer seus efeitos por meio
de operações de rollback. Existe uma forma de restaurar o seu banco e dados para um
determinado momento do tempo, mas isso é feito por meio dos arquivos de backup e
usando os dados armazenados nos arquivos de log.
A definição presente na alternativa D confunde a característica de DURABILIDADE
com ATOMICIDADE.
A alternativa E apresenta o conceito de CONSISTÊNCIA misturado com o de
ISOLAMENTO.
Gabarito: B
PONTO DE EFETIVAÇÃO
Uma transação T alcança seu ponto de efetivação (commit point) quando:
1. Todas as suas operações que acessam o banco de dados foram
executadas com sucesso e;
2. O efeito de todas elas estiverem gravadas no log.
Após o ponto de efetivação, a transação é dita efetivada e seu efeito será gravado de modo
permanente no banco de dados.
Se tivermos uma falha, todo registro de transação com [start transaction, T] e sem [commit,
T] deve ser revertido. Contudo, se tivermos o registro de [commit, T] a efetivação deve ser
garantida. O registro do commit no log caracteriza o ponto de efetivação, nele todas as
operações que acessam o banco de dados foram executadas com sucesso e o efeito de
todas as operações da transação já foi gravado no log.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
14
124
Outro conceito relevante é o checkpoint. Escritos no log
periodicamente quando o sistema grava no disco todas as
operações de escrita de transações efetivadas. O gerenciamento
de recuperação do SGBD deve decidir quais os intervalos em que
devem ocorrer checkpoints. Geralmente as opções são definir uma
unidade de tempo ou um número de transações efetivadas após o
último checkpoint.
Quando o SGBD realiza a operação de checkpoint ele basicamente: suspende
temporariamente a execução de transações, força a escrita de todas as operações de
modificação das transações efetivadas do buffer de memória no disco, escreve um registro
[checkpoint] no log, força a escrita do log no disco e finalmente volta à execução das
transações.
O registro de checkpoint pode conter algumas informações adicionais como a lista dos
identificadores das transações ativas e os endereços do primeiro e do último registro no log,
para cada uma das transações.
PLANO DE EXECUÇÃO
A ordem de execução das operações de transações distintas
executando concorrentemente de forma intercalada é conhecida
como plano de execução ou escalonamento. Um
escalonamento S de ‘n’ transações T1, T2, ..., Tn é um
ordenamento das operações dessas transações, sujeito à
restrição de que para cada transação Ti em S, as operações de Ti
em S devem aparecer na mesma ordem que ocorrem em Ti. Ou
seja, de uma forma mais simples: a ordem das operações da
transação deve ser respeita no escalonamento.
Observe, entretanto, que operações de duas transações Tj e Tk poderão ser intercaladas
com operações de Ti em S. Agora vamos entender o que deve aparecer na descrição de
um plano de execução. O plano deve nos ajudar a entender se existe uma restrição de
controle de concorrência, por exemplo, se o isolamento é respeitado.
Para fins de restauração e controle de concorrência estamos interessados principalmente
nas operações de: ler_item(r) e escrever_item(w), commit(c) e abort(a). Principalmente
queremos entender os acontecimentos quando operações de diferentes transações entram
em conflito.
Duas operações são ditas em conflito se elas satisfazem todas as três condições
seguintes:
1. Pertencerem a transações diferentes
2. Acessarem o mesmo item X
3. Pelo menos uma das operações sobre o item X ser um escrever_item(X).
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
126511815
124
Com base no conhecimento que vimos até aqui podemos definir o conceito de plano
completo. A ideia é montar uma sequência lógica para todas as transações dentro de um
determinado plano que faça algumas restrições sobre a execução das operações e seus
resultados. Um plano S, com n transações T1, T2, ... ,Tn é chamado um plano completo se
forem garantidas as seguintes condições:
1. As operações em S são exatamente as operações de T1, T2, ..., Tn, tendo
um commit ou um abort como última operação de cada transação no
plano. (condição de encerramento!)
2. Para quaisquer pares de operações da mesma operação Ti, sua ordem
de aparecimento em S será a mesma de Ti. (condição de ordenação!)
3. Para quaisquer duas operações conflitantes, uma das duas precisa
aparecer antes da outra no plano. (condição de conflito!)
A condição três permite que duas operações não conflitantes apareçam no plano sem definir
qual deva aparecer primeiro, levando assim, à definição de ordenação parcial das
operações das n transações. Perceba que um plano completo vai simplesmente garantir
que todas as transações do plano irão terminar e que a ordem das operações de cada
transação será mantida. Por fim, vai garantir que, se não tivermos conflitos entre as
transações a intercalação das operações entre as transações não importa para o resultado
(lembre-se da regra 2, a ordem das operações intra transação deve ser mantida SEMPRE).
Em alguns planos é fácil a restauração de transações, enquanto em outros, o processo pode
ser muito complicado. Portanto, é importante caracterizar os tipos de planos nos quais a
restauração é possível, bem como aqueles para os quais a restauração é relativamente
simples. Essas caracterizações, na realidade não fornecem um algoritmo de restauração,
apenas tentam caracterizar teoricamente os diferentes tipos de planos.
Um plano considerado restaurável é aquele no qual, para cada par de transações Ti e Tj,
tal que Tj leia itens de dados previamente escritos por Ti, a operação de efetivação de Ti
apareça antes da operação de efetivação de Tj. Isso vai evitar que Ti sofra rollback depois
da efetivação de Tj. Lembre-se, o commit é igual a casamento, não tem mais volta depois
que você assinou o papel, a parada tá sacramentada. Veja a figura a seguir:
No plano restaurável a o
commit da transação T2
acontece depois do commit
da transação T1.
No plano não restaurável a
o commit da transação T2
acontece antes do commit
da transação T1.
Isso permite que, no casso
de falha, a transação T2
possa ser desfeita por um
rollback em cascata.
Isso F#$% a parada toda!!
Não tem como um banco
de dados reverter uma
operação commitada com
uma operação de rollback.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
16
124
Observem a figura acima, supondo que a transação T1 do plano restaurável falhe e que a
transação T2 ainda não estivesse sido efetivada, teríamos um caso conhecido como
reversão em cascata. Nele uma transação não efetivada tem de ser revertida porque leu
um item de outra transação que falhou.
É importante estabelecer planos livres de reversão em cascata. Uma possível solução é
fazer com que uma transação somente possa ler os itens que foram gravados por
transações efetivadas. Isso vai nos levar ao nível de isolamento read commited que
falaremos mais adiante.
SERIALIDADE (SERIALIZABILITY)
Os planos de execução são considerados seriais se as operações de cada transação são
executadas consecutivamente, sem intercalação das operações de outra transação.
Apenas uma transação está ativa por vez, isso limita a concorrência ou intercalação de
transações e são inaceitáveis na prática. Contudo não podemos simplesmente liberar geral,
e deixar que os planos sejam executados na ordem que bem entenderem. É imposto,
portanto, uma restrição ao plano, que ele seja serializável. Mas ... que danado é isso?
O conceito de serialidade de planos é usado para identificar quais planos são corretos
quando há intercalação das operações das transações na execução dos planos, ou seja,
as transações não são isoladas. A teoria da seriabilidade é uma das técnicas padrão para
discutir a corretude de algoritmos de controle de concorrência, tais como o protocolo de
bloqueio em duas fases e tem uma relação direta com a propriedade de isolamento.
Um exemplo clássico de uma execução não isolada é um sistema bancário, onde duas
transações tentam retirar os últimos R$ 100,00 de uma conta com o mesmo saldo. Se
ambas as transações lerem o saldo da conta antes de qualquer uma delas atualizar, ambas
irão determinar que há dinheiro suficiente para satisfazer aos pedidos, e ambas vão retirar
os últimos R$ 100,00. Claramente, isto é o resultado errado. Além disso, não é um resultado
serializável. Numa execução serial, apenas a primeira operação seria capaz de retirar os
últimos R$ 100,00. A segunda iria encontrar uma conta vazia.
Note que o isolamento é diferente de atomicidade. No exemplo, ambas as transações
executadas por completo, de modo que foram atómicas. No entanto, elas não foram
devidamente isoladas e, portanto, produziram um comportamento indesejável.
Se cada transação preserva a consistência, então qualquer execução serial (isto é,
sequência) de tais transações preserva consistência. Uma vez que cada execução
serializável é equivalente a uma execução serial, uma execução serializável das transações
irá preservar a consistência do banco de dados também. É a combinação de consistência
das transações e do isolamento que garante que, na execução de um conjunto de
operações, seja preservada a consistência do banco de dados.
O banco de dados normalmente define bloqueios em dados acessados por cada transação.
O efeito da configuração dos bloqueios é fazer com que a execução pareça ser em série.
Na verdade, internamente, o sistema está executando operações em paralelo, mas através
deste mecanismo de bloqueio do sistema dá a ilusão de que as operações estão executando
em série, uma após a outra.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
17
124
Um equívoco comum é que a serialização não é importante porque o sistema de banco de
dados irá manter a consistência através da aplicação de restrições de integridade. No
entanto, há muitas restrições de consistência que os sistemas de banco de dados não
podem impor.
Além disso, às vezes os usuários não dizem ao sistema de banco de dados para impor
certas restrições, porque elas degradam o desempenho. A última linha de defesa, portanto,
é o mecanismo de controle de concorrência em si que mantem a consistência e garante ao
sistema uma execução de forma serializável. Agora você entende a diferença entra plano
serial e serializável ... vejamos uma questão sobre o assunto:
6. Analista Legislativo (ALEGO)/Segurança da Informação/2019
Quando transações são executadas concorrentemente, de maneira intercalada, a
ordem de execução das operações das várias transações é conhecida como plano de
execução (ou histórico).
ELMASRI, R.; NAVATHE, S.B. Sistemas de Banco de Dados. Addison-Wesley, 2005.
O trecho apresentado define um plano (do inglês, schedule) em banco de dados.
Imagine que, em um plano S, para cada transação T participante, todas as operações
de T são executadas consecutivamente. Esse plano é chamado de
a) restrito (do inglês, strict).
b) serializável (do inglês, serializable).
c) serial (do inglês, serial).
d) não restrito (do inglês, nonstrict).
e) não serial (do inglês, nonserial).
Comentário: Um plano nada mais é do que a ordem de execução das operações de
diferentes transações. Quando as operaçõesdas transações do plano são
executadas sequencialmente (ou seja, uma após a outra de maneira consecutiva) o
plano é chamado de plano serial. Caso contrário, é um plano não serial. Vamos agora
analisar as alternativas:
a) Errada. Um plano restrito é aquele em que as transações não poderão ler nem
escrever em um item até que a última transação que escreveu nesse item seja
efetivada ou abortada.
b) Errada. Um plano S com n transações é dito serializável quando ele é equivalente
a um plano serial com as mesmas n transações.
c) Certa. Como dito, esse é o plano em que as transações executam suas atividades
de forma consecutiva.
d) Errada. Não existe o plano não restrito na classificação de Navathe.
e) Errada. Plano não serial é aquele em que as operações das transações são
executadas de forma intercalada no plano de execução.
Concluímos, assim, que o gabarito se encontra na alternativa C.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
==134dde==
18
124
Gabarito: C
EQUIVALÊNCIA DE PLANOS
Dois planos são chamados resultado equivalentes se produzirem o mesmo estado final
do banco de dados. Para dois planos serem equivalentes, as operações aplicadas a cada
item de dado afetado por eles devem aparecer na mesma ordem em ambos os planos.
Quando temos operações em conflito precisamos que a ordem de execução destas
operações seja a mesma nos dois planos de execução, isso nos leva a ideia de
equivalência de conflito.
Um plano de execução S com n transações é dito serializável se ele for equivalente a algum
plano serial com elas n transações. Dizer que um plano S não serial é serializável é o mesmo
que dizer que ele é correto.
Outro conceito que trata de equivalência é o da equivalência de visão. A ideia básica da
equivalência de visão é a de que, enquanto cada operação de leitura de uma transação
estiver lendo o resultado da mesma operação de gravação em ambos os planos, as
operações de gravação de cada transação precisam produzir os mesmos resultados. Vejam
a definição formal abaixo, suponha que Ri é uma operação de leitura e Wj uma operação de
escrita.
Diz que dois planos S e S’ são visão equivalente se:
• O conjunto de transações participantes em S e S’ seja o mesmo e que S e
S’ contenham as mesmas operações dessas transações.
• Para toda operação Ri(X) de Ti em S, se o valor X lido pela operação tiver
sido alterado por uma operação Wj(X) de Tj, a mesma condição deverá ser
garantida para o valor X lido pela operação Ri(X) de Ti em S’. (Toda leitura
ver o mesmo valor nos dois planos.)
• Se a operação Wk(Y) de Tk for a última operação a gravar o item Y em S,
então Wk(Y) de Tk também deverá ser a última operação a gravar Y em S’.
(A última escrita deve ser sempre a mesma.)
A abordagem adotada na maioria dos SGBDs comerciais é definir protocolos ou um conjunto
de regras que devem ser seguidos por todas as transações individualmente, ou impostos
por um subsistema de controle de concorrência do SGBD. Essas regras garantirão a
serialidade de todos os planos dos quais as transações participam.
Um exemplo de teste para verificar a existência de conflito serialidade é a utilização do grafo
de precedência. Nele uma seta será criada caso alguma das operações de T1 apareça no
plano antes de alguma operação conflitante de T2. Veja a figura abaixo:
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
19
124
Para a criação do gráfico de precedência devemos observar as operações de cada
transação que participa do plano de execução e rodar o seguinte algoritmo:
1. Para cada transação Ti participante do plano S, criar um nó rotulado Ti no
grafo de precedência.
2. Para cada caso em S em que Tj executar um ler_item(X) depois que uma
Ti executar um escrever_item(X), criar uma seta Ti → Tj no grafo de
precedência.
3. Para cada caso em S em que Tj executar um escrever_item(X) depois que
uma Ti executar um ler_item(X), criar uma seta Ti → Tj no grafo de
precedência.
4. Para cada caso em S em que Tj executar um escrever_item(X) depois que
uma Ti executar um escrever_item(X), criar uma seta Ti → Tj no grafo de
precedência.
5. O plano S será serializável se, o grafo de precedência não contiver ciclos.
Vejam a figura a seguir a construção de diferentes planos de execução a partir das mesmas
transações. Vejam que alguns planos podem ser serializáveis e outros não.
Não serializável
Serializável
Serializável
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
20
124
SUPORTE A TRANSAÇÃO EM SQL
Uma transaction é um mecanismo que podemos utilizar para manter a integridade e a
consistência dos dados. SQL nos ajuda a gerenciar transações. O SQL/ANSI padrão definiu
transações logo no início da criação do modelo e vem aprimorando o conceito durante
iterações subsequentes. De acordo com a norma, uma transação é iniciada pelo SGBDR, e
continua até que uma instrução de COMMIT ou ROLLBACK é emitida.
Os detalhes foram deixados para o SGBD implementar. Os comandos de gerenciamento
de transações do SQL padrão estão listados na tabela abaixo:
Comando Descrição
START (BEGIN)
TRANSACTION
Inicializa uma transação SQL e seta as suas características.
SET
TRANSACTION
Determina as propriedades da próxima transação SQL para o SQL
Agent. São três os parâmetros: área de diagnóstico, nível de isolamento
e modos de acesso (read/write).
SET
CONSTRAINTS
Se a transação SQL estiver executando, estabelece o modo de
restrições para a transação SQL na sessão corrente. Se não existe
nenhuma transação em andamento na sessão, determina ao SQL Agent
o modo de execução para a próxima transação.
SAVEPOINT Estabelece um savepoint, ponto intermediário da transação para o qual
o rollback deve retornar em caso de falha.
RELEASE
SAVEPOINT
Destrói um savepoint
COMMIT Termina a transação SQL corrente com um commit
ROLLBACK Termina a transação corrente com um rollback, ou desfaz todas as
modificações até o último savepoint.
O padrão SQL utiliza de forma implícita o START TRANSACTION, com uma instrução de
COMMIT explícita, nos casos em que todas as unidades lógicas de trabalho de uma
transação são concluídas com sucesso. Podemos ainda ter a instrução de ROLLBACK
quando mudanças ainda não efetivadas precisam ser desfeitas devido a alguma exceção
ou erro.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
21
124
As implementações dos SGBDs para controle de transação são um pouco diferentes para
cada um deles, contundo a análise detalhada destes comandos foge do escopo deste curso.
Vamos passar agora para uma rápida explicação dos níveis de isolamento de transações.
Mais detalhes sobre esse assunto serão vistos nas seções específicas sobre controle de
concorrência e nas aulas de SGBDs específicos (caso algum aparece no seu edital, claro!).
Quando executamos várias transações de forma concorrente sobre o mesmo banco de
dados podemos limitar o acesso as informações para impedir que elas sejam vistas por uma
transação no momento que estão sendo usadas por outra transação. São quatro os níveis
de isolamento definidos pelo SQL ANSI: READ UNCOMMITED, READ COMMITED,
REPEATABLE READ e SERIALAZABLE.
No primeiro caso READ UNCOMMITED é permito que uma transação TY leia dados que
ainda não sofreram o COMMIT de outratransação TX que ainda está em execução. Isso
acaba possibilitando a existência do problema de leitura suja ou dirty read. Esse problema
ocorre se a transação TX sofrer ROLLBACK. Neste caso, qualquer outra transação que tiver
feito uma consulta sobre o dado modificado por TX terá feito uma leitura suja.
Para resolver esse problema surge o próximo nível de isolamento conhecido como READ
COMMITED. Neste caso, uma transação TY só pode ler os dados modificados pela
transação TX após o COMMIT. Agora, ainda permanecemos com outro problema
denominado leitura não repetível. Imagine que TY precisa ler os dados modificados por TX
duas vezes durante sua execução. Na primeira leitura TY ler os dados modificados por TX,
contudo, antes da segunda leitura, outra transação TZ faz uma nova modificação sobre os
dados. Veja que TY faz duas leituras sobre o mesmo dado durante a transação e eles
possuem valores distintos.
A questão aqui é, uma transação TY consegue ler apenas dados efetivados. Contudo, se
um determinado item for modificado várias vezes ao longo do tempo por outras transações,
todas elas devidamente concluídas com sucesso, a transação lerá valores diferentes! O que
é estranho, dado que ela não fez modificações sobre os dados. Essas leituras repetidas
com valores diferentes podem ser evitadas. Como? Vamos para o próximo nível de
isolamento.
A solução para o problema da leitura não repetível está no REPEATABLE READ. Neste
caso a transação TY vai ler os mesmos dados, pois não será permito a transação TZ fazer
modificações sobre eles durante a execução de TY. Agora contamos com um último
problema, qual seja, a possibilidade da existência de registros fantasmas. Neste caso, TY
faz duas leituras sobre um conjunto de dados ou tuplas de uma relação que satisfação a
uma condição descrita na cláusula WHERE. Suponha que entre a primeira e a segunda
leitura seja inserido um registro que também satisfaz a essa condição de busca. Esse
registro é considerado um fantasma!
Para resolver todos esses problemas, temos o último nível de isolamento conhecido como
SERIALAZABLE. A ideia é executar concorrentemente apenas as transações que
produzam o mesmo resultado caso fossem executadas em série. A tabela abaixo mostra os
problemas e os níveis de isolamento possíveis.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
22
124
Figura 3 - Níveis de isolamento x tipo de violação
Além do nível de isolamento é possível determinarmos o modo de acesso de uma transação
que pode ser READ ONLY ou READ WRITE e o tamanho da área de diagnóstico que
especifica um valor inteiro n, indicando o número de posições que podem ser manipuladas
simultaneamente na área de diagnóstico. Essas condições fornecem informações sobre as
condições de execução (erros e exceções), ao usuário ou ao programa, para a maior parte
das declarações/comandos SQL executados recentemente.
Para executar uma transação usando SQL podemos utilizar a seguinte sintaxe:
EXEC SQL WHENEVER SQLERROR GOTO UNDO;
EXEC SQL SET TRANSATION
READ WRITE
DIAGNOSTIC SIZE 5
ISOLATION LEVEL SERIALAZABLE
EXEC SQL INSERT INTO EMPREGADO (PNOME, UNOME, SSN, DNO, SALARIO)
VALUES (´Thiago´, ´Cavalcanti´, 000457878, 2, 12000);
EXEC SQL UPDATE EMPREGADO
SET SALARIO = SALARIO *1,1 WHERE DNO =2;
EXEC COMMIT;
GOTO THE_END;
UNDO: EXEC SQL ROLLBACK;
THE_END: ...;
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
23
124
CONTROLE DE CONCORRÊNCIA
A IMPORTÂNCIA DO CONTROLE DE CONCORRÊNCIA
De um modo geral, os sistemas de
aplicação atuais, e, especialmente, aqueles
que funcionam dentro do ambiente de
banco de dados, supõe que muitas
pessoas que utilizam estes sistemas e
necessitem de acesso simultâneo aos
dados. Um hardware moderno e sistemas
de software são certamente capazes de
suportar essa quantidade de acessos aos
dados compartilhados.
Um exemplo muito comum dessa
capacidade está em reservas de
passagens aéreas, onde vários
funcionários diferentes reservam bilhetes, bem como os clientes na Web, todos podem ter
solicitações simultâneas de assentos no mesmo voo. Outro exemplo é um aplicativo de
inventário ou estoque de uma indústria em que vários funcionários procuram para atualizar
simultaneamente o mesmo item no estoque.
Figura 4 - Vários usuários da aplicação podem ter acesso a base de dados de forma controlada.
Quando o acesso simultâneo envolve apenas a simples recuperação de dados, ou seja, a
leitura, não há nenhum problema. Mas quando o acesso simultâneo requer a modificação
de dados, os dois ou mais usuários que tentam atualizar os dados, simultaneamente, têm
um problema desagradável. Cada transação pode interferir umas nas outras, o que não
aconteceria se eles estivessem apenas realizando consultas de dados.
Este é certamente o caso das reservas de passagens aéreas e do exemplo de inventário,
uma vez que a venda de assentos em voos e a manutenção de itens no estoque exigem
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
24
124
que o número de assentos ou os itens de estoque sejam atualizados. Isto é, muitos acessos
a base de dados envolvem alterações. O resultado pode ser imprecisão nos dados
armazenados no banco de dados! E isso, é claro, não é desejado! O que fazer? chamar o
Chapolin Colorado? Não! Chamar o controle de concorrência! Como controlar esse tipo de
problema é o que veremos agora.
POR QUE O CONTROLE DE CONCORRÊNCIA?
De uma forma mais sistemática existem alguns problemas que acontecem quando
transações simultâneas resolvem fazer alterações sobre o mesmo conjunto de dados. O
primeiro problema refere-se à atualização perdida. Se uma transação modifica um dado,
e, antes de concluir, outra transação atualiza o mesmo dado, essa mudança fica perdida no
tempo e no espaço. Para evitar problemas deste tipo os SGBDs implementam um
subsistema de controle de concorrência.
Concorrência é a propriedade de uma transação poder ser executada em paralelo com
outras transações. Com a execução de várias transações ao mesmo tempo, o processador
pode ser compartilhado entre elas, melhorando a eficiência global do computador e do
sistema, dado que uma maior quantidade de trabalho é executada em menos tempo.
É necessário que o sistema monitorize a interação entre transações concorrentes, de modo
a evitar que elas destruam a consistência do banco de dados e mantenham o
isolamento das transações. Para isso fazemos uso de técnicas ou protocolos, por
exemplo, técnica de bloqueio, timestamp e protocolos baseados em gráficos. Vamos falar
um pouco sobre cada um deles.
TÉCNICAS DE BLOQUEIO
Quando começamos a estudar as técnicas de bloqueio a primeira definição que temos que
ter em mente está relacionada ao LOCK. Ele é uma variável associada a um item de dados
no banco de dados que descreve o status desse item com respeito a possíveis operações
a serem aplicadas sobre o item de dados. Os autores classificam os LOCKs em dois
principais tipo: LOCK binário e LOCK múltiplo.
O lock binário possui dois estados de valores possíveis para cada item de dados: locked
(1) e unlocked (2). Um valor de lock distinto é associado a cada item do banco de dados
denotado como lock(x) para o item x. As operações incluídas nas transações, lock_item e
unlock_item, são implementadas como operações indivisíveis. Um gerenciador é mantido
pelo SGBD para registrar e controlar o acesso a locks. Um registro de lock descrito como
<nome-do-item, LOCK> é inserido natabela de locks que mantém o controle sobre esses
registros.
Para o conjunto de operações algumas regras podem ser aplicadas. Uma transação T tem
que executar uma operação lock_item(x) antes de qualquer read_item ou write_item ser
executado por T. Uma transação T tem que executar a operação unlock_item(x) após todos
os comandos de read/write serem completados em T.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
25
124
Uma transação não pode executar outra operação lock_item(x) se já tem um lock sobre x.
Uma transação T, também, não pode executar um unlock_item(x) a menos que tenha um
lock sobre x. Apenas uma transação pode ter um lock num dado item, seja para efetuar
operações de leitura ou escrita. Isso é ruim pois o paralelismo de operações de leitura
não é um problema grave e pode aumentar a capacidade de processamento do SGBD. Para
resolver esse problema surge o LOCK MÚLTIPLO.
O lock múltiplo apresenta três operações indivisíveis: read_lock(x), write_lock(x) e
unlock(x). Conhecidos também como bloqueio compartilhado e exclusivo, o read_lock e
o write_lock, fazem o papel de efetivar bloqueio sobre os itens de dados que participarão
de uma transação. Um registro do lock pode ser feito com as seguintes informações <nome-
do-item, LOCK, (número-de-leituras)>. Veja que o número de leituras é opcional.
Da mesma forma que o bloqueio binário, o LOCK MÚLTIPLO também apresenta um
conjunto de regras. Muitas vezes, elas nos parecem um pouco obvias, mas ajudam a
compreender o funcionamento. Vamos a elas:
• Uma transação T tem que executar uma operação read_lock(x) ou
write_lock(x) antes de qualquer read_item(x) em T.
• Uma transação T tem que executar uma operação write_lock(x) antes de
qualquer write_item(x) em T.
• Uma transação tem que executar uma operação unlock(x) após todas as
operações read_item(x) e write_item(x) completadas em T.
Até aqui as operações são bem lógicas, para ler precisamos do bloqueio de
escrita ou leitura, para escrever precisamos de um lock de escrita. E depois de
usar o item temos que desbloqueá-los. Espero que você tenha entendido isso.
Vamos em frente ...
• Uma transação T não executará um read_lock(x) se já tem um lock de
leitura (compartilhado) ou um lock de escrita (exclusivo) sobre x, este item
precisa ter seu lock relaxado, passando de write para read_lock para a
execução do read_lock(x) por T. (decremento de lock)
LOCK BINÁRIO
LOCK UNLOCK
LOCK MÚLTIPLO
READ_LOCK
(COMPARTILHADO)
WRITE_LOCK
(EXCLUSIVO)
UNLOCK
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
26
124
• Uma transação T não executará outro write_lock(x) se já tem um lock (write)
exclusivo ou um lock (read) compartilhado em x, agora podemos
incrementar o bloqueio se a transação já tiver o lock de leitura e quiser tomar
para si o lock de escrita. É necessário que se verifique se nenhuma outra
transação está com o lock de leitura antes de efetuar o incremento de lock
sobre o item de dados. (incremento de lock)
• Uma transação T não executará um unlock(x) a menos que já tenha um lock
compartilhado ou exclusivo em x.
Resumindo os conceitos de incremento, decremento e bloqueios exclusivos. O incremento
de lock acontece quando uma transação após ter um read_lock(x) e sendo a única que
detém x, pode posteriormente executar um write_lock(x) sobre x. O decremento de lock,
por sua vez, é feito após ter um lock exclusivo sobre um item x, uma transação T pode
decrementar o lock, executando um read_lock(x).
Os bloqueios exclusivos levam em consideração se uma transação T possui um bloqueio
exclusivo em algum objeto, então nenhuma transação distinta T’ pode fazer bloqueio
daquele objeto até que T libere o seu bloqueio.
Locks binários ou múltiplos não garantem a serializabilidade de escalonamentos nos
quais as transações participam. É necessário um protocolo adicional que contempla o
posicionamento de locks e unlocks em cada transação, conhecidos como protocolo de
bloqueio.
Vamos fazer uma questão sobre esse assunto:
7. Assistente de Informática (CM Tatuí)/2019
Nos sistemas gerenciadores de bancos de dados, há um módulo de gerenciamento de
transações, responsável pelo controle dos bloqueios sobre itens de dados.
Considerando tal gerenciamento, a implementação do tipo de bloqueio que permite a
uma transação ler e escrever sobre um item de dados consiste no bloqueio do tipo
a) exclusivo.
b) individual.
c) permanente.
d) intrínseco.
e) compartilhado.
Comentário: Existem dois principais tipos de bloqueio que visam resolver o problema
da concorrência e garantir a integridade dos dados:
• Bloqueio compartilhado: é utilizado para leitura dos dados. Bloqueios
compartilhados permitem que mais de uma transação leia o mesmo dado. Se existir
um bloqueio compartilhado ativo, um bloqueio exclusivo não pode ser obtido, mas
outras transações podem solicitar bloqueios compartilhados na mesma informação,
para fins de leitura;
• Bloqueio exclusivo: é utilizado para escrita dos dados. Bloqueios
exclusivos permitem que apenas uma única transação leia e
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
27
124
modifique um dado. Se existir um bloqueio exclusivo ativo, outras transações não
podem obter nem um bloqueio compartilhado nem um bloqueio exclusivo no mesmo
dado.
A única alternativa que traz o tipo de bloqueio que permite a leitura e escrita de um
item de dados é a letra A. O bloqueio compartilhado trazido pela letra e) permite apenas
a leitura do item. As demais alternativas não trazem tipos de bloqueios existentes no
contexto de banco de dados. Concluímos, assim, que o gabarito é letra A.
Gabarito: A
PROTOCOLO DE BLOQUEIO EM DUAS FASES
O protocolo de bloqueio em duas fases está baseado em duas etapas. A fase de expansão
onde uma transação pode obter bloqueio, mas não pode liberar nenhum. E a fase de
encolhimento nela uma transação pode liberar bloqueios, mas não consegue obter nenhum
bloqueio novo. O ponto que caracteriza o fim da fase de expansão é denominado ponto de
bloqueio. Veja a figura abaixo:
Se não usarmos o bloqueio, ou desbloqueio, dos itens de dados, tão logo seja possível,
após sua leitura ou escrita, poderemos chegar a resultados inconsistentes. Por outro lado,
se não desbloquearmos um item de dados antes de solicitarmos um bloqueio a outro item
de dados, o deadlock poderá ocorrer. Os protocolos de bloqueio restringem o número de
escalas de execução possíveis.
Existe um conjunto de variações do protocolo visto acima. Além do básico, visto na figura,
temos os protocolos conservador ou estático, estrito ou severo e rigoroso. O protocolo
conservador ou estático bloqueia todos os itens que acessará, antes de iniciar a execução
da transação.
Ele só bloqueia quando todos os dados estão disponíveis. No protocolo estrito ou severo,
considerado o mais popular, não se libera os locks de escrita até o commit ou abort. Por fim
temos o protocolo rigoroso que não libera os locks de escrita e leitura até o commit ou abort,
e é mais fácil de implementar do que o estrito. Protocolo de bloqueio em duas fases rigoroso,
que exige que todos os bloqueios sejam mantidos até que a transação seja efetivada.
Vejam de forma gráfica como cada um dos protocolos se comporta junto aos locks durante
um intervalo de tempo. A sua utilização pode causar problemas de daedlock ou starvation.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dadosp/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
28
124
Figura 5 - Perceba que existe uma ordem alfabética: Básico, Conservador, Estrito e Rigoroso.
Deadlock é uma situação em que duas ou mais transações estão em estado
simultâneo de espera, cada uma aguardando que uma das demais libere um
bloqueio para ela poder prosseguir. Vejam a figura a seguir que mostra um
exemplo gráfico do caso.
Figura 6 - Exemplo de Deadlock com 3 transações (A,B,C) e 3 itens de dados (R,S,T)
Existem alguns protocolos que atuam na prevenção do Deadlock. O conservador, nele, se
algum dos itens não pode ser bloqueado, nenhum será bloqueado. E o ordenado que tenta
impor uma ordenação em todos os itens e os locks só podem ocorrer segundo esta ordem.
Os principais métodos para solucionar o impasse podem resultar na repetição da transação.
Quando uma transação solicita um bloqueio de um registro que já está bloqueado por outra
transação, então um dos dois procedimentos é seguido:
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
29
124
Wait-die (esperar-morer) - se a transação que solicitou o bloqueio é a mais
antiga, pode aguardar. Se for a mais nova, sofre rollback e recomeça mais tarde
com mesmo timestamping.
Wound-wait (ferir-esperar) – se uma transação mais nova solicitar o bloqueio e
o item estiver bloqueado por uma transação mais antiga, a transação mais nova
pode aguardar. Se for a mais antiga que estiver solicitando, então ela interrompe
a mais nova, a qual sofre rollback e recomeça mais tarde com mesmo
timestamping.
Duas considerações importantes, a primeira refere-se ao fato das transações que são
abortadas retornam posteriormente com mesmo timestamp. A segunda que você pode
perceber que a primeira palavra de cada um dos métodos trata do que vai acontecer ou qual
a ação tomada pela transação mais antiga e a palavra seguinte trata da ação referente a
transação mais nova.
A ação será tomada sempre que uma transação solicitar o bloqueio de um item de dados.
Essa é uma técnica de prevenção de impasses. Contudo, nem sempre é possível prever se
algum conjunto de transações do banco de dados está em deadlock. Deve-se então
executar ações que possam detectar a existência do problema no banco.
Uma possibilidade é executar a verificação sempre que uma solicitação de bloqueio gere
uma ação de espera. Permite a execução imediata de um impasse, porém tem um custo de
processamento muito alto, acarretando um overhead sobre o banco de dados.
Outra possibilidade seria realizar o procedimento em intervalos periódicos. Observamos de
cara que isso reduz o overhead, contudo alguns deadlocks são verificados tardiamente. Não
existe uma solução perfeita. Porém, alguns cuidados durante a construção dos sistemas
podem reduzir substancialmente o risco de impasses.
É importante criar sistemas com transações curtas e com uma pequena interferência entre
as transações. O ideal é que cada transação solicite o lock de poucos itens de dados. Esse
cenário cria uma carga leve com baixo risco de problemas de deadlock.
Ao detectar um deadlock devemos tomar alguma ação para quebrá-lo. A quebra de
deadlock consiste na escolha de uma das transações para forçá-la a um rollback. A escolha
pode ser feita das seguintes formas:
1. A transação que foi iniciada mais recentemente,
2. A que tiver feito o menor número de bloqueios ou
3.A que tiver feito o menor número de atualizações.
Terminamos aqui nossos comentários sobre deadlock, vamos agora falar um pouco sobre
livelock e starvation.
No livelock a transação não pode prosseguir por um período indefinido enquanto
outras transações continuam normalmente, esse fato ocorre por conta de um
esquema injusto de espera por locks. Podemos resolver o problema de duas
formas: associar um protocolo onde o primeiro a chegar será o primeiro a ser
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
30
124
servido (first-come-first-serve) ou criar um esquema de incremento de prioridade
baseado no timestamp da transação.
Starvation é um problema similar ao livelock, ocorre se o algoritmo seleciona a
mesma transação como vítima repetidamente, causando abort repetidos e nunca
acabando a execução. Os protocolos wait-die e wound-wait apresentados evitam
starvation.
Um exemplo mais fácil de Livelock seria duas pessoas que se encontram frente a frente
em um corredor, e as duas se afastam para o lado para deixar o outro passar. Eles acabam
se movendo de um lado para o outro sem fazer nenhum progresso, pois se movem da
mesma maneira no momento. Aqui, eles nunca se cruzam.
Figura 7 - Lógica por trás do livelock.
Starvation é uma situação em que todas a transações de baixa prioridade são impedidos
de evoluir enquanto as transações de alta prioridade prosseguem. Em qualquer sistema, as
transações de alta/baixa prioridades devem ser executadas. Assim, é necessária alguma
política para decidir quem recebe os itens para executar as transações. A figura abaixo
apresenta a lógica de starvation aplicada a processo de sistemas operacionais, a mesma
lógica pode ser aplicada a transações.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
31
124
PROTOCOLO COM BASE EM GRAFOS
Esse protocolo exige conhecimento anterior sobre a ordem na qual os itens de banco de
dados são acessados. Um exemplo deste protocolo onde seria permitida somente a
instrução de bloqueio lock-X. Cada transação Ti, pode bloquear um item de dado no máximo
uma vez e deve observar as seguintes regras:
1. O primeiro bloqueio feito por Ti pode ser sobre qualquer dado
2. Subsequentemente, um item de dado Q pode ser bloqueado por Ti somente
se os pais de Q estivem bloqueados por Ti
3. Itens de dados podem ser desbloqueados a qualquer momento
4. Um item de dado foi bloqueado e desbloqueado por Ti não pode ser
“rebloqueado” por Ti.
Vejam um exemplo de um gráfico gerado por um conjunto de transações e ao lado um plano
de execução para as transações envolvidas.
Figura 8 - Grafo de banco de dados estruturado em árvores.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
32
124
Figura 9 - Schedule serializável sob o protocolo de árvore.
ORDENAÇÃO POR TIMESTAMP
A cada transação Ti do sistema associamos um único
timestamp fixo, denotado por TS(Ti). Esse é criado pelo
SBD antes que a transação Ti inicie sua execução. Se uma
transação Ti recebeu o TS(Ti) e uma nova transação Tj
entra no sistema, então TS(Ti) < TS(Tj).
Existem duas formas de implementar. Usar a hora do
relógio do sistema (clock) como timestamp, isto é, o
timestamp de uma transação é igual à hora em que a
transação entra no sistema. Usar um contador lógico que
é incrementado sempre que se usa um novo timestamp,
isto é, o timestamp da transação é igual ao valor do
contador quando a transação aparece no sistema.
O protocolo que utiliza timestamp pode seguir alguns passos que dependem de tipo de
bloqueio solicitado pela transação. Cada item Q tem um timestamp de escrita e outro de
leitura denotado por W-timestamp(Q) e R-timestamp(Q).
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br1265118
33
124
1. Suponha que a transação Ti emita uma instrução read(Q)
a. Se TS(Ti) < W-timestamp(Q), então Ti precisa ler um valor de Q que já foi
sobreposto. Assim, a operação read é rejeitada e Ti é desfeita. Isso significa
que a transação está tentando ler um dado que foi modificado por outra
transação ou está bloqueado para leitura.
b. Se TS(Ti) >= W-timestamp(Q), então a operação read é executada e R-
timestamp(Q) recebe o maior valor entre R-timestamp(Q) e TS(Ti)
2. Suponha que a transação Ti emita uma write(Q)
a. Se TS(Ti) < R-timestamp(Q), então o valor de Q que Ti está produzindo foi
necessário antes e o sistema assumiu que aquele valor nunca seria produzido.
Logo, a operação write é rejeitada e Ti é desfeita.
b. Se TS(Ti) < W-timestamp(Q), então Ti está tentando escrever um valor obsoleto
em Q. Logo, essa operação write é rejeitada e Ti é desfeita.
c. De outro modo, a operação write é executada e o W-timestamp(Q) é registrada
com o valor de TS(Ti).
A ideia é que utilizando esse protocolo a transação não vai ler um item se outra transação
com um timestamp posterior estiver marcado o item. Neste caso ela precisa ser desfeita e
reiniciar com um novo TS. A mesma ideia vale para operação de escrita, se a transação for
bloquear um item para escrita o TS da transação precisa ser maior do que o TS de leitura e
de escrita do item.
Vejamos uma questão sobre esse assunto:
8. FAURGS - Analista de Sistemas (TJ RS)/Classe P/2018
Um rótulo de tempo é um identificador exclusivo para cada transação, gerado pelo
sistema. Os valores de rótulos de tempo são gerados na mesma ordem que os tempos
de início e fim das transações. Qual é o protocolo de controle de concorrência que
utiliza ordenação por rótulo de tempo para garantir a serialização das transações?
a) Bloqueio simples.
b) Serialização.
c) Timestamp.
d) Bloqueio de duas fases.
e) Multiversão.
Comentário: O protocolo baseado em timestamp utiliza um identificador único e
exclusivo criado pelo SGBD para identificar uma transação, de acordo com a ordem
que ela foi submetida ao sistema.
Esse identificador pode ser a data e hora do sistema no momento exato em que a
transação foi submetida ("18/12/2020 10:45:03 GMT-3", por exemplo). Ou, ainda, pode
ser apenas um contador que é incrementado automaticamente pelo SGBD sempre que
uma nova transação chega. Exemplo: a primeira transação recebe o timestamp 1, a
próxima recebe o 2 e assim por diante.
Se uma transação A chegou ao sistema no tempo 1 e uma transação B chegou no
tempo 2, a transação A será executada primeiro porque ela é mais "antiga" e foi
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
34
124
submetida antes. Dessa forma, o protocolo baseado em timestamp utiliza a ordem em
que as transações chegaram ao SGBD para garantir a serialização.
Concluímos, assim, que o gabarito é letra C.
Gabarito: C
Vamos agora tratar do contexto teórico de recuperação após falha.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
35
124
RECUPERAÇÃO APÓS FALHA
O termo recuperação ou restauração após falha está associado a trazer o sistema ou o
banco de dados de volta a um estado consistente. A falha pode estar associada a diversos
motivos: o computador ou servidor de banco de dados pode falhar, algum erro pode
acontecer durante o processamento de uma transação, uma condição de exceção foi
detectada, o protocolo de controle de concorrência impõe um rollback a uma transação,
uma falha no disco ou, ainda, problemas físicos ou catastróficos.
Todos esses problemas listados acima podem levar nosso sistema de banco de dados a
usar o processo de recuperação dos dados. Vamos agora tentar explicar como esse
processo acontece de fato. O modelo genérico apresentado funciona para a maioria dos
SGBDs comerciais.
Algoritmos de recuperação podem ser divididos em duas partes:
1. Ações tomadas durante o processamento normal da transação a fim de garantir
que haja informação suficiente para permitir a recuperação de falhas.
2. Ações tomadas logo após a falha, recuperando o conteúdo do banco de dados
para um estado que assegure sua consistência, atomicidade da transação e
durabilidade.
Após uma falha na execução de uma transação, o banco de dados deve ser restaurado para
um estado consistente imediatamente anterior a falha. O Sistema deve manter informações
sobre as atualizações do banco de dados armazenadas separadamente em um arquivo de
log.
CLASSIFICAÇÃO DAS FALHAS
As falhas podem ser subdivididas em falha de transação, que inclui os erros lógicos e erros
de sistemas, queda de sistema e falha em disco. Vamos examinar cada uma delas para
entender o seu significado.
Erro lógico: A transação não pode mais continuar com sua execução normal
devido a alguma condição interna, como entrada inadequada, um dado não
encontrado, overflow ou limite de recurso excedido.
Erro de sistema: O sistema entrou em estado inadequado (por exemplo,
deadlock, livelock, starvation), com isso, uma transação não pode continuar sua
execução normal. A transação pode ser reexecutada posteriormente.
Queda do sistema: Há algum mau funcionamento de hardware ou um bug no
software de banco de dados ou no sistema operacional que causa a perda do
conteúdo no armazenamento volátil e fez o processamento da transação parar. O
conteúdo de armazenamento não volátil permanece intato e não é corrompido.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
36
124
Falha de disco: Um bloco de disco perde seu conteúdo em função da quebra do
cabeçote ou da falha durante uma operação de transferência de dados. São
usadas para recuperação do sistema após a falha, as cópias dos dados em outros
discos ou backups de arquivos em meios terciários, como fitas.
ESTRUTURA DE ARMAZENAMENTO
Para começarmos a entender a estrutura padrão de armazenamento precisamos ter em
mente dois conceitos. O primeiro refere-se à volatilidade. O dado pode estar gravado na
memória principal, conhecida como volátil, nela a informação permanece apenas enquanto
o sistema estiver em execução. Outra possibilidade é o dado ser armazenado em um disco
rígido ou outro dispositivo não volátil. Neste caso o dado possui a propriedade da
durabilidade e não deve ser perdido.
Outro ponto importante é a possibilidade de usar mecanismos de redundância para garantir
a durabilidade da informação no caso de uma falha nos discos. Uma estrutura de RAID -
redundant array of independent disks – pode garantir essa propriedade por meio da
replicação da informação em diferentes discos.
Vamos agora focar nossa atenção no entendimento do processo de transferência de
informação da memória para o disco. Esse processo é de suma importância para a
recuperação. Observem a figura abaixo:
Vejam que existem na figura dois conjuntos de operações: read/write e input/output. O
primeiro par é responsável pela leitura dos dados da memória principal. Cada espaço da
memória é conhecido como bloco de buffer. O processador vai enviar um comando de
read(A) para ler a informação na memória principal.
Vejam que no exemplo o bloco de memória contendo o dado A ainda não está devidamente
armazenado na memória principal. Neste momento uma operação de entrada e saída é
inicializada. Os dados são encontrados num bloco físico do disco que é transferido para um
bloco de buffer.
A transferência de blocos entre a memória e o armazenamento de disco pode resultarem:
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
37
124
1. Conclusão bem-sucedida: A informação transferida chegou de forma segura a seu
destino.
2. Falha parcial: Uma falha ocorreu no meio da transferência e o bloco de destino contém
informação incorreta.
3. Falha total: A falha ocorreu muito cedo, de modo que o bloco de destino permanece
intacto.
As operações de input e output são responsáveis por enviar e trazer os dados do disco para
a memória principal. Sendo assim, o comando de Input(X) transfere o bloco físico X para a
memória principal, e Output(X) transfere o bloco de buffer X para o disco e troca-o, no disco,
pelo bloco físico apropriado.
O USO DOS ARQUIVOS DE LOG
Figura 10 - Todos os SGBDs possuem arquivos que registram os logs, no SQL Server o log fica registrado nos arquivos .LDF1
O que acontece quando uma transferência de dados entre a memória principal termina com
falha? Sabemos que o da não foi devidamente armazenado em disco. Neste momento
aparece a necessidade de um arquivo de log. Armazenada em um local diferente dos
arquivos de dados, o arquivo de log deve ser afetado sempre que uma transação realiza
uma escrita, é essencial que o registro de log para aquela escrita seja criado antes do banco
de dados ser modificado. Lembrem-se o log deve residir em armazenamento estável!
Um registro de log deve conter um identificador da transação (Ti), um identificado do item
de dado (Xj), o valor antigo do dado (V1) e o valor novo (V2). Um registro de log pode ser
descrito da seguinte forma: <Ti, Xj, V1, V2>. Outras informações que também devem
aparecer no log dizem respeito das operações executadas que nos levam ao estado da
transação. Temos, portanto, dentro do log as seguintes informações: <Ti start>, <Ti
commit>, <Ti abort>.
A terminologia padrão para recuperação de SGBDs inclui os termos roubado/não roubado
(steal/no-steal) e forçado/não forçado (force/no-force), que especifica quando uma página
do banco de dados poderá ser gravada em disco a partir do cache.
Se uma página em cache atualizada por uma transação não puder ser gravada antes que
a transação se efetive, ela será chamada de abordagem não roubada. O bit de pin-unpin
indicará se a página não puder ser escrita de volta no disco. Do contrário, se o protocolo
permitir o buffer atualizado antes que a transação se efetive, ele será chamado roubado
(steal). Steal será usado quando o gerenciador do cache (buffer) do SGBD necessitar de
1 Um arquivo LDF é um arquivo de log criado pelo SQL Server. Ele contém um log de ações recentes
executadas pelo banco de dados e é usado para rastrear eventos para que o banco de dados possa se
recuperar de falhas de hardware ou outros desligamentos inesperados.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
38
124
um frame de buffer para outra transação, e o buffer substituir uma página existente que
tenha sido atualizada, mas cuja transação não tenha se efetivado.
Se todas as páginas atualizadas por uma transação forem imediatamente escritas no disco
quando a transação se efetivar, ela será chamada abordagem forçada. Do contrário, será
chamada não forçada.
MODIFICAÇÕES ADIADAS E IMEDIATAS
A modificação adiada garante atomicidade de transações quando todas as modificações
do banco de dados são escritas no Log. Adia a execução de todas as operações write de
uma transação até sua efetivação parcial, ou seja, imediatamente antes do checkpoint ou
commit. Lembre-se de que uma transação é considerada parcialmente efetivada quando a
última ação da transação tiver sido executada. Vejam um exemplo na figura abaixo:
Figura 11 - Modificações adiadas
Quando é utilizada a estratégia de modificação adiada os dados não são escritos no log até
que a última ação da transação seja finalizada. Desta forma, garantimos que transação foi
concluída quando escrita no log. Se uma falha acontecer, utilizaremos o log para refazer as
modificações já executadas que não foram efetivamente gravadas em disco. Para tal,
utilizamos a operação de Redo(Ti). Como não existe nenhum dado no disco que tenha sido
gravado, mas que não tenha sua transação finalizada não precisamos desfazer nenhuma
transação do disco. Esse protocolo é conhecido como NO-UNDO/REDO.
Ele define o valor de todos os itens de dados atualizados pela transação Ti para os novos
valores. A operação é idempotente, isto é, executá-la várias vezes geram o mesmo
resultado. Após a ocorrência de uma falha, o subsistema de recuperação consulta o log
para determinar quais transações têm de ser refeitas. Ti será refeita, se e somente se, o
log contiver os registros <Ti start> e <Ti commit>. Sem <Ti commit> os registros de Ti devem
ser removidos do log.
Vamos agora falar da modificação imediata. Ela permite que as modificações no banco de
dados sejam enviadas enquanto as transações ainda estão no estado ativo, ou seja,
modificações não efetivadas. Na ocorrência de uma queda ou de uma falha de transação,
o sistema deverá usar o campo relativo ao valor antigo dos registros do log para restauração
dos itens de dados modificados e não efetivados.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
39
124
Antes que uma transação Ti inicie sua execução, o registro <Ti start> é escrito no log.
Durante sua execução, qualquer operação de write(X) feita por Ti é precedida pela escrita
apropriada do novo registro no log. Quando Ti é parcialmente efetivada o registro <Ti
commit> é escrito no log. Vejam o exemplo abaixo do funcionamento das modificações
imediatas.
Figura 12 - Modificações imediatas
Para recuperação quando utilizamos modificação imediata temos que usar o protocolo
UNDO/REDO ou UNDO/NO-REDO. Fazendo primeiro as operações de undo e depois as
operações de redo. As ações são descritas da seguinte forma. O Undo(Ti) retorna aos
valores antigos todos os itens de dados atualizados pela transação Ti, se o log contém o
registro <Ti start>, mas não tem o registro <Ti commit>. O redo(Ti) ajusta os valores de todos
os itens de dados atualizados pela transação para os novos valores, se o log contém tanto
o registro <Ti start> quanto o registro <Ti commit>. Lembrando que as duas operações são
idempotentes.
Essa primeira opção para de algoritmo baseada na atualização imediata é denominada:
UNDO/REDO, se as modificações são gravadas no BD (disco) depois do commit da
transação. Este é um caso mais geral e mais complexo onde devemos executar as
operações de UNDO e REDO. Esse processo visa garantir que modificações no buffer que
não foram escritas no disco, mas que já tenham o registro de commit no log sejam
efetivadas.
A outra opção seria o UNDO/NO-REDO, nesta técnica de recuperação temos a garantia de
que todas as atualizações são gravadas no BD (disco) antes do commit da transação
ser registrado no log, assim não é necessário REDO. Vamos apenas executar o UNDO nas
operações que estavam em execução e não foram efetivadas.
CHECKPOINT
Quando uma falha de sistema ocorre, devemos consultar o log para determinar aquelas
transações que necessitam ser refeitas e aquelas que necessitam ser inutilizadas. A
princípio deveríamos pesquisar todo o log. Para diminuir o overhead de leitura do log após
uma falha podemos introduzir no log os pontos de controle ou checkpoints.
Basicamente são exigidas três operações: 1. Operação de saída, para armazenamento
estável, de todos os registros residentes na memória principal. 2. Operação de saída, paraEquipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
40
124
disco, de todos os blocos de buffer modificados. 3. Operação de saída para armazenamento
estável, de um registro de log <checkpoint>.
Não é permitido às transações processarem quaisquer ações de atualização, como escrever
em um bloco de buffer ou escrever no registro de log, enquanto o checkpoint está em
progresso.
O tempo necessário para forçar a gravação de todos os buffers de memória modificados
pode atrasar o processamento da transação. Vamos relembrar o processo de execução do
checkpoint.
1. Suspender a execução das transações temporariamente
2. Forçar a gravação no disco de todos os buffers na memória principal que
tenham sido alterados
3. Escrever um registro de [checkpoint] no log e forçar a gravação do log no
disco
4. Reassumir o controle das transações.
É possível usar uma técnica conhecida como fuzzy checkpoint, nela o sistema poderá
reassumir o processamento das transações depois que o registro [checkpoint] for escrito no
log.
Agora vamos juntas a o check point com os checkpoints com os cenários de atualização
adiada e imediata. As figuras abaixo mostram o que acontece em cada um dos casos.
FALHA CHECKPOINT
Figura 13 - RAA - Recuperação com Atualização Adiada, os dados só são gravados no dico após o commit, o que nos leva a usar as
operações de REDO/NO-UNDO.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
41
124
Existe, porém existe uma situação em que o SGBD garante que os dados de cada operação
já foram efetivados, não necessitando da operação de REDO, assim chegamos ao processo
NO-REDO/UNDO, visto na figura abaixo.
FALHA CHECKPOINT
Figura 14 - RAI - Recuperação com atualização imediata. Neste caso, os registros são gravados imediatamente no disco
após as operações, logo precisamos reverter as operações que não foram efetivadas e refazer as operações que já foram
efetivas após o checkpoint. O que nos leva ao processo de REDO/UNDO
FALHA CHECKPOINT
Figura 15 - RAI - Recuperação com Atualização Imediata no caso NO-REDO/UNDO
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
42
124
PAGINAÇÃO SHADOW
Uma alternativa às técnicas de recuperação baseada em log é o uso da técnica de
paginação shadow ou sombra. Ela exige (teoricamente) menos acessos ao disco, contundo
é difícil de ser aplicada em transações concorrentes. Basicamente, pressupõe-se que o
banco de dados seja composto por “n” páginas de tamanho fixo. Uma tabela de páginas
com “n” entradas é então construída.
A ideia é manter duas tabelas de página durante o processamento. A tabela de páginas
atuais e a tabela de páginas shadow. Quando uma transação começa ambas as tabelas
são idênticas. Então as operações são feitas na página corrente. Quando todas as
alterações terminam a página corrente transforma em página shadow. As alterações, então
são passadas para a nova página corrente. Vejam as três figuras que apresentam o passo-
a-passo desse processo. A primeira representa o estado inicial.
A segunda figura representa as modificações, feitas apenas sobre a pagina corrente.
A próxima e última figura representa a atualização da nova página corrente, devidamente
atualizada.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
43
124
As páginas imagem, sombra ou shadow são úteis para ambientes monousuários, pois não
precisamos de uma estrutura de log. Quando partimos para ambientes multiusuários pode
ser necessário usar log, principalmente, se o método de controle de concorrência usar.
A grande vantagem deste método é uma recuperação após falhas significativamente mais
rápida, pois não há necessidade de Undo ou Redo de operações. Contudo a lista de
desvantagens é enorme:
• A fragmentação de dados, nela, as páginas atualizadas mudam de localização no
disco, impedindo de manter juntas páginas relacionadas.
• O overhead de efetivação, se a tabela de páginas é grande.
• O tempo para gravar as tabelas de páginas imagem no commit é significativo; e
• A coleta de lixo ou garbage collection para liberação de páginas antigas que é
necessário após o commit.
Além dos inconvenientes mencionados, a adaptação da paginação shadow a sistemas com
transações concorrentes é mais difícil que o registro de log. Em tais sistemas, algum tipo de
registro de log é normalmente necessário, mesmo que a paginação shadow seja usada.
VISÃO GERAL DO ALGORITMO DE ARIES
O ARIES é um algoritmo de recuperação que é projetado para trabalhar com uma
abordagem de “roubar” e “não forçar”. Está baseado em três conceitos: 1. Registro
adiantado em log, 2. Repetição de histórico durante o refazer e 3. Mudanças do log durante
o desfazer
A repetição de histórico significa que o ARIES relê todas as ações tomadas pelo sistema de
banco de dados antes da queda para reconstruir seu estado quando a queda ocorreu.
Transações que não foram efetivadas em tempo de queda, ou seja, as transações ativas
são desfeitas.
O uso e atualização do log durante o desfazer evitará que o ARIES torne a desfazer
operações já desfeitas, caso ocorra uma falha durante a recuperação, com consequente
reinício do processo de recuperação.
Os buffers podem ser perdidos durante uma queda, uma vez que estão na memória
principal. Tabelas adicionais armazenadas no log durante o checkpoint (Tabela de Página
Lixo, Tabela de transações) permitem ao ARIES identificar essas informações.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
44
124
Quando o gerenciador de recuperação é invocado após uma falha, o reinício se procede em
três fases.
Fase de Análise (1) que identifica páginas sujas no buffer e transações ativas no
momento da falha.
Fase de Refazer (2) que repete todas as ações, começando do ponto apropriado
no log e restaura o estado da base de dados idêntico ao momento da falha.
Fase de Desfazer (3) que desfaz as ações das transações que não realizaram o
commit, de forma que a base de dados reflita apenas as ações das transações
que realizaram o commit.
Algumas informações são necessárias para o processo. Precisamos do Log, da Tabela de
Transações e da Tabela de Página Lixo. Essas duas tabelas são mantidas pelo gerenciador
de transações e gravadas no log durante o checkpoint. Cada registro tem um número de
sequência de log (LSN). Sobre o algoritmo ele usa fuzzy checkpoint.
Figura 16 - Exemplo de recuperação em ARIES. (a) O log no ponto da falha. (b) As Tabelas de Transações e de Páginas Sujas no
momento do check point. (c) As Tabelas de Transações e de Páginas Sujas após a fase de análise.
a)
b)
c)
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
45
124
Sobre o algoritmo de ARIES não precisamos descer mais em detalhes, pois não é cobrado
em provas de concurso. Aqui terminamos nossa aula de transações,controle de
concorrência e recuperação após falha. Seguimos com nossa tradicional lista de questões
comentadas, mas antes apresentaremos um resumo da aula em forma de mapas mentais.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
46
124
MAPAS MENTAIS
MAPAS
Apresentamos abaixo um conjunto de mapas mentais que consolidam o conhecimento dos
assunto vistos na aula.
Transações
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
47
124
Plano de Execução
Suporte a transações em SQL
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
48
124
Controle de Concorrência
Recuperação após falha
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
49
124
QUESTÕES COMENTADAS DIVERSAS BANCAS
Apresentamos abaixo um conjunto de questões complementares sobre o assunto
que aprendemos nesta aula.
1. COPESE UFPI - Consultor Legislativo (ALEPI)/Tecnologia da Informação/2020
Sobre transações e seus comandos na linguagem SQL, avalie as seguintes
afirmativas.
I. Os comandos COMMIT, ROLLBACK e DROP fazem parte do controle de transações
do SQL;
II. O comando ROLLBACK fecha o bloco da transação e é a indicação que a transação
deve ser terminada, mas tudo que tentou ser feito deve ser descartado porque alguma
coisa errada aconteceu e ela não pode terminar normalmente. Nada realizado dentro
dela será perdurado no banco de dados;
III. Commit em duas fases refere-se a uma transação que pode utilizar dois ou mais
bancos de dados (multi-database), que podem estar localizados em servidores
diferentes. Durante uma transação em bancos com essa característica garante-se que
o Commit seja realizado em todos os bancos participantes ou em nenhum, ou seja, ou
grava tudo ou não grava nada;
IV. Com relação a uma transação atômica deve-se executar com sucesso todas as
suas operações ou, em caso de falha, desfazer apenas as operações já executadas
que causaram a falha.
Marque a opção que corresponde somente às afirmativas verdadeiras.
a) Apenas I e II.
b) Apenas II e III.
c) Apenas II e IV.
d) Apenas III e IV.
e) Apenas I e IV.
Comentário: Vamos analisar cada uma das as afirmativas da questão:
I. Errada. Os comandos COMMIT e ROLLBACK pertencem à linguagem DTL (Data
Transaction Language) e, de fato, fazem parte do controle de transações. O primeiro
comando encerra a transação e confirma todas as alterações para que permaneçam
registradas no banco enquanto o segundo encerra a transação, mas descarta todas as
alterações feitas. Já o comando DROP, pertence à linguagem DDL (Data Definition
Language). Ele é responsável por remover objetos do banco (tabelas, índices, visões,
procedimentos).
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
50
124
II. Certa. O comando ROLLBACK é utilizado para reverter (ou seja, descartar) todas
as operações realizadas dentro de uma transação. Nada do que foi feito na transação
é refletido no banco de dados conforme definido pela propriedade da atomicidade.
III. Certa. O COMMIT em duas fases é um protocolo associado a banco de dados
distribuídos. Ocorre quando uma mesma transação realiza alterações em dois ou mais
bancos de dados. Em respeito à propriedade da atomicidade, o COMMIT em cada
banco deve ser realizado com sucesso. Se algum deles falhar, a transação deve ser
abortada por completo.
IV. Errada. A propriedade da atomicidade nos diz que a transação no SGBD será
atômica , ou seja, indivisível. O que isso quer dizer? Que ou a transação será
executada por completo ou não será executada. Não são desfeitas apenas as
operações que causaram a falha, mas todas as operações da transação.
Assim, apenas as afirmativas II e III estão corretas. Concluímos, assim, que o gabarito
está na alternativa B.
Gabarito: B
2. CEBRASPE (CESPE) - Analista Judiciário (TJ PA)/Análise de Sistema/Suporte/2020
Um sistema de banco de dados proporciona a empresas o controle centralizado de
todos os seus dados. O funcionamento do banco de dados baseia-se em unidades
lógicas de trabalho conhecidas como
a) entidades.
b) ocorrências.
c) registros.
d) tabelas.
e) transações.
Comentário: Uma transação é uma unidade lógica de trabalho que executa
alguma(s) operação(ões) no banco de dados. Essas operações podem inserir,
remover, modificar ou recuperar dados nas tabelas. Ao final da transação, é possível
confirmar as alterações realizadas (através do comando COMMIT) ou descartar as
alterações (comando ROLLBACK).
Por exemplo: um sistema de uma instituição financeira pode ter uma transação
chamada TRANSFERÊNCIA. Essa transação executa duas operações: primeiro, ela
remove o valor que se quer transferir do saldo da conta de origem; depois, ela adiciona
esse mesmo valor no saldo da conta de destino.
Desta forma, temos o gabarito na alternativa E.
Gabarito: E
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
51
124
3. NC-UFPR - Profissional Nível Universitário Jr (ITAIPU)/Gestão da Informação/2019
Em relação às propriedades ACID do modelo transacional utilizado nos Sistemas de
Gerenciamento de Banco de Dados, é correto afirmar:
a) Atomicidade está relacionada à granularidade dos dados a serem mantidos em um
atributo do banco de dados.
b) Consistência está associada ao conteúdo de colunas derivadas, assegurando a
relação do valor composto com as respectivas unidades.
c) O isolamento é a propriedade que assegura que todas as operações de uma
transação sejam executadas ou não nenhuma operação terá efeito na base de dados.
d) O isolamento resolve os efeitos decorrentes da execução de transações
concorrentes, em que cada transação é executada de forma que as operações parciais
das demais transações não afetem a transação atual.
e) A durabilidade controla o estado de inconsistência do banco de dados durante a
execução das operações transacionais.
Comentário: Vamos comentar cada uma das alternativas acima.
a) Errado. A atomicidade se refere à integralidade da execução das operações de uma
transação: ou ela é executada por completo, ou não é realizada.
b) Errado. A consistência determina que a transação deve levar o banco de dados de
um estado consistente para outro consistente.
c) Errado. A alternativa descreveu a atomicidade.
d) Certo. Uma transação não pode comprometer o funcionamento de outra transação,
ou seja, devem parecer como se estivessem sendo executadas isoladamente
e) Errado. A durabilidade diz que as alterações realizadas por uma transação devem
ser persistidas no banco de dados.
Desta forma, temos nosso gabarito na alternativa D.
Gabarito: D
4. INAZ do Pará - Analista de Tecnologia da Informação (CORE SP)/2019
“Bancos de dados ou bases de dados são um conjunto de arquivos relacionados entre
si com registros sobre pessoas, lugares ou coisas.”
Disponível em: https://pt.wikipedia.org/wiki/Banco_de_dados. Acesso em: 13.12.2018
Equipe de TI do EstratégiaConcursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
52
124
Quais as 4 propriedades de que depende a integridade de uma transação de banco de
dados?
a) Atomicidade, consistência, isolamento e durabilidade.
b) Relacionamento, consistência, multiplicidade e durabilidade.
c) Atomicidade, consistência, multiplicidade e durabilidade.
d) Atomicidade, relacionamento, cardinalidade e durabilidade.
e) Relacionamento, cardinalidade, multiplicidade e durabilidade.
Comentário: Mais uma questão que cobra o conjunto de propriedades das
transações: ACID (Atomicidade, Consistência, Isolamento e Durabilidade). Essas
propriedades têm como objetivo garantir a integridade e validade das transações
executadas no banco de dados
Gabarito: A.
5. IADES - Analista Legislativo (ALEGO)/Segurança da Informação/2019
“[...] ou ela [transação] será executada em sua totalidade ou não será de modo
nenhum.”
ELMASRI, R.; NAVATHE, S.B. Sistemas de Banco de Dados. Addison-Wesley, 2005.
Essa passagem trata de uma importante propriedade de transações em bancos de
dados. Essa propriedade é a (o)
a) atenção (do inglês, atention).
b) atomicidade (do inglês, atomicity).
c) isolamento (do inglês, isolation).
d) durabilidade (do inglês, durability).
e) preservação de consistência (do inglês, consistency preservation).
Comentário: A questão trata do conjunto de propriedades ACID (Atomicidade,
Consistência, Isolamento e Durabilidade). Essas propriedades têm como objetivo
garantir a integridade e validade das transações executadas no banco de dados.
O conhecimento dessas propriedades é constantemente explorado em questões de
SGBD.
Pessoal, aqui não tem jeito: tem que saber o que significa cada uma das quatro
propriedades. Uma dica é associar o nome de forma que ajude a lembrar do significado.
Observe:
• Atomicidade: Garante que a transação no SGBD será atômica , ou seja,
indivisível. O que isso quer dizer? Que ou a transação será executada por
completo ou não será executada;
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
53
124
• Consistência: Garante a consistência , ou seja, a integridade dos dados antes
e depois de uma transação ser executada;
• Isolamento: Garante que cada transação é executada de forma isolada. Dessa
forma, uma transação que ainda não foi concluída não irá afetar a execução de
outra transação que esteja ocorrendo;
• Durabilidade: Os dados permanecem registrados no SGBD independente de
falha ou erro.
Dessa forma, fica claro que o trecho “[...] ou ela [transação] será executada em sua
totalidade ou não será de modo nenhum.” se refere a propriedade da atomicidade.
Concluímos, assim, que o gabarito é letra B.
Gabarito: B
6. NC-UFPR - Técnico (Pref Matinhos)/Informática/2019
No modelo transacional, qual é o significado correto das propriedades ACID descritas
abaixo?
a) A accuracy (A) avalia a precisão em que os dados são salvos.
b) Atomicidade (A) assegura que as operações realizadas por uma transação não
afetem as operações que estão sendo realizadas por outras transações em paralelo.
c) Consistência (A) assegura que os efeitos de uma transação, em caso de sucesso
(commit), sejam persistidas no banco de dados, mesmo em caso de quedas de
energias, falhas de hardware etc.
d) Isolamento (I) são técnicas que procuram evitar que transações paralelas interfiram
umas nas outras, permitindo que o resultado de várias transações paralelas seja
consistido, sendo equivalente à execução dessas mesmas transações de forma
sequencial.
e) Durabilidade (D) garante que as transações devem ter todas as suas operações
executadas e persistidas ou, em caso de falhas, nenhuma modificação reflete sobre a
base de dados.
Comentário: Vamos analisar cada uma das alternativas:
a) Errada. O "A" significa atomicidade. Essa propriedade garante que a transação no
SGBD será atômica, ou seja, indivisível. O que isso quer dizer? Que ou a transação
será executada por completo ou não será executada.
b) Errada. A atomicidade garante que ou a transação será executada por completo ou
não será executada. O isolamento (I) é que garante que uma transação que ainda não
foi concluída não irá afetar a execução de outra transação que esteja ocorrendo.
c) Errada. A letra C é que representa a propriedade da consistência. Ela garante a
integridade dos dados antes e depois de uma transação ser executada. A propriedade
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
54
124
da durabilidade (D) é que garante que os dados permanecem registrados no SGBD
independente de falha ou erro.
d) Certa. A propriedade do Isolamento (I) garante que cada transação é executada de
forma isolada. Dessa forma, uma transação que ainda não foi concluída não irá afetar
a execução de outra transação que esteja ocorrendo.
e) Errada. A durabilidade (D) garante que os dados permanecem registrados no SGBD
independente de falha ou erro. A alternativa misturou os conceitos da atomicidade e
durabilidade.
Concluímos, assim, que o gabarito é letra D.
Gabarito: D
7. NC-UFPR - Técnico (UFPR)/Tecnologia da Informação/2019
Considere as transações representadas abaixo num modelo de concorrência e com
isolamento transacional:
Nesse contexto, é correto afirmar:
a) A execução das transações T1 e T2 apresentam o problema da leitura suja no
modelo transacional.
b) A instrução begin apresentada nos tempos 1 e 2 equivale ao comando start
transaction no MySQL e indica que o conjunto de instruções deverá ser executado
sequencialmente ou desfeito.
c) A função de agregação avg apresentada no tempo 3 e 6 falha em função da ausência
da cláusula “group by”, sendo a transação cancelada.
d) No nível de isolamento serializable, o comando update constante no tempo 4 falha
em função de o registro ter sido acessado pela transação T2.
e) Se o nível de isolamento da transação T2 for read-committed, e o valor do salário
diferente de 1000 para o funcionário identificado pelo id 2, então é esperado que a
média calculada seja diferente da média obtida na linha 3.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
55
124
Comentário: A questão aborda os níveis de isolamento dos bancos de dados e seus
problemas: leitura suja, fantasma e leitura não repetível.
a) Errado. A leitura suja acontece quando uma transação (Tx) lê dados não efetivados
por outra (Ty) e, posteriormente, a transação (Ty) que alterou os dados sofre um
rollback, fazendo com que Tx leia dados incorretos. Nesse caso, o comando da
questão aborda o isolamento transacional, o que nos leva a considerar que não haverá
leitura suja.
b) Errado. O uso da instrução BEGIN de fato sinaliza o início de uma transação no
MySQL, ela funciona como um alias para o comando START TRANSACTION. O
conjunto de instruções que se seguem devem ser executados por completo ou
desfeitos. O fato de serem executados sequencialmente não é um ponto primordial das
propriedades das transações.
c) Errado. A função AVG é de agregação, mas ela faz a média do valor salário e não
precisa do “group by”, logo ela não falha.
d) Errado. O nível serializable impede qualquer problema, fazendo com que a
transação atue como se fosse executada de forma serializada. Neste caso, o plano de
execução apresentado não seria nem inicializado, visto que as operações apresentamo problema de leitura não repetitiva.
e) Correto. O nível de isolamento read-committed somente permite ver as
modificações que foram efetivadas. Assim, como no tempo 5 foi feito um commit da
atualização do salário, no tempo 6 a outra transação poderá ver o novo valor.
Observamos, portanto, o problema de leitura não repetitiva.
Gabarito: E.
8. SUGEP - Técnico (UFRPE)/Tecnologia da Informação/Sistemas/2019
O conceito de transações permite ao projetista modelar uma sequência de operações
de banco de dados como um único bloco. Desse modo, o usuário tem a percepção de
que uma única ação foi executada. Nesse contexto, sobre a propriedade do “tudo ou
nada” (atomicidade), é correto afirmar que se trata:
a) da capacidade de efetuar a transação completamente, ou, na impossibilidade,
retroceder para o último estado consistente do banco de dados (prévio à execução da
transação).
b) da consistência da base de dados antes e depois da execução da transação.
c) da independência entre transações distintas que executam concorrentemente.
d) da capacidade de o banco persistir o resultado da transação, independentemente
de falhas de hardware ou software que venham a ocorrer durante a execução da
transação.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
56
124
e) da consistência das restrições de integridade definidas no esquema de banco de
dados.
Comentário: Observando as alternativas, podemos encontrar a definição de
atomicidade na alternativa A. As demais letras se referem às seguintes propriedades
de transações:
B) Consistência
C) Isolamento
D) Durabilidade
E) Essa alternativa pode estar ligada a definição de consistência, mas
subsidiariamente, visto que ao garantir um estado correto as regras de integridade
devem estar presentes.
Gabarito: A
9. SUGEP - Técnico (UFRPE)/Tecnologia da Informação/Sistemas/2019
Na operação dos sistemas, diversas transações são executadas de forma concorrente.
Durante a execução de uma transação, podem ocorrer falhas, de modo que é
necessário que haja um gerenciamento das transações, tratando aspectos como a
recuperação do sistema. Nesse contexto, uma falha global pode ser uma falha de
sistema ou uma falha da mídia. Sobre esse assunto, é correto afirmar que:
a) quando ocorre uma falha de sistema, apenas a transação de prioridade zero é
afetada, ficando as demais resguardadas.
b) quando ocorre uma falha da mídia, ocorrem danos temporários à manipulação dos
dados afetados.
c) quando ocorre uma falha de sistema, o conteúdo da memória principal é
resguardado.
d) é uma estratégia de recuperação para falha da mídia a recarga ou restauração do
banco de dados a partir de uma cópia de “backup”.
e) é uma estratégia de recuperação para falha de sistema a checagem de danos físicos
ao banco de dados, antes de sua reinicialização.
Comentário: Vamos analisar cada uma das alternativas:
a) Errado. Não existe essa restrição quanto ao nível de prioridade para resguardar
uma transação. O que acontece com a transação depende do seu status e dos dados
presentes no arquivo de log. A transação pode ser efetivada ou desfeita.
b) Errado. A falha na mídia pode prejudicar os dados permanentemente.
c) Errado. Uma falha no sistema, geralmente, prejudica o funcionamento da memória
principal. Podendo haver perda dos dados na armazenados.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
57
124
d) Certo. Perfeito! A ideia é que as mídias secundárias sejam usadas para resguardar
e recuperar o banco de dados após uma falha. Além do backup são usados os arquivos
de log para restaurar os dados a um estado mais próximo possível do momento de
falha.
e) Errado. A checagem de dados físicos não pode ser considerada uma estratégia de
recuperação. No máximo, podemos considerar uma ação realizada dentro da
estratégia.
Assim, temos a nossa resposta na alternativa D.
Gabarito: D
10. COPERVE-UFSC - Técnico (UFSC)/Tecnologia da Informação/2019
Com relação a uma transação atômica em um banco de dados, é correto afirmar que:
a) deve executar com sucesso todas as suas operações ou, em caso de falha, desfazer
apenas as operações já executadas que causaram a falha.
b) deve conter apenas operações de leitura.
c) deve conter uma única operação.
d) deve executar com sucesso todas as suas operações ou, em caso de falha, deve
desfazer todas as suas operações já executadas.
e) pode conter uma ou mais operações sobre uma única tabela.
Comentário: Se você marcou letra A, volte e releia a alternativa! Não é possível que
você caia nesta casca de banana da banca! Ela começa com o texto correto, mas
termina dizendo que apenas as operações que causaram a falha serão desfeitas. Isso
já foi apresentado como alternativa em outras questões e está errado. Todas as
operações devem ser desfeitas. A nossa resposta para a pergunta encontra-se na
alternativa D.
Gabarito: D.
11. VUNESP - Analista de Sistemas (CM Piracicaba)/2019
Uma das propriedades básicas de uma transação em um banco de dados relacional é
a atomicidade, a qual estabelece que
a) a consistência do banco de dados deve ser preservada por todas as transações.
b) a transação deve ser executada por completo ou ser cancelada desde seu início.
c) deve haver duas cópias referentes aos dados alterados pela transação.
d) há um limite de operações possíveis de serem executadas em cada transação.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
58
124
e) todas alterações resultantes têm um tempo máximo para serem salvas no banco de
dados.
Comentário: A questão nos perguntou especificamente da propriedade da atomicidade.
A única alternativa que traz a explicação correta é a letra b) a transação deve ser
executada por completo ou ser cancelada desde seu início.
Gabarito: B
12. VUNESP - Programador (CM Piracicaba)/2019
Uma das propriedades básicas de uma transação em um banco de dados relacional
estabelece que cada transação não deve sofrer interferência de outras transações em
execução no banco de dados. Essa propriedade denomina-se
a) durabilidade.
b) isolamento.
c) consistência.
d) integridade.
e) cardinalidade.
Comentário: A propriedade de isolamento é que estabelece que cada transação não
deve sofrer interferência de outras transações em execução no banco de dados.
Gabarito: B
13. CEBRASPE (CESPE) - Assistente Judiciário (TJ AM)/Suporte ao Usuário de
Informática/2019
Acerca de sistema gerenciador de banco de dados, do tuning e da segurança em banco
de dados, julgue o item subsequente.
Por ser considerada uma ação atômica, a proteção do banco de dados deve ser
realizada ao nível de tabela, não sendo possível, por exemplo, realizar a proteção de
uma tupla inteira ou de parte da tupla.
Comentário: Existem vários sistemas gerenciadores de banco de dados que fazem
bloqueio no nível de tabela. Desta forma, temos uma alternativa incorreta.
Gabarito: E
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
59
124
14. FCC - Técnico Judiciário (TRF 3ª Região)/Apoio Especializado/Informática/2019
Em Gerenciamento de Transações, as quatro propriedades que garantem uma
transação são:
a) Atualização, Completeza, Durabilidade e Isolamento.
b) Atomicidade, Completeza, Durabilidade e Delegação.c) Atualização, Consistência, Durabilidade e Integração.
d) Atomicidade, Consistência, Durabilidade e Isolamento.
e) Atualização, Criação, Inserção e Exclusão.
Comentário: Mais uma questão sobre ACID: Atomicidade, consistência, isolamento e
durabilidade. Assim, temos o gabarito na alternativa D.
Gabarito: D
15. FCC - Analista em Gestão (DPE AM)/Especializado em Tecnologia da
Informação de Defensoria/Analista de Banco de Dados/2018
Uma das propriedades conhecidas em bancos de dados relacionais como ACID é a
durabilidade, segundo a qual, em uma transação completada com sucesso, todas as
atualizações feitas no banco de dados por essa transação devem persistir
a) com exceção da ocorrência de falhas na memória do servidor de banco de dados.
b) mesmo na ocorrência de falhas no sistema de banco de dados, após o término da
transação.
c) a menos que ocorra uma falha no servidor em até 1 segundo, após o término da
transação.
d) exceto se houver outras transações em execução no momento da falha.
e) com exceção da ocorrência de falhas no barramento de dados do servidor do banco
de dados.
Comentário: Analisando as alternativas, podemos recorrer ao Navathe que define
durabilidade ou permanência como uma propriedade onde as mudanças aplicadas ao
banco de dados pela transação confirmada precisam persistir no banco de dados.
Essas mudanças não devem ser perdidas por causa de alguma falha. Logo, temos
uma resposta na alternativa B.
Gabarito: B
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
60
124
16. FCC - Analista em Gestão (DPE AM)/Especializado em Tecnologia da
Informação de Defensoria/Analista de Banco de Dados/2018
Bloqueios constituem uma técnica bastante utilizada em sistemas de bancos de dados
relacionais. É correto afirmar que
a) quando uma transação obtém um bloqueio do tipo compartilhado sobre um item de
dados, pode escrever mas não ler sobre esse item.
b) no protocolo de bloqueio em duas fases, na fase de encolhimento, uma transação
pode obter novos bloqueios.
c) no protocolo de bloqueio em duas fases, na fase de crescimento, uma transação
pode liberar e também obter novos bloqueios.
d) quando uma transação obtém um bloqueio do tipo exclusivo sobre um item de
dados, pode ler e escrever sobre esse item.
e) no protocolo de bloqueio em duas fases, na fase de crescimento, uma transação
pode liberar, mas não obter novos bloqueios.
Comentário: Para responder a essa questão precisamos de dois conceitos. O primeiro
deles é sobre o protocolo de bloqueio em duas fases. Esse protocolo requer que cada
transação emita solicitações de bloqueio e desbloqueio em duas fases:
• Fase de crescimento. Uma transação pode obter bloqueios, mas não pode liberar
qualquer bloqueio.
• Fase de encolhimento. Uma transação pode liberar bloqueios, mas não pode obter
novos bloqueios.
O outro é sobre os tipos de bloqueio: exclusivo e compartilhado. Se uma transação
tiver obtido um bloqueio no modo compartilhado, então ele pode ler mas não pode
escrever. Se uma transação tiver obtido um bloqueio no modo exclusivo, então ele
pode ler e escrever.
Desta forma, temos o gabarito na alternativa D.
Gabarito: D.
17. FGV - Analista de Políticas Públicas e Gestão Governamental (CGM
Niterói)/Gestão de Tecnologia/2018
Considere um banco de dados onde duas transações, t1 e t2, são executadas
concorrentemente. A primeira, t1, debita R$ 100,00 de uma conta corrente, e a
segunda, t2, debita R$ 200,00 da mesma conta. Não há uma ordem de execução
definida para as transações.
Suponha que cada uma das transações execute duas operações: leitura seguida de
gravação. Essas operações são representadas como tx(r) para leitura e tx(w) para
gravação.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
61
124
Considere, ainda, os seguintes escalonamentos das operações de t1 e t2.
I. t1(r), t1(w), t2(r), t2(w)
II. t2(r), t2(w), t1(r), t1(w)
III. t2(r), t1(r), t1(w), t2(w)
IV. t2(r), t1(r), t2(w), t1(w)
Sobre a adequação desses escalonamentos com vistas à manutenção da integridade
do banco dados, assinale a afirmativa correta.
a) Somente I é adequado.
b) Somente I e II são adequados.
c) Somente III é adequado.
d) Somente I e III são adequados.
e) Todos são adequados.
Comentário: Para responder a essa questão temos que relembrar o conceito de
escalonamento. Perceba que são duas transações que simplesmente debitam 100 e
200 reais respectivamente de uma determinada conta. Para isso você deve ler o saldo
e subtrair o valor do saldo atual. Vamos supor que os saldo atual seja 500 reais. Em
uma situação normal deveríamos ter um saldo final de 200 reais. Vejamos o que
acontece com cada um dos planos de execução descritos:
I. t1(r) → 500,00, t1(w) → 400,00 (subtrai 100) , t2(r) → 400,00, t2(w) → 200,00 (subtrai
200)
II. t2(r) → 500,00, t2(w) -> 300,00 (subtrai 200), t1(r) → 300,00, t1(w) → 200,00 (subtrai
100)
Perceba que os dois escalonamentos acima levam ao saldo final de 200,00, o que está
certo, como já comentamos. Agora, vejamos os próximos planos:
III. t2(r) → 500,00, t1(r) → 500,00, t1(w) → 400,00 (subtrai 100,00 de 500,00), t2(w) →
300,00 (subtrai 200,00 de 500,00)
IV. t2(r) → 500,00, t1(r) → 500,00, t2(w) → 300,00 (subtrai 200,00 de 500,00), t1(w) →
400,00 (subtrai 100,00 de 500,00)
Veja que nestas situações acima III e IV, o fato das duas transações lerem o mesmo
valor vai levar a conta para um estado inconsistente. Logo, temo a reposta na
alternativa B.
Gabarito: B
18. CESGRANRIO - Analista de Sistemas Júnior (TRANSPETRO)/ Infraestrutura
/2018
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
62
124
O padrão ANSI/ISO SQL define três níveis de isolamento que permitem a ocorrência
de violações do tipo leitura fantasma. Esses três níveis são
a) READ UNCOMMITTED, READ COMMITTED e REPEATABLE READ
b) READ UNCOMMITTED, READ COMMITTED e SERIALIZABLE
c) READ UNCOMMITTED, REPEATABLE READ e SERIALIZABLE
d) READ COMMITTED, REPEATABLE READ e SNAPSHOT
e) REPEATABLE READ, SNAPSHOT e SERIALIZABLE
Comentário: O padrão ANSI/ISO SQL define um total de 4 níveis de isolamento,
onde 3 deles permitem a ocorrência de leitura fantasma. O quadro abaixo relaciona
cada nível de isolamento com os problemas que podem ocorrer:
Assim, os níveis READ UNCOMMITTED, READ COMMITTED e REPEATABLE
READ permitem a ocorrência de leituras fantasmas. Concluímos, assim, que
o gabarito é letra A.
Gabarito: A
19. NUCEPE UESPI - Perito (PC PI)/Criminal/Informática/2018
Sobre as transações características dos bancos de dados, seguem-se três afirmações:
I. O acrônimo ACID (Atomicidade, Consistência, Integridade e Durabilidade) são
características de uma transação SQL;
II. Uma transação em SQL precisa terminar com uma efetivação ou com uma reversão,
essas operações em SQL correspondem respectivamente aos comandos Commit e
Rollback;
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
63
124
III. Em SQL pode-se configurar o nível de transações que podem ser processadas
simultaneamente. O comando set transaction configura níveis de isolamento como, por
exemplo, read committed e serializable.
Está CORRETO apenas o que se afirma em:
a) I e II.
b) II.
c) II e III.
d) I.
e) I e III.
Comentário:Vamos comentar sobre cada uma das alternativas acima.
I. Incorreta. No nível de isolamento read uncommited a propriedade do isolamento
não é respeitada.
II. Certa. O componente do sistema que fornece essa atomicidade é chamado
gerenciador de transações (também conhecido como monitor de processamento de
transações ou monitor TP), e as operações COMMIT e ROLLBACK são a chave para
se entender o modo como ele funciona:
• A operação COMMIT indica o término bem-sucedido de uma transação. Ela
informa ao gerenciador de transações que uma unidade lógica de trabalho foi
concluída com sucesso, que o banco de dados está (ou deveria estar) novamente
em um estado correto e que todas as atualizações feitas por essa unidade de
trabalho podem agora complementar o COMMIT (ou seja, gravadas no banco de
dados).
• Ao contrário, a operação ROLLBACK assinala o término malsucedido de uma
transação. Ela informa ao gerenciador de transações que algo saiu errado,
que o banco de dados pode estar em um estado incorreto, e que todas as
atualizações feitas pela unidade lógica de trabalho até agora devem ser
"retomadas" (ou seja, desfeitas)."
III. Certa. O comando SET TRANSACTION define as características da transação
corrente. Não produz nenhum efeito nas próximas transações. As características da
transação disponíveis são o nível de isolamento da transação e o modo de acesso
da transação (leitura/escrita ou somente para leitura). O nível de isolamento de uma
transação determina quais dados a transação pode ver quando outras transações
estão processando ao mesmo tempo. O comando SQL possui a seguinte sintaxe:
SET TRANSACTION modo_da_transação [, ...]
onde modo_da_transação é um entre:
ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED |
READ UNCOMMITTED }
READ WRITE | READ ONLY
Assim, temos a nossa resposta na alternativa C.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
64
124
Gabarito: C.
20. FGV - Analista do Ministério Público (MPE AL)/Administrador de Banco de
Dados/2018
Na teoria de bancos de dados, uma transação é um conjunto de operações cujo
processamento respeita as propriedades de atomicidade, consistência, isolamento e
durabilidade.
Em sistemas não distribuídos, a propriedade “durabilidade” é usualmente
implementada por meio de
a) algoritmos two-phase commitment.
b) algoritmos two-phase lock.
c) arquivos de log que provêm redundância.
d) pela combinação de operações de rollback e commit.
e) serialização de operações no controle de concorrência.
Comentário: Analisando as alternativas podemos perceber que:
a) Errada. Two-phase commitment: está associada ao protocolo de commit em
banco de dados distribuídos. Nele temos réplicas dos dados em bancos diferentes e
deve ter uma sincronização para que as atualizações sejam feitas em todas as réplicas.
Ele garante a atomicidade em SGBD distribuídos.
b) Errada. Two-phase lock: é um protocolo de bloqueio onde cada transação deve
passar por um estágio de bloqueio dos itens de dados que são necessários para a sua
execução e um segundo estágio de liberação. Nesta segunda etapa não é possível
bloquear mais os itens, apenas o debloqueio, por isso é conhecida como fase de
encolhimento.
c) Certo. Arquivos de log, juntamente com os backups e o sistema de recuperação,
garante a durabilidade dos dados após o ponto de efetivação.
d) Errada. A combinação de commit e rollback está associada a atomicidade.
e) Errada. Serialização não ter relação com a propriedade de atomicidade.
Gabarito: C
21. FAURGS - Técnico de Tecnologia da Informação (BANRISUL)/Administração de
Bancos de Dados/2018
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
65
124
A recuperação de falhas de transação significa que o banco de dados é restaurado ao
estado consistente mais recente antes da falha. A recuperação é dependente de
técnicas de atualização da base de dados ao longo das transações: adiada (quando
não atualizam fisicamente o banco de dados até o ponto de confirmação – commit) ou
imediata (que pode atualizar a base de dados antes do ponto de confirmação).
Considere as afirmações abaixo sobre técnicas de recuperação de falhas de transação
não catastróficas.
I - Baseiam-se em informações sobre as mudanças que foram aplicadas aos itens de
dados pelas diversas transações, tipicamente mantidas em um log de sistema.
II - Em caso de falhas em atualização adiada, como nenhuma alteração foi
efetivamente feita na base de dados, este tipo de recuperação é chamado de No-
Undo/No-Redo.
III - A técnica denominada Undo/No-Redo é usada para recuperação de falhas em
atualização imediata e requer o uso da estratégia force para decidir quando os buffers
atualizados da memória principal são gravados de volta no disco.
IV - A técnica denominada Undo/Redo é outra alternativa para recuperação de falhas
em atualização imediata. É necessária quando o ponto de confirmação foi atingido,
mas não há garantias de que todas as mudanças tenham sido gravadas em disco. Isto
é resultado da adoção da estratégia steal/no-force.
Quais estão corretas?
a) Apenas I e III.
b) Apenas I, II e III.
c) Apenas I, III e IV.
d) Apenas II, III e IV.
e) I, II, III e IV.
Comentário: Vamos analisar cada uma das alternativas:
I. Certo. A estratégia das técnicas de recuperação de falhas não catastróficas baseia-
se em registros, geralmente em arquivos de log, e a partir deles é possível desfazer
ou refazer operações realizadas por uma determinada transação em caso de falhas
para retornar a um estado consistente.
II. - Errado. Na atualização adiada, as modificações são registradas em logs apenas
com os valores novos e, em caso de falhas, essas modificações são refeitas até
o commit (se houver). É chamada de No-Undo/Redo, que significa não desfazer e
refazer, pois não é necessário desfazer nada em caso de falha, já que nada foi de
fato feito, pois as alterações só seriam salvas ao final da transação, mas é
necessário refazer até o commit para retornar a um ponto consistente.
III. Certo. A técnica Undo/No-Redo consiste em gravar imediatamente os dados no
banco para que não seja haver um log de redo (registros do que foi feito para
refazer), garantindo consistência até o ponto de confirmação (commit). A utilização da
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
66
124
técnica Force determina que as alterações devem ser salvas imediatamente após a
confirmação, já que não haverá Redo.
IV. Certo. A técnica Undo/Redo necessita de logs para refazer e desfazer
operações, quando um ponto de confirmação de uma transação foi atingido, mas há
dúvidas acerca da consistência de suas operações, a melhor forma de garanti-la é
desfazer e refazer as operações e corrigir a transação completamente. A
técnica steal consiste em salvar de forma antecipada blocos de cache utilizados
por uma determinada transação e combinada com o not-force que não obriga a
salvar os dados no banco imediatamente após a confirmação, podem gerar
problemas como o trazido pela questão.
Assim, temos o nosso gabarito na alternativa C.
Gabarito: C
22. FGV - Analista Legislativo (ALERO)/Tecnologia da Informação/Análise e
Desenvolvimento de Sistemas/2018
No contexto das propriedades desejadas para transações executadas em banco de
dados relacionais, é possível que, eventualmente, seja permitida ou forçada a leitura
de dados que foram modificados em operações ainda não confirmadas(comitted).
Assinale a principal propriedade que é flexibilizada na ocorrência de um dirty read.
a) Atomicidade.
b) Consistência.
c) Durabilidade.
d) Integridade referencial.
e) Isolamento.
Comentário: Essa questão é muito interessante, veja que quando trabalhamos no
nível de isolamento read uncommited, que admite leituras não confirmadas, ferimos
a propriedade de isolamento. Observe que nesta situação, uma transação T1 tem
acesso aos dados utilizados por outra transação T2 durante a execução de T2. Logo,
nossa resposta encontra-se na alternativa E.
Gabarito: E
23. FGV - Analista Legislativo (ALERO)/Tecnologia da Informação/Banco de
Dados/2018
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
67
124
Assinale a opção que indica a técnica que é frequentemente utilizada pelos
gerenciadores de bancos de dados para a garantia da propriedade de isolamento das
transações.
a) Dirty read.
b) Lazy evaluation.
c) Redundância de dados.
d) Two-phase commit.
e) Two-phase lock.
Comentário: Essa questão é um complemento da questão anterior. Dado que temos
problema com a propriedade de isolamento, qual protocolo devemos seguir para que
uma transação T1 não tenha acesso aos dados de outra durante a sua execução? O
protocolo de two-phase lock. Assim, temos nossa resposta na alternativa E.
Gabarito: E
24. Ano: 2018 Banca: CESPE Órgão: STJ Cargo: Técnico Judiciário – Suporte
Técnico
Acerca de banco de dados, julgue os itens que se seguem.
74 Os protocolos de bloqueio em um banco de dados podem bloquear todas as tabelas,
apenas a tabela afetada ou apenas os dados que são manipulados durante a
transação.
Comentário: A questão trata dos níveis de bloqueios de elementos ou objetos de
banco de dados. Podemos bloquear o banco inteiro, apenas uma tabela, um conjunto
de linhas ou apenas uma linha. Essas são as opções de bloqueio que visam manter a
integridade e a consistência dos dados. Assim, podemos marcar nossa resposta como
correta para a alternativa.
Gabarito: C
25. Ano: 2016 Órgão: TRF-SP Cargo: Técnico Judiciário de TI – Questão 66
Após receber permissão para alterar os dados dos registros contidos na tabela
Processo, o usuário Paulo inseriu diversos registros utilizando a instrução INSERT e
em seguida constatou, por meio da instrução SELECT, que estes dados foram
inseridos adequadamente. Porém, outros usuários que acessam a tabela não
visualizarão os dados inseridos por Paulo até que ele execute o comando:
(A) commit
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
68
124
(B) refresh
(C) end transaction
(D) endpoint
(E) close section
Comentário: Essa questão trata de alguns conceitos interessantes. O primeiro deles
é a característica de isolamento das transações. Segundo o enunciado, podemos
observar que as modificações feitas por uma transação não são vistas por outro
usuário até o momento do commit. Neste momento os dados já estão devidamente
armazenados em uma memória não volátil. Outro ponto interessante que podemos
derivar da questão é o nível de isolamento descrito para o sistema. Neste caso
podemos usar: Read committed, Repeatable read ou Serializable.
Gabarito: A
26. ANO: 2013 BANCA: CETRO ÓRGÃO: ANVISA CARGO: ANALISTA
ADMINISTRATIVO - ÁREA 5
Em relação às transações em banco de dados, assinale a alternativa correta.
A) Os esquemas de bloqueio podem ser descritos como otimistas, pois fazem a
suposição do melhor caso possível.
B) Para os fragmentos de dados muito pequenos, não é necessário supor acesso
concorrente, nem há necessidade de bloqueio.
C) Esquemas de validação ou certificação fazem a suposição de que os conflitos
provavelmente serão bastante raros na prática, fazendo as verificações se ocorreu
algum conflito somente no momento do COMMIT.
D) Esquemas de bloqueio otimistas não fazem verificação da existência de conflitos
em nenhuma fase da transação.
E) Os esquemas otimistas devem ser evitados em sistemas com grande número de
processadores paralelos.
Comentário: Vamos analisar cada uma das alternativas acima.
Na letra A, observamos que temos um erro ao dizer que o protocolo de bloqueio é
considerado otimista. Sabemos que na realidade ele é um modelo de controle de
concorrência pessimista.
A questão do tamanho do fragmento de dados ou da granularidade quando relacionado
com bloqueio é que, quanto menor o tamanho do fragmento a ser bloqueado maior
será o paralelismo das transações no banco, porém mais complexo será o
gerenciamento dos bloqueios. Veja que há necessidade de bloqueio,
independentemente do tamanho do fragmento. Sendo assim, a alternativa B também
está incorreta.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
69
124
Realmente os esquemas de validação ou certificação, ou seja, esquemas otimistas
fazem a suposição de que os conflitos provavelmente serão bastante raros na prática,
fazendo verificações se ocorrer algum conflito, somente no momento do COMMIT, logo
a alternativa C é a correta.
Os esquemas de bloqueio otimistas fazem verificação com muita frequência, logo a
letra D está errada.
Os esquemas otimistas podem ser preferidos em sistemas com grande número de
processadores paralelos, logo a alternativa E está incorreta.
Sabemos que a resposta está na alternativa C, mas gostaria de tecer alguns
comentários sobre protocolos otimistas e pessimistas.
Em ambientes com aplicações multiusuários uma situação comum é a concorrência de
dados, onde vários usuários pegam um mesmo dado simultaneamente, e a atualização
dele pode ser trabalha de duas maneiras, Otimista ou Pessimista.
A concorrência pessimista trabalha com o conceito de bloqueio do registro na fonte
de dados, impedindo que os usuários alterem os dados de uma forma que afeta outros
usuários. Quando um usuário executa uma ação que provoca um bloqueio, outros
usuários não podem realizar ações que entraria em conflito com o bloqueio até que o
proprietário de bloqueio o finalize. Este modelo é usado principalmente em ambientes
onde há contenção pesada de dados, onde o custo de proteção de dados com
bloqueios é menor que o custo de reverter as transações se ocorrem conflitos de
simultaneidade. Esse modelo não é uma opção escalável quando os usuários estão
interagindo com os dados, fazendo com que os registros sejam bloqueados por
períodos relativamente grande.
Em contrapartida, concorrência otimista não bloqueia registros quando os lê. Quando
um usuário deseja atualizar uma linha, o aplicativo deve determinar se outro usuário
alterou a linha desde que foi lido. Concorrência otimista é geralmente utilizada em
ambientes com baixa contenção de dados, aliviando o servidor do custo adicional de
criar e manter locks. Outro ponto é a não necessidade de uma conexão aberta todo o
tempo, já que não existe lock no banco, liberando o banco de dados para atender mais
requisições.
Gabarito: C.
27. ANO: 2013 BANCA: CETRO ÓRGÃO: ANVISA CARGO: ANALISTA
ADMINISTRATIVO - ÁREA 5
Assinale a alternativa que apresenta apenas problemas de concorrência em bancos de
dados que podem ser reduzidos a um deadlock como uma etapa da solução.
A) Problema da atualização perdida e problema da dependência sem COMMIT.
B) Problema da análise inconsistente e problema da atualização.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br1265118
70
124
C) Problema da análise inconsistente e problema da dependência sem COMMIT.
D) Problema da análise inconsistente, problema da atualização perdida e problema da
dependência sem COMMIT.
E) Problema da dependência com COMMIT e problema da atualização perdida.
Comentário: Há essencialmente três modos pelos quais as coisas podem dar errado:
isto é, três modos pelos quais uma transação pode produzir uma resposta errada se
sofrer alguma forma de interferência de outra transação. Observem que a transação
que interfere pode estar correta em si; é a intercalação descontrolada de operações de
duas transações individualmente corretar que produz o resultado global incorreto. Os
três problemas são:
1. O problema da atualização perdida (lost update).
2. O problema da dependência sem COMMIT.
3. O problema da análise inconsistente.
Analisando a atualização perdida, podemos verificar que o bloqueio resolve o
problema, contudo outro problema surge que é o problema do deadlock.
O problema da atualização sem commit também é resolvido com bloqueio, mas não
gera problemas com impasses ou deadlock.
Por fim temos a análise inconsistente, novamente, o bloqueio resolve o problema
original, mas acaba forçando um impasse.
Analisando, portanto, os três problemas podemos observar que em 1 e 3 temos como
parte da solução a possibilidade de deadlock ou impasse.
Gabarito: B.
28. ANO: 2013 BANCA: CETRO ÓRGÃO: ANVISA CARGO: ANALISTA
ADMINISTRATIVO - ÁREA 5
Leia as afirmações abaixo relativas a banco de dados que consideram a transação
“Somente Leitura” na técnica de controle de concorrência conhecida como Leitura
Multiversão.
I. Nunca retarda as atualizações.
II. Nunca necessita efetuar o rollback.
III. Nunca é retardada por outra transação.
É correto o que se afirma em:
A) I e III, apenas.
B) I e II, apenas.
C) II e III, apenas.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
71
124
D) I, II e III.
E) II, apenas.
Comentário: A técnica de controle de concorrência conhecida como bloqueio
multiversão, também conhecida como leitura multivesão, está disponível hoje em
vários SGBDs, por exemplo, o PostgreSQL. A maior vantagem da técnica é que as
operações de leitura nunca precisam esperar, em outras palavras, qualquer número de
operações de leitura e uma operação de escrita podem atuar sobre o mesmo objeto
lógico simultaneamente. Para ser mais específico, podemos dizer que:
1. As leituras nunca são retardadas.
2. As leituras nunca retardam as atualizações.
3. Nunca é necessário efetuar o ROLLBACK de uma transação somente de leitura
4. O impasse só é possível entre transações de atualização.
Essas vantagens são particularmente significativas em sistemas distribuídos onde as
atualizações podem demorar um longo tempo e transações somente de leitura podem
sofrer atrasos indevidos.
Percebam que pelo exposto acima, podemos marcar nossa resposta na alternativa D.
Gabarito: D.
29. Ano: 2015 Banca: FGV Órgão: TJ-PI Cargo: Analista Judiciário
Das propriedades desejadas nas implementações de bancos dedados, designadas
pelo acrônimo ACID, o “D” de durabilidade é extremamente importante porque trata da
persistência dos dados mesmo no caso de falhas graves. Usualmente, a técnica
empregada para garantir essa propriedade baseia-se na utilização de:
A) algoritmos de controle de concorrência;
B) comandos de commit e rollback;
C) chaves estrangeiras e outras cláusulas que possam prevenir os erros mais comuns;
D) redundância de dados;
E) sistemas distribuídos.
Comentário: Sabemos que a durabilidade se refere ao fato de que depois que uma
transação estiver sido concluída, seus efeitos ficam permanentemente no sistema. As
modificações persistem até mesmo no caso de uma queda do sistema.
Intuitivamente, a única maneira do SGBD se proteger contra falhas, que podem destruir
parte dos dados, é criar e manter certa redundância no sistema. Desta forma, quando
parte do banco de dados é danificada, sua “cópia redundante” pode ser utilizada para
recuperar os dados perdidos e restabelecer a operação normal.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
72
124
Uma das formas de garantir durabilidade é por meio dos recursos de log da transação.
Mesmo se o hardware do servidor, o sistema operacional ou a instância do Banco de
Dados falharem, a instância usa os logs da transação ao reinicializar para reverter
automaticamente qualquer transação incompleta até o ponto da falha do sistema.
Outra forma de garantir a durabilidade é fazer cópias de segurança ou backups dos
dados. Em ambos os casos, logs ou backup, a informação está armazenada de forma
redundante no sistema. Partindo deste ponto comum, é possível dizer que a
durabilidade deve estar relacionada a utilização de redundância de dados.
Gabarito: D.
30. Ano: 2015 Banca: FGV Órgão: TJ-PI Cargo: Analista Judiciário
Transações de bancos de dados não distribuídos devem possuir propriedades que
garantam a integridade dos dados quando da realização das operações que as
compõem. Se nem todas as operações da transação forem realizadas, poderá haver
um conflito de integridade nos dados. Esse tipo de problema é usualmente contornado
pelos programadores com o uso de operações complementares do tipo:
A) sync point;
B) backup diferencial e backup completo;
C) begin transaction, commit, rollback;
D) bloqueio de recursos;
E) livelock e deadlock.
Comentário: Para obtermos um certo controle sobre os estados de cada transação é
necessário, implícita ou explicitamente, temos pontos de controle que delimitam as
operações e garante as propriedades de consistência e atomicidade.
Esse controle pode ser mantido na maioria dos SGBDs por um conjunto de comandos
conhecidos com data transaction language - DTL. Esse conjunto de comandos
geralmente contém as operações de begin transation, para marcar o início da
transação e leva-la para o estado ativo; o commit, que marca o final da transação bem-
sucedida e grava os dados de forma permanente na base de dados; e o rollback, que
desfaz a operações da transação trazendo-o para o estado válido anterior.
Analisando o texto acima, podemos concluir que o gabarito da questão se encontra na
alternativa C.
Gabarito: C.
31. Ano: 2015 Banca: FGV Órgão: TJ-PI Cargo: Analista Judiciário
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
73
124
O uso de transações distribuídas em bancos de dados introduz o problema da
manutenção da propriedade da atomicidade para essas transações. Se uma transação
depende de operações que devem ocorrer em dois ou mais nós distintos, é necessário
que o sucesso ou falha dessas operações possa ser percebido por todos os nós
participantes.
Um dos algoritmos mais utilizados para a implementação de transações dessa
natureza é:
A) Sync-lock;
B) SyncPoint;
C) Undo-Redo.
D) 2-phase lock;
E) 2-phase commitment;
Comentário: O algoritmo ou protocolo de 2-phase commitment é uma possibilita a
efetivação da transação em diferentes hosts. O mecanismo de commit em duas fases
garante que todos os servidores de banco de dados que participam de uma transação
distribuída tenham o commit ou rollback da transação.
Uma única unidade lógica de trabalho pode incluir transações em múltiplos bancos de
dados. Por exemplo, uma confirmação com commit pode ser executada depois de as
duas tabelas em bancos de dados separados serem atualizados.O Oracle, por
exemplo, manterá transparente a integridade entre os dois bancos de dados
assegurando que todas as transações envolvidas sejam confirmadas com commit ou
revertidas em grupo. Isso é realizado automaticamente por meio do mecanismo 2PC
(Two-Phase Commit) do Oracle.
A primeira fase do 2PC é a fase de preparação. Nessa fase, cada nó envolvido em
uma transação prepara os dados que ela precisará para confirmar os dados com
commit ou convertê-los. Uma vez preparado, diz-se que um nó está “em dúvida”. Os
nós notificam o nó inicial da transação (conhecido como o coordenador global) de seu
status.
Uma vez que todos os nós são preparados, a transação insere a fase de confirmação
e todos os nós são instruídos a confirmar sua parte da transação lógica utilizando o
commit. Todos os bancos de dados confirmam os dados com commit no mesmo tempo
lógico, preservando a integridade dos dados distribuídos.
Vejam que o 2PC é um protocolo para commit distribuídos, não tem relação nenhuma
com o protocolo de bloqueio em duas fases que serve para evitar problemas em
transações concorrentes. Desta forma, nosso gabarito pode ser marcado na
alternativa E.
Gabarito: E.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
74
124
32. Ano: 2014 Banca: FGV Órgão: Câmara Municipal do Recife-PE Cargo:
Programador de computador
Sistemas gerenciadores de bancos de dados processam requisições em paralelo que,
quando operam sobre as mesmas instâncias de dados, podem provocar erros do tipo
lost update e dirty read. Usualmente, o controle de concorrência nesses sistemas
segue um mecanismo conhecido como:
A) Two phase commitment;
B) Check point;
C) Snapshot;
D) Two phase lock;
E) Data Independence.
Comentário: Não falei muito sobre o 2PL na questão anterior pois sabia que iria tecer
alguns comentários sobre ele aqui, acabaria por ficar redundante. O mecanismo de
bloqueio de duas fases (Two-Phase Lock), garante a serializabilidade tratando os
bloqueios em duas fases:
• Fase de aquisição (growing phase): nesta fase a transação apenas adquire os
bloqueios;
• Fase de liberação (shrinking phase): nesta fase a transação somente libera
bloqueios. A partir do momento que o primeiro bloqueio é liberado nenhum bloqueio
pode ser adquirido pela transação.
Na versão 2PL Básico, os bloqueios são liberados à medida que a transação deixa de
utilizá-los. Isso pode acarretar um problema conhecido como rollback em cascata. Uma
vez que o bloqueio foi liberado, este dado pode ser utilizado por qualquer outra
transação, assim se a transação não concluir com sucesso, outras transações que
utilizaram algum dado intermediário podem gerar uma inconsistência no banco de
dados.
O Strict 2PL garante execuções concorrentes serializáveis, recuperáveis, evita o
rollback em cascata, pois liberam os bloqueios apenas no commit ou rollback.
O mecanismo funciona de forma análoga ao mecanismo de bloqueios simples,
diferenciando-se apenas pela forma como são tratadas a aquisição e a liberação de
bloqueios.
Vejam que, pela explicação acima, nossa reposta, encontra-se na alternativa D.
Gabarito: D.
33. Ano: 2015 Banca: FGV Órgão: TJ-RO Cargo: Analista de Sistemas
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
75
124
No contexto de banco de dados relacionais, a transação T executa as seguintes
operações:
O1 - Lê o saldo de uma conta x;
O2 - Subtrai uma quantia desse saldo;
O3 - Grava esse saldo recalculado.
O saldo da conta está gravado em um único registro de uma tabela. Suponha que T
esteja sendo executada por dois processos diferentes, P1 e P2, em paralelo. P1 deve
retirar R$ 10,00 da conta 2345 e P2, R$ 30,00 da mesma conta.
Considerando que as operações podem ser realizadas em diferentes ordens, analise
as possíveis sequências de execução dessas operações, mostradas a seguir.
I. P2 processa O1; P2 processa O2; P2 processa O3; P1 processa O1; P1 processa
O2; P1 processa O3;
II. P1 processa O1; P1 processa O2; P1 processa O3; P2 processa O1; P2 processa
O2; P2 processa O3;
III. P1 processa O1; P1 processa O2; P2 processa O1; P1 processa O3; P2 processa
O2; P2 processa O3;
IV. P1 processa O1; P2 processa O1; P1 processa O2; P2 processa O2; P1 processa
O3; P2 processa O3.
As únicas sequências que podem ser admitidas pelo controle de concorrência, de
modo a não introduzir erros no saldo final da conta, são:
A) I e II;
B) I e III;
C) II e III;
D) II e IV;
E) III e IV.
Comentário: Essa questão tem um ponto interessante, perceba que para que cada
processo seja executado corretamente o resultado gerado após a execução dos dois
de forma intercalada deve ser o mesmo gerado pela execução deles de forma
sequencial. Agora veja que as alternativas I e II são exemplos de execução sequencial
dos processos, logo são duas alternativas corretas.
Agora observe as demais alternativas apresentam problemas no sentido que leem o
mesmo saldo e fazem subtrações sobre esse valor, gerando um resultado
inconsistente. Desta forma, as demais opções estão incorretas.
Gabarito: A.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
76
124
34. Ano: 2015 Banca: FGV Órgão: DPE-MT Cargo: Analista - Análise de Sistemas
Um dos requisitos observados pelos sistemas gerenciadores de bancos de dados é a
garantia da durabilidade de uma transação. Se um conjunto de operações tiver sido
confirmado (commited), o sistema deve manter esse resultado no caso de recuperação
de falhas, mesmo quando há perda de dados.
Assinale a opção que indica a característica principal da técnica comumente usada
para a obtenção dessa garantia nas implementações.
A) Algoritmos de bloqueio
B) Arquivos de log
C) Backup diferencial
D) Replicação de banco de dados
E) Serialização
Comentário: Essa questão apresenta uma ferramenta utilizada para contribuir com a
durabilidade no armazenamento das informações em banco de dados. A utilização de
arquivos de log contribui para que durante o processo no armazenamento de
transações confirmadas ou commitadas, eles sejam passíveis de recuperação. De uma
forma mais simples, os logs permitem que transações mais recentes possuam a
propriedade de durabilidade.
Gabarito: B.
35. ANO: 2015 BANCA: FGV ÓRGÃO: TJ-SC PROVA: ANALISTA JUDICIÁRIO -
ANALISTA DE SISTEMAS
ACID é uma conhecida sigla do jargão da área de banco de dados, e refere-se às
propriedades que as transações executadas por um sistema gerenciador devem
observar. A letra ”I” nessa sigla está associada ao algoritmo:
A de “undo/redo” sobre arquivos de log;
B shadow paging;
C write-ahead logging;
D two-phase lock;
E two-phase commitment.
Comentário: Essa questão é interessante, pois nos remete a vários conceitos
associados a transações em banco de dados. O primeiro deles é o undo/redo utilizado
para recuperação do banco de dados. A depender o protocolo de recuperação
escolhemos como aplicar as informações presentes no log sobre a base de dados.
Executando o UNDO sempre que alguma transação não efetivada estiver com seus
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
77
124
dados já gravados em disco. E utilizamos a operação de REDO sempre que uma
instrução já efetivada não estiver devidamente gravada em disco.
A próxima alternativa se refere àspáginas sombra. Elas são utilizadas como uma
técnica para garantir a consistência dos dados. Basicamente as modificações são
feitas na cópia dos dados e em seguida atualizamos os ponteiros utilizando os dados
da cópia como principais.
O write-ahead logging, ou escrita antecipada do log, refere-se a uma técnica ou
protocolo para gravação dos registros do log no disco.
O two-phase lock, ou bloqueio em duas fases, é um protocolo de controle de
concorrência que bloqueia os dados que serão utilizados pela transação. Garantido o
isolamento de outras transações simultâneas.
Gabarito: D
36. Ano: 2015 Banca: FGV Órgão: TJ-BA Cargo: Analista Judiciário - Tecnologia da
Informação
Transações distribuídas em bancos de dados são caracterizadas pela participação de
dois ou mais hosts ligados em rede. Um dos problemas para sua implementação é a
garantia de que cada participante faça a sua parte, de modo que uma transação seja
corretamente completada. Um algoritmo usualmente utilizado nesse contexto é:
A) Open Data Base Connection;
B) Dynamic Serializability;
C) Two phase commitment;
D) Compensating transactions;
E) Two phase lock.
Comentário: Esse assunto já foi tema de uma questão anterior. Quando tratamos de
efetivação de transações em bancos de dados distribuídos temos que ter alguns
cuidados pois os hosts estão fisicamente separados. Para ter sucesso na efetivação
podemos usar o protocolo de commit distribuído conhecido como two-phase commit.
Gabarito: C.
37. Ano: 2014 Banca: FGV Órgão: PROCEMPA Cargo: Analista de Tecnologia da
Informação e Comunicação I
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
78
124
A ideia do uso da serialização (serializable isolation) para conflitos entre transações
concorrentes em um banco de dados está baseada no aumento do throughput em
ambientes em que a probabilidade de conflito é pequena.
Uma transação T1 serializável gera um erro de conflito quando há uma tentativa de
A) leitura sobre um registro que foi modificado, mas não confirmado por uma transação
T2, anterior a T1.
B) leitura sobre um registro que foi modificado, mas não confirmado por uma transação
T2, posterior a T1.
C) leitura sobre um registro que foi modificado e confirmado por uma transação T2,
anterior a T1.
D) escrita ou remoção sobre um registro que foi modificado e confirmado por uma
transação T2, posterior a T1.
E) escrita ou remoção sobre um registro que foi modificado e confirmado por uma
transação T2, anterior a T1.
Comentário: Um escalonamento conflito-serializável é um escalonamento equivalente
a alguma execução serial das transações. O problema acontece quando uma operação
de escrita ou remoção de uma transação corrente tenta alterar um registro modificado
por outra transação cronologicamente posterior. Essa ideia está presente na alternativa
D, que é a nossa resposta.
Gabarito: D.
38. Ano: 2014 Banca: FGV Órgão: PROCEMPA Cargo: Analista de Tecnologia da
Informação e Comunicação I
Na implementação do controle de concorrência na execução de transações
concomitantes de bancos, o dirty read é um dos fenômenos a evitar.
Essa situação caracteriza-se sempre que
A) uma transação lê dados gravados num dispositivo de armazenamento com defeito.
B) uma transação grava dados gravados por outra transação que já foi confirmada
(committed).
C) uma transação lê dados gravados por outra transação que ainda não foi confirmada
(committed).
D) uma operação de leitura falha porque a tabela ao qual pertence está bloqueada.
E) uma operação de leitura falha por falta de permissão.
Comentário: O problema de leitura suja acontece quando o banco de dados permite
que transações concorrentes leiam dados modificados por outra transação ainda não
efetivada ou commitada. Para evitar este problema basta utilizar um nível de
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
79
124
isolamento read committed ou outro nível superior. Esses níveis não vão permitir que
o problema persista.
Gabarito: C.
39. Ano: 2014 Banca: FGV Órgão: PROCEMPA Cargo: Analista de Tecnologia da
Informação e Comunicação I
Considere uma transação de banco de dados que transfere uma quantia X de uma
conta A para outra, B. A transação consiste em uma leitura e gravação de A, seguida
da leitura e gravação de B. Admita que o programador construiu seu programa
corretamente.
Caso ocorra algum tipo de erro nas operações sobre B, interrompendo o curso normal
da transação, o sistema gerenciador do banco de dados deve agir para corrigir a
situação e garantir que as propriedades da transação sejam respeitadas.
A propriedade resguardada, nesse caso, é conhecida como
A) atomicidade.
B) consistência.
C) durabilidade.
D) isolamento.
E) independência de dados
Comentário: Vamos revisar aqui rapidamente os conceitos de ACID:
• Atomicidade: A execução de uma transação deve ser atômica, ou todas as ações
são executadas, ou nenhuma é;
• Consistência: Cada transação executada isoladamente deve preservar a
consistência do banco de dados;
• Isolamento: Cada transação deve ser isolada dos efeitos da execução concorrente
de outras transações;
• Durabilidade: Toda transação que for finalizada de forma bem-sucedida deve
persistir seus resultados em banco mesmo na presença de falhas no sistema.
Agora percebam que se transação falhar o SGBD vai reverter as operações
executadas. Isso garante a propriedade de atomicidade, presente na alternativa A.
Gabarito: A.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
80
124
40. Ano: 2014 Banca: FGV Órgão: DPE-RJ Cargo: Técnico Superior Especializado -
Administração de Dados
O controle de concorrência para transações de banco de dados que garante que
resultados intermediários de uma transação T não afetem outras transações até que T
tenha sido totalmente executada, ou rejeitada, é usualmente implementado em bancos
de dados por meio de
A) arquivos de log.
B) bloqueio (lock e unlock).
C) check points.
D) replicação.
E) two-phase commitment.
Comentário: Vejam que a FGV gosta deste tipo de questão. Mais uma vez, cobra do
candidato o conhecimento sobre o uso de bloqueios para evitar problemas como dirty
read. Desta forma, temos a resposta na alternativa B.
Gabarito: B.
41. Ano: 2010 Banca: FGV Órgão: CODESP-SP Cargo: Analista de Sistemas
Em bancos de dados, uma transação é uma unidade lógica de trabalho, começando
com a operação BEGIN TRANSACTION e terminando conforme descrito a seguir:
I. Com uma operação específica, que indica o término bem-sucedido da transação.
Ela informa ao gerenciador de transações que uma unidade lógica de trabalho foi
concluída com sucesso, que o BD está novamente em estado correto e que todas as
atualizações foram feitas por essa unidade de trabalho e podem ser gravadas no banco
de dados.
II. Com uma operação específica, que indica o término malsucedido da transação.
Ela informa ao gerenciador de transações que algo saiu errado, que o BD pode estar
em um estado incorreto, e que todas as transações feitas pela unidade lógica de
trabalho até o momento devem ser desfeitas.
Essas operações são denominadas, respectivamente,
A) SUCCESS e ROLLBACK.
B) SUCCESS e RECOVER.
C) COMMIT e ABORT.
D) COMMIT e RECOVER.
E) COMMIT e ROLLBACK.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020www.estrategiaconcursos.com.br
1265118
81
124
Comentário: Se você lembrar dos comandos DTL vistos nesta aula e na aula de SQL
vai perceber que apenas uma das respostas apresenta duas operações válidas:
COMMIT e ROLLBACK.
Gabarito: E.
42. Ano: 2010 Banca: FGV Órgão: BADESC Cargo: Analista de Sistemas
Assinale a alternativa que indique três maneiras diferentes em que uma transação
possa ser violada.
A) Leitura suja, leitura repetível e fantasmas.
B) Leitura suja, leitura não repetível e fantasmas.
C) Sem leitura suja, leitura não repetível e fantasmas.
D) Leitura suja, leitura não repetível e sem fantasmas.
E) Sem leitura suja, leitura repetível e sem fantasmas.
Comentário: Em SQL temos quatro níveis de isolamento que resolvem três problemas,
vejam a tabela abaixo para relembrar os níveis e os problemas que eles resolvem:
Observando a figura, precisamos fazer uma observação que a leitura inválida é,
geralmente, conhecida como leitura suja. Com essa informação podemos chegar a
nossa resposta na alternativa B: Leitura suja, leitura não repetível e fantasmas.
Gabarito: B.
43. Ano: 2010 Banca: FGV Órgão: BADESC Cargo: Analista de Sistemas
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
82
124
O nível de consistência especificado na SQL-92, também denominado de níveis de
isolamento, fornece à SQL, em execução concorrente, garantias quanto à interferência
ou quanto à ausência de interferência entre transações.
A SQL possui a instrução set transaction que é aplicada para definir características da
transação a ser iniciada.
Assinale a alternativa que indique os seguintes níveis possíveis destas características.
A) serializable, repeatable read, read committed e committable.
B) serializable, repeatable read, committable e read uncommitted.
C) serializable, committable, read committed e read uncommitted.
D) committable, repeatable read, read committed e read uncommitted.
E) serializable, repeatable read, read committed e read uncommitted.
Comentário: Podemos usar a figura da questão anterior para resolver está aqui.
Percebam que os níveis de isolamentos de SQL podem ser: serializable, repeatable
read, read committed e read uncommitted.
Gabarito: E.
44. Ano: 2010 Banca: FGV Órgão: BADESC Cargo: Analista de Sistemas
Analise o seguinte conceito.
"Situação que dois ou mais usuários (ou processos) se autobloqueiam devido a não
liberação de recursos concorrentes, onde, cada um, separadamente, espera
indefinidamente que o outro finalize o processamento, criando um impasse. Portanto,
é uma situação em que duas ou mais transações se encontram em estado de espera
simultânea, cada uma esperando que uma outra finalize o processamento para poder
prosseguir".
A denominação desse conceito e o termo técnico que o provoca são, respectivamente:
A) deadlock e bloqueio.
B) bloqueio e deadlock.
C) bloqueio e inconsistência.
D) inconsistência e bloqueio.
E) deadlock e inconsistência.
Comentário: A ideia dessa questão é fazer com que você se lembre que o uso de
bloqueios sobre itens de dados durante a execução de transações pode levar o
aparecimento de impasses ou deadlocks. Vejam que o conceito que a questão trata é
o de deadlock e a técnica que leva o aparecimento é denominada bloqueio.
Gabarito: A.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
83
124
45. Ano: 2010 Banca: FGV Órgão: BADESC Cargo: Analista de Sistemas
A propriedade de uma transação denominada de ACID envolve os seguintes conceitos:
A) Atômico, Concorrente, Isolamento e Durabilidade.
B) Atomicidade, Consistência, Isolamento e Durabilidade.
C) Atomicidade, Concorrente, Inconsistente e Durabilidade.
D) Atomicidade, Consistência, Integridade e Dependência de dados.
E) Atomicidade, Consistência, Isolamento e Dependência de dados.
Comentário: Questão água com açúcar, apenas para ter certeza que você lembra das
propriedades. Faça um exercício mental e veja se você entende o porquê de cada uma
das propriedades. Lembra-se ACID no contexto de banco de dados é a sigla para:
Atomicidade, Consistência, Isolamento e Durabilidade.
Gabarito: B.
46. Ano: 2009 Banca: FGV Órgão: MEC Cargo: Administrador de banco de dados
Para garantir o controle de concorrência e, consequentemente a consistência dos
dados, o PostgreSQL utiliza o modelo MVCC (Multi Version Concurrency Control).
A respeito desse modelo NÃO é correto afirmar que:
A) a leitura nunca bloqueia a escrita.
B) a escrita nunca bloqueia a leitura.
C) cada transação enxerga um snapshot dos dados.
D) impede que a transação enxergue dados inconsistentes.
E) considera o estado concorrente dos dados provocados pelas demais transações.
Comentário: O modelo MVCC é uma técnica utilizada para melhorar a performance
do banco de dados em um ambiente multiusuário com contexto transacional. A
consistência nesse contexto é mantida através de um modelo multi versão, onde cada
transação trabalha com uma imagem dos dados no estado que eles se encontravam
no início da transação.
Uma vez iniciada uma transação no modelo MVCC, não é levado em consideração as
alterações das outras transações simultâneas, proporcionando isolamento completo
para cada sessão do banco de dados.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
84
124
A principal diferença do MVCC para o modelo tradicional é que os bloqueios obtidos
pelo MVCC ao consultar os dados (read) não conflitam com os bloqueios obtidos ao
escrevê-los (write) e vice-versa.
Enfim, o PostgreSQL mantém a consistência dos dados utilizando o modelo
multiversão MVCC (Multiversion Concurrency Control), que permite que leitura não
bloqueie escrita nem escrita bloqueie leitura. Ele não considera o estado concorrente
dos dados provocados pelas demais transações.
Gabarito: E.
47. Ano: 2009 Banca: FGV Órgão: MEC Cargo: Administrador de banco de dados
No que diz respeito ao acesso a banco de dados em Java, o controle de transações
pode ser feito por funções. Assim, para confirmar uma transação no BD e para cancelar
as alterações da transação, são utilizadas, respectivamente, as seguintes funções:
A) commit() e recovery()
B) confirm() e rollback()
C) commit() e cancel()
D) confirm() e cancel()
E) commit() e rollback()
Comentário: Para finalizar uma transação temos dois possíveis comandos:
Commit Transaction que faz o encerramento da transação com sucesso e torna as
atualizações permanentes.
Rollback Transaction que considera o término de transação com erro e retorna o
banco de dados à posição anterior à Transação.
Desta forma, temos a resposta da questão na alternativa E.
Gabarito: E.
48. Ano: 2010 Banca: FGV Órgão: BADESC Cargo: Analista de Sistemas
Acerca das transações realizadas em um Banco de Dados, assinale a afirmativa
INCORRETA.
A) As transações controlam melhor apenas a concorrência.
B) As transações são unidades lógicas de trabalho numa aplicação.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
85
124
C) A base de dados está em um estado consistente antes e depois de uma transação.
D) As transações de diferentes usuários que envolvem dados compartilhados são
executadas em sequência.
E) Um mecanismo de transação garante que toda transação iniciadatermine com
sucesso ou é desfeita.
Comentário: Veja que estamos procurando a alternativa incorreta. Sabemos que as
transações ajudam a controlar a concorrência no banco de dados, e que várias
transações podem ser executadas simultaneamente no banco de dados. Para garantir
que a execução de duas transações que acessam os mesmos dados seja feita de
forma consistente o SGBD deve executá-las em sequência. Logo, a alternativa D está
correta. Contudo, sabemos que duas transações que possuem apenas operações de
leitura podem ser executadas em paralelo, mesmo que acessem os mesmos dados.
A alternativa B tratam da definição de transação como uma unidade lógica de trabalho.
As alternativas C e E apresentam as propriedades de consistência e atomicidade.
Já a alternativa A, por conta do “apenas”, está incorreta. Sabemos que as transações
ajudam na integridade do banco de dados e contribuem para a recuperação. Portanto,
nossa resposta encontra-se na letra A.
Gabarito: A.
49. ANO: 2015 BANCA: MP-RS ÓRGÃO: MP-RS PROVA: TÉCNICO EM
INFORMÁTICA - SISTEMAS
Uma falha não pode deixar o banco de dados em um estado no qual uma transação
tenha sido parcialmente executada. Qual é a propriedade que garante que todos os
efeitos de uma transação se refletirão no banco de dados?
A Consistência.
B Isolamento.
C Atomicidade.
D Durabilidade.
E Redundância.
Comentário: A propriedade que garante que todas as operações que fazem parte de
uma transação sejam executadas ou nenhuma delas será concluída é conhecida como
atomicidade. Tratamos, portanto, uma transação como algo indivisível.
Gabarito: C
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
86
124
50. ANO: 2015 BANCA: UERJ ÓRGÃO: UERJ PROVA: ANALISTA DE SISTEMAS -
DESENVOLVIMENTO
Das propriedades ACID, a que está ligada à serialização de transações é:
A atomicidade
B consistência
C isolamento
D durabilidade
Comentário: O isolamento trata do fato de uma transação não ter conhecimento das
demais. Outro contexto importante é a ideia que os efeitos gerados sobre o banco
quando temos duas transações sendo executadas em paralelo deve ser o mesmo das
mesmas transações executadas de forma sequencial. Esse contexto nos leva a
serialização de transações.
Gabarito: C
51. ANO: 2015 BANCA: UERJ ÓRGÃO: UERJ PROVA: ANALISTA DE SISTEMAS -
DESENVOLVIMENTO
Dos níveis de isolamento definidos pela SQL, aquele em que não pode ocorrer o
fenômeno “leitura fantasma” é:
A READ UNCOMMITTED
B REPEATABLE READ
C READ COMMITTED
D SERIALIZABLE
Comentário: Os quatro níveis de isolamento propostos pelo SQL podem permitir que
alguns problemas aconteçam durante a execução de transações paralelas. O nível de
isolamento que garante que não teremos problemas com a leitura fantasma é o
SERIALIZABLE.
Gabarito: D
52. ANO: 2015 BANCA: CESPE ÓRGÃO: MPOG PROVA: ANALISTA - ANALISTA EM
TECNOLOGIA DA INFORMAÇÃO
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
87
124
Acerca de sistema de gerenciamento de banco de dados (SGBD), julgue os seguintes
itens.
[1] Os dados armazenados em um SGBD são acessados por um único usuário de cada
vez, sendo impedido o acesso concorrente aos dados.
Comentário: O acesso concorrente para leitura é perfeitamente permitido. Os
problemas são graves quando temos das transações que querem escrever no mesmo
registro ao mesmo tempo. Isso deve ser evitado por meio de protocolos de controle de
concorrência.
Gabarito: E
53. ANO: 2014 BANCA: VUNESP ÓRGÃO: DESENVOLVESP PROVA: ANALISTA -
ANALISTA DE SISTEMAS
Assinale a alternativa correta com relação aos bloqueios, utilizados para implementar
a concorrência em bancos de dados relacionais.
A Bloqueios dos tipos compartilhado e exclusivo aplicam-se apenas a bancos de dados
distribuídos.
B Bloqueios dos tipos compartilhado e exclusivo aplicam-se apenas a tabelas com mais
de 100 registros.
C Uma transação que tenha obtido um bloqueio do tipo compartilhado sobre um item
pode ler e escrever sobre tal item.
D Uma transação que tenha obtido um bloqueio do tipo compartilhado sobre um item
pode ler, mas não escrever sobre tal item.
E Uma transação que tenha obtido um bloqueio do tipo exclusivo sobre um item pode
ler, mas não escrever sobre tal item.
Comentário: Sabemos que uma transação ao obter um bloqueio compartilhado ela só
pode executar operações de leitura sobre aquele item de dados. O bloqueio
compartilhado é sinônimo de operações de leitura. A outra opção de bloqueio seria o
bloqueio exclusivo, nele podemos ter operações de escrita, mas perceba que nenhuma
outra transação pode ter esse bloqueio sobre o mesmo item de dados
simultaneamente.
Gabarito: D
54. ANO: 2014 BANCA: VUNESP ÓRGÃO: TJ-PA PROVA: ANALISTA JUDICIÁRIO -
ANÁLISE DE SISTEMA - SUPORTE
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
88
124
Uma das formas de se implementar um controle para o acesso concorrente de usuários
a um banco de dados é por meio da utilização de bloqueios, sobre os quais é correto
afirmar que
A bloqueios do tipo compartilhado não permitem o acesso simultâneo de mais do que
um usuário.
B bloqueios do tipo exclusivo não permitem o acesso simultâneo de mais do que um
usuário.
C em um bloqueio do tipo exclusivo é possível apenas ler o conteúdo do item de dados
bloqueado.
D um bloqueio do tipo exclusivo só é removido quando o banco de dados é desativado.
E em um bloqueio do tipo compartilhado é possível ler e escrever sobre o conteúdo do
item de dados bloqueado.
Comentário: Essa questão é complementar a anterior. Agora estamos mostrando a
definição ou a característica determinante da utilização dos bloqueios exclusivos.
Gabarito: B
55. ANO: 2014 BANCA: CESPE ÓRGÃO: TC-DF PROVA: ANALISTA DE
ADMINISTRAÇÃO PÚBLICA - SISTEMAS DE TECNOLOGIA DA INFORMAÇÃO
Julgue os itens subsequentes, no que se refere a bancos de dados distribuídos e data
warehouse.
[1] Em sistemas de bancos de dados distribuídos, o controle de concorrência baseado
em bloqueio de duas fases determina que, após a liberação de um de seus bloqueios,
as transações não solicitem um novo bloqueio.
Comentário: Veja que a questão trata do protocolo de bloqueio em duas fases. Uma
das suas características é justamente o fato de após a liberação de um bloqueio a
transação não solicitará mais bloqueios. Sabemos que existem quatro tipos de
protocolos: básico, conservador, estrito e rigoroso. O que muda de um para outro é o
momento da liberação dos bloqueios.
Gabarito: C
56. ANO: 2014 BANCA: CESPE ÓRGÃO: TJ-SE PROVA: ANALISTA JUDICIÁRIO -
ANALISTA DE SISTEMAS
[1] O Oracle utiliza um protocolo de confirmação em duas fases para lidar com
transações distribuídas concorrentes.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
89
124
Comentário: As transações distribuídas são um conjunto de duas ou mais transações
que devem ser gerenciadas de forma coordenada. O principal desafio das transações
distribuídas está relacionado com a manutenção da consistência do banco de dados e
isto pode ser alcançado com a utilização do mecanismo de two-phase commit (2PC).
O mecanismo de 2PC é dividido em duas partes: a fase de preparação (prepare) e a
fase de commit. Na fase de preparação, o coordenador da transação "pergunta" aosparticipantes se todos concordam em finalizar a transação com um commit.
Na fase de commit, caso todos os participantes tenham respondido que podem efetuar
o commit da transação, o coordenador envia uma mensagem aos participantes
solicitando que a transação seja finalizada (commit). Caso contrário, o coordenador
envia uma mensagem aos participantes para abortarem a transação (rollback).
Oracle-Controlled Distributed Transactions
O mecanismo de 2PC implementado pelo Oracle possui as seguintes fases, nas quais
o banco de dados executa automaticamente sempre que um usuário efetua um commit
em uma transação distribuída:
Prepare Phase: O coordenador global (global coordinator) envia uma mensagem aos
nós participantes para se prepararem para efetuar um commit ou um rollback da
transação. Se qualquer um dos nós não estiver preparado, a transação é abortada
(rollback).
Commit Phase: Se todos os participantes responderem ao coordenador que eles estão
preparados, então o coordenador solicita a finalização da transação (commit).
Forget Phase: O coordenador global esquece a transação.
Gabarito: C
57. ANO: 2015 BANCA: FCC ÓRGÃO: MANAUSPREV PROVA: ANALISTA
PREVIDENCIÁRIO - TECNOLOGIA DA INFORMAÇÃO
Uma transação é uma unidade atômica de trabalho que ou estará completa ou não foi
realizada. Para propostas de restauração, o administrador de restaurações mantém o
controle das seguintes operações:
− BEGIN_TRANSACTION: Marca o início da execução da transação.
− READ ou WRITE: Especifica operações de leitura ou gravação em itens do banco de
dados, que são executadas como parte de uma transação.
I. Especifica que as operações READ e WRITE da transação terminaram e marca o
fim da execução da transação. Entretanto, nesse ponto é necessário verificar se as
mudanças introduzidas pela transação podem ser permanentemente aplicadas ao
banco de dados (efetivadas), ou se a transação deverá ser abortada porque viola a
serialização, ou por alguma outra razão.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
90
124
II. Indica término com sucesso da transação, de forma que quaisquer alterações
(atualizações) executadas poderão ser seguramente efetivadas no banco de dados e
não serão desfeitas.
III. Indica que uma transação não terminou com sucesso, de forma que quaisquer
mudanças ou efeitos que a transação possa ter aplicado ao banco de dados deverão
ser desfeitas.
As operações I, II e III correspondem, correta e respectivamente, a:
A FINISH; ROLLBACK; COMMIT.
B END_TRANSACTION; SUCCESSFUL_TRANSACTION;
UNSUCCESSFUL_TRANSACTION.
C END_TRANSACTION; COMMIT_TRANSACTION; ROLLBACK.
D STOP_TRANSACTION; GO_TRANSACTION; BACK_TRANSACTION.
E STOP; COMMIT; ROLLBACK.
Comentário: Observando os textos das alternativas I, II e III podemos perceber que o
primeiro trata do END_TRANSACTION, o segundo do COMMIT e o último do
ROLLBACK. Assim podemos encontrar a resposta na alternativa C.
Gabarito: C
58. CESPE - 2009 - ANAC - Analista Administrativo - Tecnologia da Informação
[70] Para o SGBD viabilizar a execução de transações concomitantemente existem
diversas técnicas de controle de concorrência que são utilizadas para garantir
propriedade de não-interferência ou isolamento de transações. Uma dessas técnicas
é o controle de concorrência baseado em ordenamento de registro de timestamp que
utiliza o bloqueio combinado com o Protocol Two-Phase locking (2PL).
Comentário: Existem alguns protocolos de controle de concorrência em transações
de banco de dados um desses é o protocolo de BLOQUEIOS DE DUAS FASES que
faz com que todas as transações obedeçam às seguintes regras:
1. Antes de operar sobre qualquer objeto, a transação primeiramente adquire um
bloqueio sobre aquele objeto.
2. Após liberar o bloqueio, a transação não adquire mais bloqueios.
Outro conjunto de protocolos de controle de concorrência utilizar rótulos de tempo
(timestamp).
Um timestamp é um identificador exclusivo para cada transação, gerado pelo sistema.
Os valores de rótulo de tempo são gerados na mesma ordem que os tempos de início
de transação.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
91
124
Vejam que são dois grupos de protocolos distintos (timestamp e bloqueio (em duas
fases, por exemplo).
A questão tenta combinar os dois, o que não faz sentido. Logo, alternativa está errada.
Gabarito: E
59. ANO: 2014 BANCA: FCC ÓRGÃO: TJ-AP PROVA: ANALISTA JUDICIÁRIO -
BANCO DE DADOS - DBA
Considerando o controle de concorrência em bancos de dados, há diversos protocolos
que podem ser utilizados. Dentre eles há o denominado bloqueio de duas fases. Em
uma dessas fases, uma transação pode liberar bloqueios, porém não pode obter novos
bloqueios. Tal fase denomina-se
A crescimento.
B normalização.
C encolhimento.
D validação.
E granulação.
Comentário: Como vimos o protocolo de bloqueio em duas fases possui a fase de
crescimento onde os locks são feitos e outra de encolhimento, nesta, os locks são
liberados e nenhum outro bloqueio pode ser realizado.
Gabarito: C
60. ANO: 2014 BANCA: VUNESP ÓRGÃO: TCE-SP PROVA: AGENTE DA
FISCALIZAÇÃO FINANCEIRA - SISTEMAS, GESTÃO DE PROJETOS E
GOVERNANÇA DE TI
Sistemas de gerenciamento de bancos de dados relacionais podem utilizar o
mecanismo de bloqueio de itens de dados. O tipo de bloqueio que pode realizar leitura
sobre um item de dados, mas não escrever sobre ele, é denominado
A compartilhado.
B classificado.
C estruturado.
D protocolar.
E verificado.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
92
124
Comentário: Vimos que os bloqueios sobre os itens de dados podem ser feitos de
maneira compartilhada ou exclusiva. No caso do bloqueio compartilhado ele permite
que outras transações leiam o mesmo item de dados. Já quando tratamos do bloqueio
exclusivo, apenas uma transação tem acesso ao dado e a mesma é permitido fazer
operações de escrita sobre o item bloqueado.
Gabarito: A
61. Ano: 2014 Banca: FCC Órgão: TJ-AP Prova: Analista Judiciário - Banco de
Dados - DBA
Uma propriedade importante quando se considera a recuperação de um banco de
dados é constituída pelos chamados pontos de verificação (checkpoints). Um
checkpoint consiste de um registro, cuja função é indicar que
A o banco de dados sofreu uma paralisação programada para manutenção.
B houve uma falha no conjunto de discos utilizado para armazenamento dos dados.
C houve uma falha de comunicação entre as máquinas servidora e cliente.
D o banco de dados passou por uma operação de backup completo.
E todas as transações encerradas anteriormente ao checkpoint já foram confirmadas.
Comentários: Vamos aproveitar a questão para falarmos um pouco a respeito do
comando CHECKPOINT. Ele escreve todas as páginas sujas (dirty pages) do banco
de dados corrente no disco. As páginas sujas são páginas de dados que entraram no
buffer cache e foram modificadas, mas ainda não foram escritas no disco.
Os pontos de verificação economizam tempo durante uma recuperação posterior por
criarem um ponto onde existe a garantia de que todas as páginas sujas foram escritas
no disco. Por motivo de desempenho, o Mecanismo de Banco de Dados realiza
modificações nas páginas do banco de dados em memória e não escreve a página no
disco após cada modificação.
Entretanto, o Mecanismo de Banco de Dados precisa realizar periodicamente um ponto
de verificação para escrever as páginas sujas no disco. Escreveras páginas sujas no
disco cria um ponto bom conhecido a partir do qual o Mecanismo de Banco de Dados
pode começar a aplicar as modificações contidas no log durante a recuperação após
uma parada não esperada ou queda.
Gabarito: E
62. Ano: 2014 Banca: UFG Órgão: UEAP Prova: Analista de TI - Banco de Dados
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
93
124
As operações refazer (REDO) e desfazer (UNDO) são usadas no processo de
recuperação de banco de dados. Na recuperação baseada em atualização adiada, os
dados atualizados por uma transação não podem ser gravados no banco de dados
antes do commit da transação. O algoritmo para esse tipo de recuperação é
denominado
A UNDO/REDO.
B UNDO/NO-REDO.
C NO-UNDO/NO-REDO.
D NO-UNDO/REDO.
Comentários: Já entendemos como as operações de UNDO e REDO funcionam.
Agora vamos falar sobre como a atualização imediata ou a atualização adiada afetam
o uso dessas operações. Vamos entender os conceitos.
Quando estamos falando da atualização adiada o processo de recuperação usa duas
listas de transações: as transações acabadas desde o último checkpoint e as
transações ativas. Aplica-se a operação REDO para todas as operações de escrita das
transações acabadas no log, na ordem na qual elas foram gravadas. As transações
ativas e não acabadas são canceladas e devem ser re-submetidas. Desta forma não
realizamos a operação de UNDO.
Veja que a questão trata do algoritmo, neste caso não temos a operação de UNDO,
mas utilizamos a de REDO. O algoritmo é conhecido como NO-UNDO/REDO.
As outras opções de algoritmos são baseadas na atualização imediata. O primeiro seria
o Undo/No-Redo, se a técnica de recuperação garante que todas as atualizações são
gravadas no BD (disco) antes do commit da transação, não é necessário REDO.
Vamos apenas fazer o UNDO das operações que estavam em execução e não foram
efetivadas.
A segunda opção para de algoritmo baseada na atualização imediata é denominada:
Undo/Redo, se as modificações são gravadas no BD (disco) depois do commit da
transação. Este é um caso bem mais geral e mais complexo onde devemos executar
as operações de UNDO e REDO.
Vejam que pelo exposto nossa resposta está na alternativa D.
Gabarito: D
63. Ano: 2010 Banca: FCC Órgão: TCE-SP Prova: Agente da Fiscalização
Financeira - Produção e Banco de Dados
Tratando-se do algoritmo ARIES, quando o gerenciador de recuperação é invocado
após uma falha, o reinício se procede em fases. A identificação das páginas sujas no
buffer pool e das transações ativas no momento da falha pertence à fase de
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
94
124
A preempção.
B refazer.
C lock.
D análise.
E correção.
Comentários: Essa e as próximas duas questões tratam do algoritmo de AIRES para
recuperação após uma falha. O ARIES é um algoritmo de recuperação que é projetado
para trabalhar com uma abordagem de “roubar” e “não forçar”. Ele está baseado em
três conceitos: registro adiantado em log, repetição de histórico durante o refazer e
mudanças do log durante o desfazer.
Repetição de histórico significa que o ARIES relê todas as ações tomadas pelo sistema
de banco de dados antes da queda para reconstruir seu estado quando a queda
ocorreu. Transações que não foram efetivadas em tempo de queda, as transações
ativas são desfeitas.
Usar log durante o desfazer evitará que o ARIES torne a desfazer operações já
desfeitas, caso ocorra uma falha durante a recuperação, com consequente reinício do
processo de recuperação.
Quando o gerenciador de recuperação é invocado após uma falha, o reinício se
procede em três fases:
Fase de Análise (1): identifica páginas sujas no buffer e transações ativas no momento
da falha. Essa é nossa resposta para a questão acima.
Fase de Refazer (2): repete todas as ações, começando do ponto apropriado no log e
restaura o estado da base de dados idêntico ao momento da falha.
Fase de Desfazer (3): desfaz as ações das transações que não realizaram o commit,
de forma que a base de dados reflita apenas as ações das transações que realizaram
o commit.
Gabarito: D
64. Ano: 2010 Banca: FCC Órgão: TCE-SP Prova: Agente da Fiscalização Financeira
- Produção e Banco de Dados
As fases de operação do algoritmo ARIES são em número de
A 1
B 2
C 3
D 4
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
95
124
E 5
Comentários: Vimos no comentário da questão anterior que o algoritmo tem três
fases.
Gabarito: C
65. Ano: 2010 Banca: FCC Órgão: TCE-SP Prova: Agente da Fiscalização
Financeira - Produção e Banco de Dados
O sistema ARIES é considerado um adequado mecanismo de recuperação de BD, pois
I. fornece alto grau de paralelismo.
II. usa a abordagem não-tomar-memória e forçar escrita.
III. reduz a sobrecarga na operação de registro no histórico-de-ocorrências.
IV. minimiza o tempo de recuperação.
Está correto o que consta em
A I e II, apenas.
B I e III, apenas.
C I, III e IV, apenas.
D II, III e IV, apenas.
E I, II, III e IV.
Comentários: A alternativa II, a única incorreta do texto do enunciado trocou as
características do algoritmo. O ARIES é um algoritmo de recuperação que é projetado
para trabalhar com uma abordagem de “roubar memória” e “não forçar escrita”. Sendo
assim a alternativa C é nossa resposta.
Gabarito: C
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
96
124
QUESTÕES SEM COMENTÁRIOS
Apresentamos abaixo um conjunto de questões complementares sobre o
assunto que aprendemos nesta aula.
1. COPESE UFPI - Consultor Legislativo (ALEPI)/Tecnologia da Informação/2020
Sobre transações e seus comandos na linguagem SQL, avalie as seguintes
afirmativas.
I. Os comandos COMMIT, ROLLBACK e DROP fazem parte do controle de transações
do SQL;
II. O comando ROLLBACK fecha o bloco da transação e é a indicação que a transação
deve ser terminada, mas tudo que tentou ser feito deve ser descartado porque alguma
coisa errada aconteceu e ela não pode terminar normalmente. Nada realizado dentro
dela será perdurado no banco de dados;
III. Commit em duas fases refere-se a uma transação que pode utilizar dois ou mais
bancos de dados (multi-database), que podem estar localizados em servidores
diferentes. Durante uma transação em bancos com essa característica garante-se que
o Commit seja realizado em todos os bancos participantes ou em nenhum, ou seja, ou
grava tudo ou não grava nada;
IV. Com relação a uma transação atômica deve-se executar com sucesso todas as
suas operações ou, em caso de falha, desfazer apenas as operações já executadas
que causaram a falha.
Marque a opção que corresponde somente às afirmativas verdadeiras.
a) Apenas I e II.
b) Apenas II e III.
c) Apenas II e IV.
d) Apenas III e IV.
e) Apenas I e IV.
2. CEBRASPE (CESPE) - Analista Judiciário (TJ PA)/Análise de Sistema/Suporte/2020
Um sistema de banco de dados proporciona a empresas o controle centralizado de
todos os seus dados. O funcionamento do banco de dados baseia-se em unidades
lógicas de trabalho conhecidas como
a) entidades.
b) ocorrências.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020www.estrategiaconcursos.com.br
1265118
97
124
c) registros.
d) tabelas.
e) transações.
3. NC-UFPR - Profissional Nível Universitário Jr (ITAIPU)/Gestão da Informação/2019
Em relação às propriedades ACID do modelo transacional utilizado nos Sistemas de
Gerenciamento de Banco de Dados, é correto afirmar:
a) Atomicidade está relacionada à granularidade dos dados a serem mantidos em um
atributo do banco de dados.
b) Consistência está associada ao conteúdo de colunas derivadas, assegurando a
relação do valor composto com as respectivas unidades.
c) O isolamento é a propriedade que assegura que todas as operações de uma
transação sejam executadas ou não nenhuma operação terá efeito na base de dados.
d) O isolamento resolve os efeitos decorrentes da execução de transações
concorrentes, em que cada transação é executada de forma que as operações parciais
das demais transações não afetem a transação atual.
e) A durabilidade controla o estado de inconsistência do banco de dados durante a
execução das operações transacionais.
4. INAZ do Pará - Analista de Tecnologia da Informação (CORE SP)/2019
“Bancos de dados ou bases de dados são um conjunto de arquivos relacionados entre
si com registros sobre pessoas, lugares ou coisas.”
Disponível em: https://pt.wikipedia.org/wiki/Banco_de_dados. Acesso em: 13.12.2018
Quais as 4 propriedades de que depende a integridade de uma transação de banco de
dados?
a) Atomicidade, consistência, isolamento e durabilidade.
b) Relacionamento, consistência, multiplicidade e durabilidade.
c) Atomicidade, consistência, multiplicidade e durabilidade.
d) Atomicidade, relacionamento, cardinalidade e durabilidade.
e) Relacionamento, cardinalidade, multiplicidade e durabilidade.
5. IADES - Analista Legislativo (ALEGO)/Segurança da Informação/2019
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
98
124
“[...] ou ela [transação] será executada em sua totalidade ou não será de modo
nenhum.”
ELMASRI, R.; NAVATHE, S.B. Sistemas de Banco de Dados. Addison-Wesley, 2005.
Essa passagem trata de uma importante propriedade de transações em bancos de
dados. Essa propriedade é a (o)
a) atenção (do inglês, atention).
b) atomicidade (do inglês, atomicity).
c) isolamento (do inglês, isolation).
d) durabilidade (do inglês, durability).
e) preservação de consistência (do inglês, consistency preservation).
6. NC-UFPR - Técnico (Pref Matinhos)/Informática/2019
No modelo transacional, qual é o significado correto das propriedades ACID descritas
abaixo?
a) A accuracy (A) avalia a precisão em que os dados são salvos.
b) Atomicidade (A) assegura que as operações realizadas por uma transação não
afetem as operações que estão sendo realizadas por outras transações em paralelo.
c) Consistência (A) assegura que os efeitos de uma transação, em caso de sucesso
(commit), sejam persistidas no banco de dados, mesmo em caso de quedas de
energias, falhas de hardware etc.
d) Isolamento (I) são técnicas que procuram evitar que transações paralelas interfiram
umas nas outras, permitindo que o resultado de várias transações paralelas seja
consistido, sendo equivalente à execução dessas mesmas transações de forma
sequencial.
e) Durabilidade (D) garante que as transações devem ter todas as suas operações
executadas e persistidas ou, em caso de falhas, nenhuma modificação reflete sobre a
base de dados.
7. NC-UFPR - Técnico (UFPR)/Tecnologia da Informação/2019
Considere as transações representadas abaixo num modelo de concorrência e com
isolamento transacional:
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
99
124
Nesse contexto, é correto afirmar:
a) A execução das transações T1 e T2 apresentam o problema da leitura suja no
modelo transacional.
b) A instrução begin apresentada nos tempos 1 e 2 equivale ao comando start
transaction no MySQL e indica que o conjunto de instruções deverá ser executado
sequencialmente ou desfeito.
c) A função de agregação avg apresentada no tempo 3 e 6 falha em função da ausência
da cláusula “group by”, sendo a transação cancelada.
d) No nível de isolamento serializable, o comando update constante no tempo 4 falha
em função de o registro ter sido acessado pela transação T2.
e) Se o nível de isolamento da transação T2 for read-committed, e o valor do salário
diferente de 1000 para o funcionário identificado pelo id 2, então é esperado que a
média calculada seja diferente da média obtida na linha 3.
8. SUGEP - Técnico (UFRPE)/Tecnologia da Informação/Sistemas/2019
O conceito de transações permite ao projetista modelar uma sequência de operações
de banco de dados como um único bloco. Desse modo, o usuário tem a percepção de
que uma única ação foi executada. Nesse contexto, sobre a propriedade do “tudo ou
nada” (atomicidade), é correto afirmar que se trata:
a) da capacidade de efetuar a transação completamente, ou, na impossibilidade,
retroceder para o último estado consistente do banco de dados (prévio à execução da
transação).
b) da consistência da base de dados antes e depois da execução da transação.
c) da independência entre transações distintas que executam concorrentemente.
d) da capacidade de o banco persistir o resultado da transação, independentemente
de falhas de hardware ou software que venham a ocorrer durante a execução da
transação.
e) da consistência das restrições de integridade definidas no esquema de banco de
dados.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
100
124
9. SUGEP - Técnico (UFRPE)/Tecnologia da Informação/Sistemas/2019
Na operação dos sistemas, diversas transações são executadas de forma concorrente.
Durante a execução de uma transação, podem ocorrer falhas, de modo que é
necessário que haja um gerenciamento das transações, tratando aspectos como a
recuperação do sistema. Nesse contexto, uma falha global pode ser uma falha de
sistema ou uma falha da mídia. Sobre esse assunto, é correto afirmar que:
a) quando ocorre uma falha de sistema, apenas a transação de prioridade zero é
afetada, ficando as demais resguardadas.
b) quando ocorre uma falha da mídia, ocorrem danos temporários à manipulação dos
dados afetados.
c) quando ocorre uma falha de sistema, o conteúdo da memória principal é
resguardado.
d) é uma estratégia de recuperação para falha da mídia a recarga ou restauração do
banco de dados a partir de uma cópia de “backup”.
e) é uma estratégia de recuperação para falha de sistema a checagem de danos físicos
ao banco de dados, antes de sua reinicialização.
10. COPERVE-UFSC - Técnico (UFSC)/Tecnologia da Informação/2019
Com relação a uma transação atômica em um banco de dados, é correto afirmar que:
a) deve executar com sucesso todas as suas operações ou, em caso de falha, desfazer
apenas as operações já executadas que causaram a falha.
b) deve conter apenas operações de leitura.
c) deve conter uma única operação.
d) deve executar com sucesso todas as suas operações ou, em caso de falha, deve
desfazer todas as suas operações já executadas.
e) pode conter uma ou mais operações sobre uma única tabela.
11. VUNESP - Analista de Sistemas (CM Piracicaba)/2019
Uma das propriedades básicas de uma transação em um banco de dados relacional é
a atomicidade, a qual estabelece que
a) a consistência do banco de dados deve ser preservada por todas as transações.
b) a transação deve ser executadapor completo ou ser cancelada desde seu início.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
101
124
c) deve haver duas cópias referentes aos dados alterados pela transação.
d) há um limite de operações possíveis de serem executadas em cada transação.
e) todas alterações resultantes têm um tempo máximo para serem salvas no banco de
dados.
12. VUNESP - Programador (CM Piracicaba)/2019
Uma das propriedades básicas de uma transação em um banco de dados relacional
estabelece que cada transação não deve sofrer interferência de outras transações em
execução no banco de dados. Essa propriedade denomina-se
a) durabilidade.
b) isolamento.
c) consistência.
d) integridade.
e) cardinalidade.
13. CEBRASPE (CESPE) - Assistente Judiciário (TJ AM)/Suporte ao Usuário de
Informática/2019
Acerca de sistema gerenciador de banco de dados, do tuning e da segurança em banco
de dados, julgue o item subsequente.
Por ser considerada uma ação atômica, a proteção do banco de dados deve ser
realizada ao nível de tabela, não sendo possível, por exemplo, realizar a proteção de
uma tupla inteira ou de parte da tupla.
14. FCC - Técnico Judiciário (TRF 3ª Região)/Apoio Especializado/Informática/2019
Em Gerenciamento de Transações, as quatro propriedades que garantem uma
transação são:
a) Atualização, Completeza, Durabilidade e Isolamento.
b) Atomicidade, Completeza, Durabilidade e Delegação.
c) Atualização, Consistência, Durabilidade e Integração.
d) Atomicidade, Consistência, Durabilidade e Isolamento.
e) Atualização, Criação, Inserção e Exclusão.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
102
124
15. FCC - Analista em Gestão (DPE AM)/Especializado em Tecnologia da
Informação de Defensoria/Analista de Banco de Dados/2018
Uma das propriedades conhecidas em bancos de dados relacionais como ACID é a
durabilidade, segundo a qual, em uma transação completada com sucesso, todas as
atualizações feitas no banco de dados por essa transação devem persistir
a) com exceção da ocorrência de falhas na memória do servidor de banco de dados.
b) mesmo na ocorrência de falhas no sistema de banco de dados, após o término da
transação.
c) a menos que ocorra uma falha no servidor em até 1 segundo, após o término da
transação.
d) exceto se houver outras transações em execução no momento da falha.
e) com exceção da ocorrência de falhas no barramento de dados do servidor do banco
de dados.
16. FCC - Analista em Gestão (DPE AM)/Especializado em Tecnologia da
Informação de Defensoria/Analista de Banco de Dados/2018
Bloqueios constituem uma técnica bastante utilizada em sistemas de bancos de dados
relacionais. É correto afirmar que
a) quando uma transação obtém um bloqueio do tipo compartilhado sobre um item de
dados, pode escrever mas não ler sobre esse item.
b) no protocolo de bloqueio em duas fases, na fase de encolhimento, uma transação
pode obter novos bloqueios.
c) no protocolo de bloqueio em duas fases, na fase de crescimento, uma transação
pode liberar e também obter novos bloqueios.
d) quando uma transação obtém um bloqueio do tipo exclusivo sobre um item de
dados, pode ler e escrever sobre esse item.
e) no protocolo de bloqueio em duas fases, na fase de crescimento, uma transação
pode liberar, mas não obter novos bloqueios.
17. FGV - Analista de Políticas Públicas e Gestão Governamental (CGM
Niterói)/Gestão de Tecnologia/2018
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
103
124
Considere um banco de dados onde duas transações, t1 e t2, são executadas
concorrentemente. A primeira, t1, debita R$ 100,00 de uma conta corrente, e a
segunda, t2, debita R$ 200,00 da mesma conta. Não há uma ordem de execução
definida para as transações.
Suponha que cada uma das transações execute duas operações: leitura seguida de
gravação. Essas operações são representadas como tx(r) para leitura e tx(w) para
gravação.
Considere, ainda, os seguintes escalonamentos das operações de t1 e t2.
I. t1(r), t1(w), t2(r), t2(w)
II. t2(r), t2(w), t1(r), t1(w)
III. t2(r), t1(r), t1(w), t2(w)
IV. t2(r), t1(r), t2(w), t1(w)
Sobre a adequação desses escalonamentos com vistas à manutenção da integridade
do banco dados, assinale a afirmativa correta.
a) Somente I é adequado.
b) Somente I e II são adequados.
c) Somente III é adequado.
d) Somente I e III são adequados.
e) Todos são adequados.
18. CESGRANRIO - Analista de Sistemas Júnior (TRANSPETRO)/ Infraestrutura
/2018
O padrão ANSI/ISO SQL define três níveis de isolamento que permitem a ocorrência
de violações do tipo leitura fantasma. Esses três níveis são
a) READ UNCOMMITTED, READ COMMITTED e REPEATABLE READ
b) READ UNCOMMITTED, READ COMMITTED e SERIALIZABLE
c) READ UNCOMMITTED, REPEATABLE READ e SERIALIZABLE
d) READ COMMITTED, REPEATABLE READ e SNAPSHOT
e) REPEATABLE READ, SNAPSHOT e SERIALIZABLE
19. NUCEPE UESPI - Perito (PC PI)/Criminal/Informática/2018
Sobre as transações características dos bancos de dados, seguem-se três afirmações:
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
104
124
I. O acrônimo ACID (Atomicidade, Consistência, Integridade e Durabilidade) são
características de uma transação SQL;
II. Uma transação em SQL precisa terminar com uma efetivação ou com uma reversão,
essas operações em SQL correspondem respectivamente aos comandos Commit e
Rollback;
III. Em SQL pode-se configurar o nível de transações que podem ser processadas
simultaneamente. O comando set transaction configura níveis de isolamento como, por
exemplo, read committed e serializable.
Está CORRETO apenas o que se afirma em:
a) I e II.
b) II.
c) II e III.
d) I.
e) I e III.
20. FGV - Analista do Ministério Público (MPE AL)/Administrador de Banco de
Dados/2018
Na teoria de bancos de dados, uma transação é um conjunto de operações cujo
processamento respeita as propriedades de atomicidade, consistência, isolamento e
durabilidade.
Em sistemas não distribuídos, a propriedade “durabilidade” é usualmente
implementada por meio de
a) algoritmos two-phase commitment.
b) algoritmos two-phase lock.
c) arquivos de log que provêm redundância.
d) pela combinação de operações de rollback e commit.
e) serialização de operações no controle de concorrência.
21. FAURGS - Técnico de Tecnologia da Informação (BANRISUL)/Administração de
Bancos de Dados/2018
A recuperação de falhas de transação significa que o banco de dados é restaurado ao
estado consistente mais recente antes da falha. A recuperação é dependente de
técnicas de atualização da base de dados ao longo das transações: adiada (quando
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
105
124
não atualizam fisicamente o banco de dados até o ponto de confirmação – commit) ou
imediata (que pode atualizar a base de dados antes do ponto de confirmação).
Considere as afirmações abaixo sobre técnicas de recuperação de falhas de transação
não catastróficas.
I - Baseiam-se em informações sobre as mudanças que foram aplicadas aos itens de
dados pelasdiversas transações, tipicamente mantidas em um log de sistema.
II - Em caso de falhas em atualização adiada, como nenhuma alteração foi
efetivamente feita na base de dados, este tipo de recuperação é chamado de No-
Undo/No-Redo.
III - A técnica denominada Undo/No-Redo é usada para recuperação de falhas em
atualização imediata e requer o uso da estratégia force para decidir quando os buffers
atualizados da memória principal são gravados de volta no disco.
IV - A técnica denominada Undo/Redo é outra alternativa para recuperação de falhas
em atualização imediata. É necessária quando o ponto de confirmação foi atingido,
mas não há garantias de que todas as mudanças tenham sido gravadas em disco. Isto
é resultado da adoção da estratégia steal/no-force.
Quais estão corretas?
a) Apenas I e III.
b) Apenas I, II e III.
c) Apenas I, III e IV.
d) Apenas II, III e IV.
e) I, II, III e IV.
22. FGV - Analista Legislativo (ALERO)/Tecnologia da Informação/Análise e
Desenvolvimento de Sistemas/2018
No contexto das propriedades desejadas para transações executadas em banco de
dados relacionais, é possível que, eventualmente, seja permitida ou forçada a leitura
de dados que foram modificados em operações ainda não confirmadas (comitted).
Assinale a principal propriedade que é flexibilizada na ocorrência de um dirty read.
a) Atomicidade.
b) Consistência.
c) Durabilidade.
d) Integridade referencial.
e) Isolamento.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
106
124
23. FGV - Analista Legislativo (ALERO)/Tecnologia da Informação/Banco de
Dados/2018
Assinale a opção que indica a técnica que é frequentemente utilizada pelos
gerenciadores de bancos de dados para a garantia da propriedade de isolamento das
transações.
a) Dirty read.
b) Lazy evaluation.
c) Redundância de dados.
d) Two-phase commit.
e) Two-phase lock.
24. Ano: 2018 Banca: CESPE Órgão: STJ Cargo: Técnico Judiciário – Suporte
Técnico
Acerca de banco de dados, julgue os itens que se seguem.
74 Os protocolos de bloqueio em um banco de dados podem bloquear todas as tabelas,
apenas a tabela afetada ou apenas os dados que são manipulados durante a
transação.
25. Ano: 2016 Órgão: TRF-SP Cargo: Técnico Judiciário de TI – Questão 66
Após receber permissão para alterar os dados dos registros contidos na tabela
Processo, o usuário Paulo inseriu diversos registros utilizando a instrução INSERT e
em seguida constatou, por meio da instrução SELECT, que estes dados foram
inseridos adequadamente. Porém, outros usuários que acessam a tabela não
visualizarão os dados inseridos por Paulo até que ele execute o comando:
(A) commit
(B) refresh
(C) end transaction
(D) endpoint
(E) close section
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
107
124
26. ANO: 2013 BANCA: CETRO ÓRGÃO: ANVISA CARGO: ANALISTA
ADMINISTRATIVO - ÁREA 5
Em relação às transações em banco de dados, assinale a alternativa correta.
A) Os esquemas de bloqueio podem ser descritos como otimistas, pois fazem a
suposição do melhor caso possível.
B) Para os fragmentos de dados muito pequenos, não é necessário supor acesso
concorrente, nem há necessidade de bloqueio.
C) Esquemas de validação ou certificação fazem a suposição de que os conflitos
provavelmente serão bastante raros na prática, fazendo as verificações se ocorreu
algum conflito somente no momento do COMMIT.
D) Esquemas de bloqueio otimistas não fazem verificação da existência de conflitos
em nenhuma fase da transação.
E) Os esquemas otimistas devem ser evitados em sistemas com grande número de
processadores paralelos.
27. ANO: 2013 BANCA: CETRO ÓRGÃO: ANVISA CARGO: ANALISTA
ADMINISTRATIVO - ÁREA 5
Assinale a alternativa que apresenta apenas problemas de concorrência em bancos de
dados que podem ser reduzidos a um deadlock como uma etapa da solução.
A) Problema da atualização perdida e problema da dependência sem COMMIT.
B) Problema da análise inconsistente e problema da atualização.
C) Problema da análise inconsistente e problema da dependência sem COMMIT.
D) Problema da análise inconsistente, problema da atualização perdida e problema da
dependência sem COMMIT.
E) Problema da dependência com COMMIT e problema da atualização perdida.
28. ANO: 2013 BANCA: CETRO ÓRGÃO: ANVISA CARGO: ANALISTA
ADMINISTRATIVO - ÁREA 5
Leia as afirmações abaixo relativas a banco de dados que consideram a transação
“Somente Leitura” na técnica de controle de concorrência conhecida como Leitura
Multiversão.
I. Nunca retarda as atualizações.
II. Nunca necessita efetuar o rollback.
III. Nunca é retardada por outra transação.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
108
124
É correto o que se afirma em:
A) I e III, apenas.
B) I e II, apenas.
C) II e III, apenas.
D) I, II e III.
E) II, apenas.
29. Ano: 2015 Banca: FGV Órgão: TJ-PI Cargo: Analista Judiciário
Das propriedades desejadas nas implementações de bancos dedados, designadas
pelo acrônimo ACID, o “D” de durabilidade é extremamente importante porque trata da
persistência dos dados mesmo no caso de falhas graves. Usualmente, a técnica
empregada para garantir essa propriedade baseia-se na utilização de:
A) algoritmos de controle de concorrência;
B) comandos de commit e rollback;
C) chaves estrangeiras e outras cláusulas que possam prevenir os erros mais comuns;
D) redundância de dados;
E) sistemas distribuídos.
30. Ano: 2015 Banca: FGV Órgão: TJ-PI Cargo: Analista Judiciário
Transações de bancos de dados não distribuídos devem possuir propriedades que
garantam a integridade dos dados quando da realização das operações que as
compõem. Se nem todas as operações da transação forem realizadas, poderá haver
um conflito de integridade nos dados. Esse tipo de problema é usualmente contornado
pelos programadores com o uso de operações complementares do tipo:
A) sync point;
B) backup diferencial e backup completo;
C) begin transaction, commit, rollback;
D) bloqueio de recursos;
E) livelock e deadlock.
Comentário: Para obtermos um certo controle sobre os estados de cada transação é
necessário, implícita ou explicitamente, temos pontos de controle que delimitam as
operações e garante as propriedades de consistência e atomicidade.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
109
124
31. Ano: 2015 Banca: FGV Órgão: TJ-PI Cargo: Analista Judiciário
O uso de transações distribuídas em bancos de dados introduz o problema da
manutenção da propriedade da atomicidade para essas transações. Se uma transação
depende de operações que devem ocorrer em dois ou mais nós distintos, é necessário
que o sucesso ou falha dessas operações possa ser percebido por todos os nós
participantes.
Um dos algoritmos mais utilizados para a implementação de transações dessa
natureza é:
A) Sync-lock;
B) SyncPoint;
C) Undo-Redo.
D) 2-phase lock;
E) 2-phase commitment;
32. Ano: 2014 Banca: FGV Órgão: Câmara Municipal do Recife-PE Cargo:
Programador de computador
Sistemas gerenciadores de bancos de dados processam requisições em paralelo que,
quando operam sobre as mesmas instâncias de dados, podem provocar erros do tipo
lost update e dirty read. Usualmente, o controle de concorrência nessessistemas
segue um mecanismo conhecido como:
A) Two phase commitment;
B) Check point;
C) Snapshot;
D) Two phase lock;
E) Data Independence.
33. Ano: 2015 Banca: FGV Órgão: TJ-RO Cargo: Analista de Sistemas
No contexto de banco de dados relacionais, a transação T executa as seguintes
operações:
O1 - Lê o saldo de uma conta x;
O2 - Subtrai uma quantia desse saldo;
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
110
124
O3 - Grava esse saldo recalculado.
O saldo da conta está gravado em um único registro de uma tabela. Suponha que T
esteja sendo executada por dois processos diferentes, P1 e P2, em paralelo. P1 deve
retirar R$ 10,00 da conta 2345 e P2, R$ 30,00 da mesma conta.
Considerando que as operações podem ser realizadas em diferentes ordens, analise
as possíveis sequências de execução dessas operações, mostradas a seguir.
I. P2 processa O1; P2 processa O2; P2 processa O3; P1 processa O1; P1 processa
O2; P1 processa O3;
II. P1 processa O1; P1 processa O2; P1 processa O3; P2 processa O1; P2 processa
O2; P2 processa O3;
III. P1 processa O1; P1 processa O2; P2 processa O1; P1 processa O3; P2 processa
O2; P2 processa O3;
IV. P1 processa O1; P2 processa O1; P1 processa O2; P2 processa O2; P1 processa
O3; P2 processa O3.
As únicas sequências que podem ser admitidas pelo controle de concorrência, de
modo a não introduzir erros no saldo final da conta, são:
A) I e II;
B) I e III;
C) II e III;
D) II e IV;
E) III e IV.
34. Ano: 2015 Banca: FGV Órgão: DPE-MT Cargo: Analista - Análise de Sistemas
Um dos requisitos observados pelos sistemas gerenciadores de bancos de dados é a
garantia da durabilidade de uma transação. Se um conjunto de operações tiver sido
confirmado (commited), o sistema deve manter esse resultado no caso de recuperação
de falhas, mesmo quando há perda de dados.
Assinale a opção que indica a característica principal da técnica comumente usada
para a obtenção dessa garantia nas implementações.
A) Algoritmos de bloqueio
B) Arquivos de log
C) Backup diferencial
D) Replicação de banco de dados
E) Serialização
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
111
124
35. ANO: 2015 BANCA: FGV ÓRGÃO: TJ-SC PROVA: ANALISTA JUDICIÁRIO -
ANALISTA DE SISTEMAS
ACID é uma conhecida sigla do jargão da área de banco de dados, e refere-se às
propriedades que as transações executadas por um sistema gerenciador devem
observar. A letra ”I” nessa sigla está associada ao algoritmo:
A de “undo/redo” sobre arquivos de log;
B shadow paging;
C write-ahead logging;
D two-phase lock;
E two-phase commitment.
36. Ano: 2015 Banca: FGV Órgão: TJ-BA Cargo: Analista Judiciário - Tecnologia da
Informação
Transações distribuídas em bancos de dados são caracterizadas pela participação de
dois ou mais hosts ligados em rede. Um dos problemas para sua implementação é a
garantia de que cada participante faça a sua parte, de modo que uma transação seja
corretamente completada. Um algoritmo usualmente utilizado nesse contexto é:
A) Open Data Base Connection;
B) Dynamic Serializability;
C) Two phase commitment;
D) Compensating transactions;
E) Two phase lock.
37. Ano: 2014 Banca: FGV Órgão: PROCEMPA Cargo: Analista de Tecnologia da
Informação e Comunicação I
A ideia do uso da serialização (serializable isolation) para conflitos entre transações
concorrentes em um banco de dados está baseada no aumento do throughput em
ambientes em que a probabilidade de conflito é pequena.
Uma transação T1 serializável gera um erro de conflito quando há uma tentativa de
A) leitura sobre um registro que foi modificado, mas não confirmado por uma transação
T2, anterior a T1.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
112
124
B) leitura sobre um registro que foi modificado, mas não confirmado por uma transação
T2, posterior a T1.
C) leitura sobre um registro que foi modificado e confirmado por uma transação T2,
anterior a T1.
D) escrita ou remoção sobre um registro que foi modificado e confirmado por uma
transação T2, posterior a T1.
E) escrita ou remoção sobre um registro que foi modificado e confirmado por uma
transação T2, anterior a T1.
38. Ano: 2014 Banca: FGV Órgão: PROCEMPA Cargo: Analista de Tecnologia da
Informação e Comunicação I
Na implementação do controle de concorrência na execução de transações
concomitantes de bancos, o dirty read é um dos fenômenos a evitar.
Essa situação caracteriza-se sempre que
A) uma transação lê dados gravados num dispositivo de armazenamento com defeito.
B) uma transação grava dados gravados por outra transação que já foi confirmada
(committed).
C) uma transação lê dados gravados por outra transação que ainda não foi confirmada
(committed).
D) uma operação de leitura falha porque a tabela ao qual pertence está bloqueada.
E) uma operação de leitura falha por falta de permissão.
39. Ano: 2014 Banca: FGV Órgão: PROCEMPA Cargo: Analista de Tecnologia da
Informação e Comunicação I
Considere uma transação de banco de dados que transfere uma quantia X de uma
conta A para outra, B. A transação consiste em uma leitura e gravação de A, seguida
da leitura e gravação de B. Admita que o programador construiu seu programa
corretamente.
Caso ocorra algum tipo de erro nas operações sobre B, interrompendo o curso normal
da transação, o sistema gerenciador do banco de dados deve agir para corrigir a
situação e garantir que as propriedades da transação sejam respeitadas.
A propriedade resguardada, nesse caso, é conhecida como
A) atomicidade.
B) consistência.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
113
124
C) durabilidade.
D) isolamento.
E) independência de dados
40. Ano: 2014 Banca: FGV Órgão: DPE-RJ Cargo: Técnico Superior Especializado -
Administração de Dados
O controle de concorrência para transações de banco de dados que garante que
resultados intermediários de uma transação T não afetem outras transações até que T
tenha sido totalmente executada, ou rejeitada, é usualmente implementado em bancos
de dados por meio de
A) arquivos de log.
B) bloqueio (lock e unlock).
C) check points.
D) replicação.
E) two-phase commitment.
41. Ano: 2010 Banca: FGV Órgão: CODESP-SP Cargo: Analista de Sistemas
Em bancos de dados, uma transação é uma unidade lógica de trabalho, começando
com a operação BEGIN TRANSACTION e terminando conforme descrito a seguir:
I. Com uma operação específica, que indica o término bem-sucedido da transação.
Ela informa ao gerenciador de transações que uma unidade lógica de trabalho foi
concluída com sucesso, que o BD está novamente em estado correto e que todas as
atualizações foram feitas por essa unidade de trabalho e podem ser gravadas no banco
de dados.
II. Com uma operação específica, que indica o término malsucedido da transação.
Ela informa ao gerenciador de transações que algo saiu errado, que o BD pode estar
em um estado incorreto, e que todas as transações feitas pela unidade lógica de
trabalho até o momento devem ser desfeitas.
Essas operações são denominadas, respectivamente,
A) SUCCESS e ROLLBACK.
B) SUCCESS e RECOVER.
C) COMMIT e ABORT.
D) COMMIT e RECOVER.
E) COMMIT e ROLLBACK.
Equipe de TI do Estratégia Concursos, Thiago RodriguesCavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
114
124
42. Ano: 2010 Banca: FGV Órgão: BADESC Cargo: Analista de Sistemas
Assinale a alternativa que indique três maneiras diferentes em que uma transação
possa ser violada.
A) Leitura suja, leitura repetível e fantasmas.
B) Leitura suja, leitura não repetível e fantasmas.
C) Sem leitura suja, leitura não repetível e fantasmas.
D) Leitura suja, leitura não repetível e sem fantasmas.
E) Sem leitura suja, leitura repetível e sem fantasmas.
43. Ano: 2010 Banca: FGV Órgão: BADESC Cargo: Analista de Sistemas
O nível de consistência especificado na SQL-92, também denominado de níveis de
isolamento, fornece à SQL, em execução concorrente, garantias quanto à interferência
ou quanto à ausência de interferência entre transações.
A SQL possui a instrução set transaction que é aplicada para definir características da
transação a ser iniciada.
Assinale a alternativa que indique os seguintes níveis possíveis destas características.
A) serializable, repeatable read, read committed e committable.
B) serializable, repeatable read, committable e read uncommitted.
C) serializable, committable, read committed e read uncommitted.
D) committable, repeatable read, read committed e read uncommitted.
E) serializable, repeatable read, read committed e read uncommitted.
44. Ano: 2010 Banca: FGV Órgão: BADESC Cargo: Analista de Sistemas
Analise o seguinte conceito.
"Situação que dois ou mais usuários (ou processos) se autobloqueiam devido a não
liberação de recursos concorrentes, onde, cada um, separadamente, espera
indefinidamente que o outro finalize o processamento, criando um impasse. Portanto,
é uma situação em que duas ou mais transações se encontram em estado de espera
simultânea, cada uma esperando que uma outra finalize o processamento para poder
prosseguir".
A denominação desse conceito e o termo técnico que o provoca são, respectivamente:
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
115
124
A) deadlock e bloqueio.
B) bloqueio e deadlock.
C) bloqueio e inconsistência.
D) inconsistência e bloqueio.
E) deadlock e inconsistência.
45. Ano: 2010 Banca: FGV Órgão: BADESC Cargo: Analista de Sistemas
A propriedade de uma transação denominada de ACID envolve os seguintes conceitos:
A) Atômico, Concorrente, Isolamento e Durabilidade.
B) Atomicidade, Consistência, Isolamento e Durabilidade.
C) Atomicidade, Concorrente, Inconsistente e Durabilidade.
D) Atomicidade, Consistência, Integridade e Dependência de dados.
E) Atomicidade, Consistência, Isolamento e Dependência de dados.
46. Ano: 2009 Banca: FGV Órgão: MEC Cargo: Administrador de banco de dados
Para garantir o controle de concorrência e, consequentemente a consistência dos
dados, o PostgreSQL utiliza o modelo MVCC (Multi Version Concurrency Control).
A respeito desse modelo NÃO é correto afirmar que:
A) a leitura nunca bloqueia a escrita.
B) a escrita nunca bloqueia a leitura.
C) cada transação enxerga um snapshot dos dados.
D) impede que a transação enxergue dados inconsistentes.
E) considera o estado concorrente dos dados provocados pelas demais transações.
47. Ano: 2009 Banca: FGV Órgão: MEC Cargo: Administrador de banco de dados
No que diz respeito ao acesso a banco de dados em Java, o controle de transações
pode ser feito por funções. Assim, para confirmar uma transação no BD e para cancelar
as alterações da transação, são utilizadas, respectivamente, as seguintes funções:
A) commit() e recovery()
B) confirm() e rollback()
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
116
124
C) commit() e cancel()
D) confirm() e cancel()
E) commit() e rollback()
48. Ano: 2010 Banca: FGV Órgão: BADESC Cargo: Analista de Sistemas
Acerca das transações realizadas em um Banco de Dados, assinale a afirmativa
INCORRETA.
A) As transações controlam melhor apenas a concorrência.
B) As transações são unidades lógicas de trabalho numa aplicação.
C) A base de dados está em um estado consistente antes e depois de uma transação.
D) As transações de diferentes usuários que envolvem dados compartilhados são
executadas em sequência.
E) Um mecanismo de transação garante que toda transação iniciada termine com
sucesso ou é desfeita.
49. ANO: 2015 BANCA: MP-RS ÓRGÃO: MP-RS PROVA: TÉCNICO EM
INFORMÁTICA - SISTEMAS
Uma falha não pode deixar o banco de dados em um estado no qual uma transação
tenha sido parcialmente executada. Qual é a propriedade que garante que todos os
efeitos de uma transação se refletirão no banco de dados?
A Consistência.
B Isolamento.
C Atomicidade.
D Durabilidade.
E Redundância.
50. ANO: 2015 BANCA: UERJ ÓRGÃO: UERJ PROVA: ANALISTA DE SISTEMAS -
DESENVOLVIMENTO
Das propriedades ACID, a que está ligada à serialização de transações é:
A atomicidade
B consistência
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
117
124
C isolamento
D durabilidade
51. ANO: 2015 BANCA: UERJ ÓRGÃO: UERJ PROVA: ANALISTA DE SISTEMAS -
DESENVOLVIMENTO
Dos níveis de isolamento definidos pela SQL, aquele em que não pode ocorrer o
fenômeno “leitura fantasma” é:
A READ UNCOMMITTED
B REPEATABLE READ
C READ COMMITTED
D SERIALIZABLE
52. ANO: 2015 BANCA: CESPE ÓRGÃO: MPOG PROVA: ANALISTA - ANALISTA EM
TECNOLOGIA DA INFORMAÇÃO
Acerca de sistema de gerenciamento de banco de dados (SGBD), julgue os seguintes
itens.
[1] Os dados armazenados em um SGBD são acessados por um único usuário de cada
vez, sendo impedido o acesso concorrente aos dados.
53. ANO: 2014 BANCA: VUNESP ÓRGÃO: DESENVOLVESP PROVA: ANALISTA -
ANALISTA DE SISTEMAS
Assinale a alternativa correta com relação aos bloqueios, utilizados para implementar
a concorrência em bancos de dados relacionais.
A Bloqueios dos tipos compartilhado e exclusivo aplicam-se apenas a bancos de dados
distribuídos.
B Bloqueios dos tipos compartilhado e exclusivo aplicam-se apenas a tabelas com mais
de 100 registros.
C Uma transação que tenha obtido um bloqueio do tipo compartilhado sobre um item
pode ler e escrever sobre tal item.
D Uma transação que tenha obtido um bloqueio do tipo compartilhado sobre um item
pode ler, mas não escrever sobre tal item.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
118
124
E Uma transação que tenha obtido um bloqueio do tipo exclusivo sobre um item pode
ler, mas não escrever sobre tal item.
54. ANO: 2014 BANCA: VUNESP ÓRGÃO: TJ-PA PROVA: ANALISTA JUDICIÁRIO -
ANÁLISE DE SISTEMA - SUPORTE
Uma das formas de se implementar um controle para o acesso concorrente de usuários
a um banco de dados é por meio da utilização de bloqueios, sobre os quais é correto
afirmar que
A bloqueios do tipo compartilhado não permitem o acesso simultâneo de mais do que
um usuário.
B bloqueios do tipo exclusivo não permitem o acesso simultâneo de mais do que um
usuário.
C em um bloqueio do tipo exclusivo é possível apenas ler o conteúdo do item de dados
bloqueado.
D um bloqueio do tipo exclusivo só é removido quando o banco de dados é desativado.
E em um bloqueio do tipo compartilhado é possível ler e escrever sobre o conteúdodo
item de dados bloqueado.
55. ANO: 2014 BANCA: CESPE ÓRGÃO: TC-DF PROVA: ANALISTA DE
ADMINISTRAÇÃO PÚBLICA - SISTEMAS DE TECNOLOGIA DA INFORMAÇÃO
Julgue os itens subsequentes, no que se refere a bancos de dados distribuídos e data
warehouse.
[1] Em sistemas de bancos de dados distribuídos, o controle de concorrência baseado
em bloqueio de duas fases determina que, após a liberação de um de seus bloqueios,
as transações não solicitem um novo bloqueio.
56. ANO: 2014 BANCA: CESPE ÓRGÃO: TJ-SE PROVA: ANALISTA JUDICIÁRIO -
ANALISTA DE SISTEMAS
[1] O Oracle utiliza um protocolo de confirmação em duas fases para lidar com
transações distribuídas concorrentes.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
119
124
57. ANO: 2015 BANCA: FCC ÓRGÃO: MANAUSPREV PROVA: ANALISTA
PREVIDENCIÁRIO - TECNOLOGIA DA INFORMAÇÃO
Uma transação é uma unidade atômica de trabalho que ou estará completa ou não foi
realizada. Para propostas de restauração, o administrador de restaurações mantém o
controle das seguintes operações:
− BEGIN_TRANSACTION: Marca o início da execução da transação.
− READ ou WRITE: Especifica operações de leitura ou gravação em itens do banco de
dados, que são executadas como parte de uma transação.
I. Especifica que as operações READ e WRITE da transação terminaram e marca o
fim da execução da transação. Entretanto, nesse ponto é necessário verificar se as
mudanças introduzidas pela transação podem ser permanentemente aplicadas ao
banco de dados (efetivadas), ou se a transação deverá ser abortada porque viola a
serialização, ou por alguma outra razão.
II. Indica término com sucesso da transação, de forma que quaisquer alterações
(atualizações) executadas poderão ser seguramente efetivadas no banco de dados e
não serão desfeitas.
III. Indica que uma transação não terminou com sucesso, de forma que quaisquer
mudanças ou efeitos que a transação possa ter aplicado ao banco de dados deverão
ser desfeitas.
As operações I, II e III correspondem, correta e respectivamente, a:
A FINISH; ROLLBACK; COMMIT.
B END_TRANSACTION; SUCCESSFUL_TRANSACTION;
UNSUCCESSFUL_TRANSACTION.
C END_TRANSACTION; COMMIT_TRANSACTION; ROLLBACK.
D STOP_TRANSACTION; GO_TRANSACTION; BACK_TRANSACTION.
E STOP; COMMIT; ROLLBACK.
58. CESPE - 2009 - ANAC - Analista Administrativo - Tecnologia da Informação
[70] Para o SGBD viabilizar a execução de transações concomitantemente existem
diversas técnicas de controle de concorrência que são utilizadas para garantir
propriedade de não-interferência ou isolamento de transações. Uma dessas técnicas
é o controle de concorrência baseado em ordenamento de registro de timestamp que
utiliza o bloqueio combinado com o Protocol Two-Phase locking (2PL).
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
120
124
59. ANO: 2014 BANCA: FCC ÓRGÃO: TJ-AP PROVA: ANALISTA JUDICIÁRIO -
BANCO DE DADOS - DBA
Considerando o controle de concorrência em bancos de dados, há diversos protocolos
que podem ser utilizados. Dentre eles há o denominado bloqueio de duas fases. Em
uma dessas fases, uma transação pode liberar bloqueios, porém não pode obter novos
bloqueios. Tal fase denomina-se
A crescimento.
B normalização.
C encolhimento.
D validação.
E granulação.
60. ANO: 2014 BANCA: VUNESP ÓRGÃO: TCE-SP PROVA: AGENTE DA
FISCALIZAÇÃO FINANCEIRA - SISTEMAS, GESTÃO DE PROJETOS E
GOVERNANÇA DE TI
Sistemas de gerenciamento de bancos de dados relacionais podem utilizar o
mecanismo de bloqueio de itens de dados. O tipo de bloqueio que pode realizar leitura
sobre um item de dados, mas não escrever sobre ele, é denominado
A compartilhado.
B classificado.
C estruturado.
D protocolar.
E verificado.
61. Ano: 2014 Banca: FCC Órgão: TJ-AP Prova: Analista Judiciário - Banco de
Dados - DBA
Uma propriedade importante quando se considera a recuperação de um banco de
dados é constituída pelos chamados pontos de verificação (checkpoints). Um
checkpoint consiste de um registro, cuja função é indicar que
A o banco de dados sofreu uma paralisação programada para manutenção.
B houve uma falha no conjunto de discos utilizado para armazenamento dos dados.
C houve uma falha de comunicação entre as máquinas servidora e cliente.
D o banco de dados passou por uma operação de backup completo.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
121
124
E todas as transações encerradas anteriormente ao checkpoint já foram confirmadas.
62. Ano: 2014 Banca: UFG Órgão: UEAP Prova: Analista de TI - Banco de Dados
As operações refazer (REDO) e desfazer (UNDO) são usadas no processo de
recuperação de banco de dados. Na recuperação baseada em atualização adiada, os
dados atualizados por uma transação não podem ser gravados no banco de dados
antes do commit da transação. O algoritmo para esse tipo de recuperação é
denominado
A UNDO/REDO.
B UNDO/NO-REDO.
C NO-UNDO/NO-REDO.
D NO-UNDO/REDO.
63. Ano: 2010 Banca: FCC Órgão: TCE-SP Prova: Agente da Fiscalização
Financeira - Produção e Banco de Dados
Tratando-se do algoritmo ARIES, quando o gerenciador de recuperação é invocado
após uma falha, o reinício se procede em fases. A identificação das páginas sujas no
buffer pool e das transações ativas no momento da falha pertence à fase de
A preempção.
B refazer.
C lock.
D análise.
E correção.
64. Ano: 2010 Banca: FCC Órgão: TCE-SP Prova: Agente da Fiscalização Financeira
- Produção e Banco de Dados
As fases de operação do algoritmo ARIES são em número de
A 1
B 2
C 3
D 4
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
122
124
E 5
65. Ano: 2010 Banca: FCC Órgão: TCE-SP Prova: Agente da Fiscalização
Financeira - Produção e Banco de Dados
O sistema ARIES é considerado um adequado mecanismo de recuperação de BD, pois
I. fornece alto grau de paralelismo.
II. usa a abordagem não-tomar-memória e forçar escrita.
III. reduz a sobrecarga na operação de registro no histórico-de-ocorrências.
IV. minimiza o tempo de recuperação.
Está correto o que consta em
A I e II, apenas.
B I e III, apenas.
C I, III e IV, apenas.
D II, III e IV, apenas.
E I, II, III e IV.
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
123
124
GABARITO
1. B
2. E
3. D
4. A
5. B
6. D
7. E
8. A
9. D
10. D
11. B
12. B
13. E
14. D
15. B
16. D
17. B
18. A
19. C
20. C
21. C
22. E
23. E
24. C
25. C
26. C
27. B
28. D
29. D
30. C
31. E
32. D
33. A
34. B
35. D
36. C
37. D
38. C
39. A
40. B
41. E
42. B
43. E
44. A
45. B
46. E
47. E
48. A
49. C
50. C
51. D
52. E
53. D
54. B
55. C
56. C
57. C
58. E
59. C
60. A
61. E
62. D
63. D
64. C
65. C
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
CONSIDERAÇÕES FINAIS
Chegamos ao final da nossa aula onde abordamos os assuntos relacionados
a transações e controlede concorrência. Falamos ainda sobre o log de transações
e protocolos de bloqueio. Por fim, tivemos uma apresentação dos conceitos
relacionados a recuperação após falha.
Esperamos que você tenha gostado e aprendido bastante sobre o assunto.
Até a próxima!
Thiago Cavalcanti
Equipe de TI do Estratégia Concursos, Thiago Rodrigues Cavalcanti
Aula 04
Banco de Dados p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118