Buscar

APOSTILA - Banco de dados aplicados

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 91 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 91 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 91 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Banco de Dados 
Aplicados
Professora Dra. Gisele Alves Santana
Reitor 
Prof. Ms. Gilmar de Oliveira
Diretor de Ensino
Prof. Ms. Daniel de Lima
Diretor Financeiro
Prof. Eduardo Luiz
Campano Santini
Diretor Administrativo
Prof. Ms. Renato Valença Correia
Secretário Acadêmico
Tiago Pereira da Silva
Coord. de Ensino, Pesquisa e
Extensão - CONPEX
Prof. Dr. Hudson Sérgio de Souza
Coordenação Adjunta de Ensino
Profa. Dra. Nelma Sgarbosa Roman 
de Araújo
Coordenação Adjunta de Pesquisa
Prof. Dr. Flávio Ricardo Guilherme
Coordenação Adjunta de Extensão
Prof. Esp. Heider Jeferson Gonçalves
Coordenador NEAD - Núcleo de 
Educação à Distância
Prof. Me. Jorge Luiz Garcia Van Dal
Web Designer
Thiago Azenha
Revisão Textual
Beatriz Longen Rohling
Caroline da Silva Marques
Carolayne Beatriz da Silva Cavalcante
Geovane Vinícius da Broi Maciel
Jéssica Eugênio Azevedo
Kauê Berto
Projeto Gráfico, Design e
Diagramação
André Dudatt
Carlos Firmino de Oliveira
2022 by Editora Edufatecie
Copyright do Texto C 2022 Os autores
Copyright C Edição 2022 Editora Edufatecie
O conteúdo dos artigos e seus dados em sua forma, correçao e confiabilidade são de responsabilidade 
exclusiva dos autores e não representam necessariamente a posição oficial da Editora Edufatecie. Per-
mitido o download da obra e o compartilhamento desde que sejam atribuídos créditos aos autores, mas 
sem a possibilidade de alterá-la de nenhuma forma ou utilizá-la para fins comerciais. 
 Dados Internacionais de Catalogação na Publicação - CIP 
 
S235b Santana, Gisele Alves 
 
 Banco de dados aplicados / Gisele Alves Santana 
 Paranavaí: EduFatecie, 2022. 
 86 p.: il. Color. 
 
 
 
1. Banco de dados. 2. Recuperação da informação. 3. 
 Recuperação de dados. 4.. Segurança de sistemas. I. Centro 
 Universitário UniFatecie. II. Núcleo de Educação a Distância. 
 III. Título. 
 
 CDD: 23 ed. 005.74 
 Catalogação na publicação: Zineide Pereira dos Santos – CRB 9/1577 
 
 
 
UNIFATECIE Unidade 1 
Rua Getúlio Vargas, 333
Centro, Paranavaí, PR
(44) 3045-9898
UNIFATECIE Unidade 2 
Rua Cândido Bertier 
Fortes, 2178, Centro, 
Paranavaí, PR
(44) 3045-9898
UNIFATECIE Unidade 3 
Rodovia BR - 376, KM 
102, nº 1000 - Chácara 
Jaraguá , Paranavaí, PR
(44) 3045-9898
www.unifatecie.edu.br/site
As imagens utilizadas neste
livro foram obtidas a partir 
do site Shutterstock.
AUTORA
Professora Dra. Gisele Alves Santana
● Doutora em Engenharia Elétrica pela UTFPR (Universidade Tecnológica Federal 
do Paraná). 
● Mestra em Engenharia Elétrica pela UTFPR (Universidade Tecnológica Federal 
do Paraná). 
● Graduada em Análise e Desenvolvimento de Sistemas pela UTFPR (Universidade 
Tecnológica Federal do Paraná). 
● Técnica em Eletrotécnica pela UTFPR (Universidade Tecnológica Federal do 
Paraná). 
● Pesquisadora do grupo de Telecom da UEL (Universidade Estadual de Londrina).
 
Ampla experiência como professora do ensino superior nas modalidades EAD e 
presencial para cursos de Engenharias e Tecnologias das instituições Unopar, Pitágoras, 
Anhanguera e UTFPR. Desenvolvedora de livros e materiais didáticos. Revisora convidada 
do “Transactions on Emerging Telecommunications Technologies”. Membro honorário da 
“London Journals Press”.
CURRÍCULO LATTES: http://lattes.cnpq.br/8230832906458617
http://lattes.cnpq.br/8230832906458617
APRESENTAÇÃO DO MATERIAL
Seja muito bem-vindo (a)!
Prezado (a) aluno (a), se você se interessou pelo assunto desta disciplina, isso 
já é o início de uma grande jornada que vamos trilhar juntos a partir de agora. Proponho, 
junto com você, construir nosso conhecimento sobre os conceitos fundamentais de Banco 
de Dados Aplicados. 
Na unidade I começaremos a nossa jornada pelo conceito de transações e suas 
principais propriedades. Geralmente, em um Banco de Dados existem várias transações 
ocorrendo ao mesmo tempo, e por este motivo, deve-se controlar a ordem de execução 
dessas transações para assegurar que as propriedades não sejam violadas. Neste contexto, 
o escalonamento de transações impõe uma ordem de execução das transações, com o 
objetivo de garantir a consistência e a integridade dos dados do Banco de Dados.
Já na unidade II vamos ampliar nossos conhecimentos sobre os mecanismos 
de controle de concorrência das transações. Como principais técnicas de controle de 
concorrência temos os bloqueios, que podem ser binários, múltiplos ou de duas fases. O 
objetivo principal dos bloqueios é garantir que os dados de um Banco de Dados apresentem 
consistência e integridade após a execução de várias transações ao mesmo tempo.
Depois, na unidade III vamos conhecer os principais tipos de sistemas de 
recuperação, como a técnica de arquivos de log e checkpoints. Esses sistemas garantem 
que, mesmo em caso da ocorrência de algumas falhas, os dados armazenados no Banco 
de Dados possam ser recuperados.
Finalmente, na unidade IV são apresentados os principais mecanismos usados 
para garantir a segurança de um Banco de Dados. Geralmente, a criptografia e o controle 
de acesso são empregados para assegurar a confidencialidade e integridade dos dados 
armazenados. Além disso, nesta unidade você vai conhecer alguns tipos de ameaças que 
podem comprometer a segurança de um Banco de Dados.
Aproveito para reforçar o convite a você, para junto conosco percorrer esta jornada 
de conhecimento e multiplicar os conhecimentos sobre tantos assuntos abordados em 
nosso material. Esperamos contribuir para seu crescimento pessoal e profissional. 
Muito obrigada e bons estudos!
SUMÁRIO
UNIDADE I ...................................................................................................... 4
Escalonamento de Transações
UNIDADE II ................................................................................................... 26
Controle de Concorrência
UNIDADE III .................................................................................................. 46
Sistemas de Recuperação
UNIDADE IV .................................................................................................. 65
Segurança
3
Plano de Estudo:
● Estados das transações, propriedades ACID e Comandos em SQL;
● Execuções Simultâneas;
● Escalonamento.
Objetivos da Aprendizagem:
● Conceituar e contextualizar as propriedades das transações;
● Compreender os tipos de escalonamento utilizados
para a execução simultânea de transações;
● Estabelecer a importância da execução simultânea de transações.
UNIDADE I
Escalonamento 
de Transações
Professora Doutora Gisele Alves Santana
4UNIDADE I Escalonamento de Transações
INTRODUÇÃO
Em um Sistema de Banco de Dados, no momento em que ações como atualização, 
inserção ou remoção de registros são realizadas, o resultado destas ações é instantâneo. 
Isso significa, por exemplo, que ao executar um script SQL e a mensagem de confirmação 
surgir na tela, a ação já foi executada e confirmada. 
Porém, em muitos casos é necessário se trabalhar com mais de um comando 
que dependerá de um outro comando para ser realizado. Imagine, por exemplo, quando 
é necessário gravar os dados em uma tabela, mas antes é preciso gravar o registro em 
uma outra tabela. Se ao se gravar os dados na primeira tabela acontecer algo de errado, 
o registro da segunda tabela poderá ficar inconsistente. Sendo assim, é necessário que os 
dados da primeira tabela sejam salvos com sucesso para que depois os dados da segunda 
tabela possam ser salvos também. 
Por essa razão, para garantir que todo o processo aconteça sem qualquer tipo de 
inconsistência, é que existem as transações. Seria muito conveniente se você pudesse 
assegurar que a sequência de ações elementares tivesse a propriedade de que “ou todas 
as ações elementares executam com sucesso ou nenhuma delas é executada”. Em outraspalavras, o ideal seria estender o conceito de atomicidade e consistência de maneira a 
envolver também sequências de ações elementares, como: adições, atualizações etc. 
Geralmente, várias transações que possuem algumas ações são executadas ao 
mesmo tempo em um Banco de Dados. Considerando esse contexto, qual seria a ordem 
correta para a execução de várias transações? Como garantir a consistência dos dados 
que são utilizados por várias transações ao mesmo tempo?
Essas e outras questões serão abordadas na Unidade I desta apostila.
5UNIDADE I Escalonamento de Transações
1. ESTADOS DAS TRANSAÇÕES, PROPRIEDADES ACID E COMANDOS EM SQL
Normalmente, os Sistemas de Gerenciamento de Banco de Dados (SGBDs) 
permitem que várias transações sejam executadas simultaneamente, isso pode causar 
várias complicações, como por exemplo, a inconsistência de dados (ELMASRI e NAVATHE, 
2011). Então, deve-se garantir a consistência com a execução simultânea das transações, 
ou seja, as transações precisam ser executadas de acordo com alguma ordem. 
Para assegurar a ordem de execução das transações em um BD, deve-se utilizar o 
escalonamento, que indica a sequência cronológica de execução das transações. Para que 
um bom plano de escalonamento seja implementado, deve-se conhecer primeiramente os 
conceitos fundamentais sobre transações, principalmente as propriedades que devem ser 
respeitadas para que o BD apresente um correto funcionamento.
Em um SGBD, uma transação é considerada como uma unidade única de lógica ou de 
trabalho, que na maioria das vezes é composta por várias operações ou ações elementares 
(ELMASRI e NAVATHE, 2011). Qualquer cálculo lógico realizado de modo consistente em 
um BD é conhecido como transação. Por exemplo, para a operação de transferência de 
dinheiro de uma conta bancária ser completa, é necessário que seja realizada a subtração 
do valor a ser transferido de uma conta e a adição desta mesma quantia à outra conta.
Então, uma transação consiste em validar uma sequência de comandos que são 
executados no Banco de Dados, tendo como ideia básica de que todos os passos da 
sequência sejam validados e somente no final do processo (com tudo certo) é que as 
alterações devem ser efetivamente implementadas no BD.
6UNIDADE I Escalonamento de Transações
Uma transação simboliza uma unidade de trabalho executada dentro de um 
SGBD, que deve ser tratada de maneira coerente e confiável, independente de outras 
transações (MEDEIROS, 2013). 
Uma das principais vantagens das transações diz respeito à alta eficácia quando se 
tem a necessidade de trabalhar com uma grande quantidade de sequência de comandos, 
pois as transações garantem que somente depois de todos os passos serem executados 
com sucesso é que o BD sofrerá alterações.
Geralmente, uma transação representa qualquer alteração em um banco de dados, 
sendo seus propósitos principais (ELMASRI e NAVATHE, 2011):
● Fornecer unidades de trabalho confiáveis que permitam a recuperação de falhas;
● Manter o banco de dados consistente mesmo em casos de falha do sistema; 
● Proporcionar isolamento entre programas que acessam o Banco de Dados 
simultaneamente. 
Basicamente, uma transação possui algumas operações básicas, sendo elas 
(MEDEIROS, 2013):
1.1 read 
● Operação de leitura.
● Transfere um item de dado do BD para um buffer local pertencente à transação 
que executou essa operação.
1.2 write
● Operação de escrita.
● Transfere um item de dado do buffer local da transação que executou essa 
operação de volta ao Banco de Dados (atualiza o BD).
1.3 commit
● Efetiva a transação corrente. 
1.4 rollback
● Aborta a transação corrente. 
Suponha que um cliente de uma agência bancária deseja realizar a transferência de 
uma certa quantia de dinheiro de sua conta-correte para uma outra conta. Essa operação 
deve ser única do ponto de vista do cliente, mas dentro do sistema de Banco de Dados, ela 
consiste em várias operações, como: adições e subtrações. 
7UNIDADE I Escalonamento de Transações
Em uma transação, é fundamental que todas essas operações ocorram ou que, em 
caso de alguma falha, nenhuma delas seja executada (ELMASRI e NAVATHE, 2011). Por 
exemplo, seria inaceitável se em uma das contas fosse debitada uma quantia de dinheiro, 
mas na outra conta a quantia não fosse creditada. 
Para o usuário, essa coleção de operações deve aparecer como uma única 
unidade, e assim deve ser a transação: executada em sua totalidade ou não executada. 
Se uma transação começa a ser executada, mas falha por um motivo qualquer, quaisquer 
mudanças que a transação possa ter feito no BD devem ser desfeitas. 
Para que as condições citadas anteriormente sejam respeitadas, as transações 
devem respeitar algumas propriedades básicas, sendo as mesmas denominadas pelo 
acrônimo ACID: Atomicidade, Consistência, Integridade e Durabilidade (ELMASRI e 
NOVATHE, 2011), conforme ilustrado na Figura 1:
FIGURA 1 – PROPRIEDADES ACID
 
Fonte: Adaptado de: ELMASRI e NOVATHE (2011).
Em relação à atomicidade, cada transação deve ser executada em sua totalidade, 
e não somente partes da mesma (MEDEIROS, 2013). É a propriedade “tudo ou nada”, ou 
seja, ou a transação é executada na sua totalidade, ou então nada é executado. No caso 
da ocorrência de uma falha durante a execução de uma transação, o sistema de BD deve 
voltar ao mesmo estado em que estava antes do início dessa transação.
Na propriedade de consistência, todas as regras e restrições definidas no banco 
de dados devem ser obedecidas, por exemplo, relacionamentos por chaves estrangeiras 
e checagem de valores para campos restritos ou únicos, devem ser obedecidos para que 
uma transação possa ser completada com sucesso e consistência.
Já a propriedade de isolamento garante que a execução de uma transação não 
seja afetada por outras transações que estejam executando ao mesmo tempo (ELMASRI 
e NAVATHE, 2011). Em outras palavras, deve-se ter a impressão de que cada transação 
seja executada uma de cada vez, como se todos os recursos estivessem disponíveis para 
aquela única transação. 
8UNIDADE I Escalonamento de Transações
Cada transação deve funcionar completamente à parte de outras transações, o 
princípio é que nenhuma outra transação, operando no mesmo sistema, possa interferir no 
funcionamento da transação corrente. 
Além disso, as modificações realizadas por uma transação em um BD não devem 
ser visíveis por outras transações até que ela seja efetivada com sucesso. Dessa maneira, 
outras transações não podem visualizar os resultados parciais das operações de uma 
transação em andamento, essa é a característica principal da propriedade de isolamento. 
Por sua vez, a propriedade de durabilidade assegura que os efeitos de uma 
transação efetivada ou confirmada não sejam desfeitos (MEDEIROS, 2013). Para garantir 
que o sistema do banco de dados não perca uma transação completada com sucesso a partir 
de uma falha posterior, as ações de uma transação precisam persistir entre as falhas. Além 
disso, os resultados de uma transação só podem ser desfeitos por outra transação e uma vez 
executada com sucesso, as alterações feitas por uma transação devem persistir, mesmo se 
houver falhas subsequentes no sistema. Essa propriedade é conhecida como durabilidade. 
Para exemplificar a importância de se garantir as propriedades das transações, 
observe a Figura 2 e suponha que T1 seja uma transação que transfere R$ 50,00 da 
conta A para a conta B.
FIGURA 2 – EXEMPLO DE TRANSAÇÃO
Fonte: A autora (2021).
Suponha que antes da execução de da transação T1 a conta A tenha o saldo de 
R$ 1.000,00 e a conta B R$ 2.000,00. Durante a execução de T1 acontece alguma falha 
que impede que a transação seja executada com sucesso. Suponha também que a falha 
ocorreu depois da operação write(A) e antes da operação write(B). 
9UNIDADE I Escalonamento de Transações
Perceba que nesse caso, os valores finais das contas A e B seriamR$ 950,00 
e RS 2000,00, sendo que o sistema “destruiu” R$ 50,00 como resultado da falha. 
Consequentemente, as propriedades de atomicidade e consistência não foram respeitadas, 
pois a soma de A+B deveria permanecer inalterada após a execução da transação, ou seja, 
o BD não poderia ter “destruído” ou “criado” dinheiro. Além disso, a transação deve ser 
atômica (ou todas as operações são executadas ou nada é realizado).
Para que essa situação não ocorra, o sistema de BD deve armazenar os valores 
antigos dos dados em que uma transação realiza uma escrita ou atualização. Assim, no 
caso de uma transação não completar sua execução, o sistema de BD deve restaurar os 
valores antigos dos dados (como se a transação nunca tivesse ocorrido).
Em relação à durabilidade, quando a execução da transação termina com 
sucesso e o usuário que iniciou a transação foi notificado de que a transferência de 
fundos aconteceu, é preciso que nenhuma falha no sistema resulte em perda dos dados. 
Então, a durabilidade deve garantir que quando uma transação é executada com sucesso, 
todas as atualizações que ela executou no BD persistam, mesmo que haja uma falha no 
sistema após a finalização da transação.
Em relação às falhas que podem acontecer durante a execução de uma transação, 
pode-se citar (ELMASRI e NAVATHE, 2011):
● Falha por hardware, software ou rede;
● Erro durante a execução de operações (por exemplo: estouro de variáveis);
● Condições de exceção detectadas pela transação (por exemplo: saldo insuficiente 
em conta);
● Falta de energia;
● Etc.
Como visto anteriormente, uma transação é efetivada corretamente quando todas 
as suas operações são executadas respeitando as propriedades ACID. 
Mas, quais são os estados de uma transação? 
No modelo transacional clássico, uma transação sempre termina (com ou sem 
falha), possuindo os seguintes estados (ELMASRI e NAVATHE, 2011): é um programa 
1.5 Ativa (estado inicial)
● A transação permanece nesse estado enquanto está executando.
10UNIDADE I Escalonamento de Transações
1.6 Parcialmente confirmada 
● Depois que a instrução final foi executada.
1.7 Falha
● Depois de descoberta que a execução normal não pode mais prosseguir.
1.8 Abortada
● Depois que a transação foi revertida e o BD foi restaurado ao seu estado 
anterior antes do início da transação.
1.9 Confirmada
● Após o término bem sucedido.
A Figura 3 ilustra todos os estados possíveis de uma transação
FIGURA 3 – ESTADOS DAS TRANSAÇÕES
 
Fonte: Adaptado de: ELMASRI e NOVATHE (2011).
Basicamente, os estados funcionam da seguinte maneira (ELMASRI e NAVATHE, 2011):
● Uma transação começa no estado Ativo. 
● Quando termina sua última instrução ou operação, entra no estado Parcialmente 
Efetivada. Nesse ponto, a transação completou sua execução, mas ainda pode ser 
abortada (a saída ainda pode estar na memória principal). 
● Quando a última informação for gravada em disco, a transação entra no estado 
Efetivada. 
● Uma transação entra no estado de Falha depois que o sistema determina que a mesma 
não pode mais prosseguir com sua execução normal (transação precisa ser revertida). 
● Depois, em quaisquer dos dois casos anteriores, a transação entra no estado 
Encerrada.
11UNIDADE I Escalonamento de Transações
2. EXECUÇÕES SIMULTÂNEAS
Até agora, foram vistos os conceitos básicos sobre transações, mas em um SGBD, 
as transações não são executadas de maneira sequencial (uma de cada vez), mas sim de 
maneira concorrente (várias transações executando ao mesmo tempo).
Em um banco de dados multiusuário, que permite que vários usuários acessem os 
dados do banco simultaneamente, tem-se a execução simultânea ou concorrente de várias 
transações (MEDEIROS, 2013). 
Normalmente, os SGBDs permitem que várias transações sejam executadas ao 
mesmo tempo, onde se tem várias transações ocorrendo simultaneamente, isso pode 
causar várias complicações, como por exemplo, a inconsistência de dados. Garantir a 
consistência com a execução simultânea exige um trabalho extra, sendo muito mais fácil 
insistir que as transações sejam executadas serialmente (uma de cada vez) (ELMASRI e 
NAVATHE, 2011). Porém, garantir a concorrência proporciona melhor utilização de recursos 
e tempo de processamento (MEDEIROS, 2013).
Alguns problemas que podem ser gerados pela ocorrência de transações 
simultâneas são (MEDEIROS, 2013):
● Atualizações perdidas;
● Atualização temporária ou leitura suja: a consulta retorna dados gerados por 
outra transação, mas que ainda não foram confirmados por esta transação;
● Resumo incorreto: a consulta retorna dados para calcular uma agregação, mas 
o resumo resultante está desatualizado;
● Leitura não repetitiva: a consulta não repete o mesmo resultado, pois os dados 
foram alterados por outra transação.
12UNIDADE I Escalonamento de Transações
Para evitar esses e outros problemas, deve-se implementar algum mecanismo que 
permita que as transações ocorram ao mesmo tempo, de maneira consistente, e que exista 
o isolamento entre as mesmas. 
Nesse sentido, as diversas operações das transações precisam ser executadas em 
alguma ordem, essa ordem é chamada de escalonamento ou plano (schedule) que determina 
a ordem cronológica de execução das transações, ou seja, a sequência (ordenação) em que 
as operações das transações devem ser executadas. O escalonamento é fundamental para 
permitir o uso mais eficiente dos recursos computacionais (ELMASRI e NAVATHE, 2011). 
Para entender de maneira mais prática a execução simultânea ou concorrente das 
transações, imagine duas transações T1 e T2, ilustradas na Figura 4. A Transação T1 é 
responsável por transferir a quantia de R$100,00 da conta A para a conta B. Já a transação 
T2 transfere 10% do saldo da conta A para a conta B. Agora, suponha que os valores 
iniciais das contas sejam:
● Conta A: R$ 1.000,00
● Conta B: R$ 2.000,00
FIGURA 4 – EXEMPLO DE EXECUÇÃO SIMULTÂNEA
 
Fonte: A autora (2021).
No escalonamento, deve-se decidir em qual ordem as operações de cada transação 
devem ser executadas. Para esse exemplo, vamos analisar dois casos: 
● Caso 1: Execução de T1 e depois T2;
● Caso 2: Execução de T2 e depois T1.
Você acha que os valores finais de cada conta serão iguais nos dois casos?
Vamos conferir!
13UNIDADE I Escalonamento de Transações
A Figura 5 ilustra o primeiro caso, no qual as duas transações (T1 e T2) são 
executadas, uma de cada vez, nesta ordem. Primeiramente, em T1 é lido (read(A)) o valor 
inicial (R$ 1.000,00) da conta A e depois é subtraído R$ 100,00 deste valor, ficando a conta 
A com R$ 900,00 (o comando write(A) atualiza o novo valor de A). Após, o valor inicial da 
conta B (R$ 2,000,00) é lido através do comando read(B), e a este valor é adicionado R$ 
100,00. Finalmente, o novo valor da conta B (R$ 2.100,00) é atualizado através do comando 
write(B) e a transação T1 termina sua execução.
Após o término de T1, a transação T2 inicia sua execução. Primeiramente, é lido o 
valor da conta A (read(A)), que agora tem o saldo de R$ 900,00, depois uma variável auxiliar 
(aux) armazena 10% deste valor, que é subtraído da conta A, e então atualizada (write(A)). 
Na sequência, é lido o valor do saldo atual da conta B (R$ 2.100,00) e então, adicionado 
o valor de 10% (R$ 90,00) que foi subtraído da conta A. Repare que agora o valor final da 
conta B é atualizado através do comando write(B). 
Assim, com essa ordem de execução, tem-se que as contas ficaram com os 
seguintes saldos finais:
● Conta A: R$ 810,00
● Conta B: R$ 2.190,00
FIGURA 5 – EXECUÇÃO SIMULTÂNEA (CASO 1)
 
Fonte: A autora (2021).
A Figura 6 ilustra o segundo caso, no qual as transações (T2 e T1) são executadas, 
uma de cada vez, nesta ordem. Primeiramente, na transação T2 é lido (read(A)) o valor 
inicial (R$ 1.000,00) da conta A e depois é calculado 10% deste valor, sendo o resultado 
armazenado em uma variável auxiliar (aux). Após, o valor de aux é subtraído do saldo da 
conta A, então o saldodesta conta é atualizado (write(A)) para R$ 900,00.
14UNIDADE I Escalonamento de Transações
Em seguida, é lido o valor da conta B (write(B)) e à este valor é adicionado os 10% 
que foram retirados da conta A, atualizando então o valor da conta B para R$ 2.100,00. 
Nesse momento, a transação T2 é finalizada e T1 é iniciada com a leitura do valor da 
conta A (read(A)), que agora possui saldo de R$ 900,00. A próxima operação subtrai 100,00 
desse valor e depois atualiza o novo valor da conta (write(A)). Após, é lido o valor da conta B 
(read(B)), que possui saldo de R$ 2.100,00. Então, é adicionado R$ 100,00 ao saldo, e o novo 
valor da conta B é atualizado (write(B)) para R$ 2.200,00. Assim, a transação T1 é finalizada.
Perceba que com essa ordem de execução, as contas ficaram com os seguintes 
saldos finais:
● Conta A: R$ 800,00
● Conta B: R$ 2.200,00
FIGURA 6 – EXECUÇÃO SIMULTÂNEA (CASO 2)
 
Fonte: A autora (2021).
Respondendo à pergunta anterior, a ordem de execução das transações afetou o 
resultado, já que os valores finais das contas correntes foram diferentes nos dois casos. 
Porém, a atomicidade foi respeitada, pois a soma do saldo das duas contas (A+B = 3.000,00) 
foi preservada para ambos os casos, assim como a propriedade de consistência, já que as 
transações não criaram ou destruíram dinheiro durante suas execuções.
15UNIDADE I Escalonamento de Transações
3. ESCALONAMENTO
Os planos de execução são utilizados para definir a ordem de execução das transações. 
Basicamente, existem dois tipos principais de planos (ELMASRI e NAVATHE, 2011):
● Planos seriais;
● Planos não seriais.
Nos planos seriais, todas as operações das transações são executadas 
sequencialmente (ELMASRI e NAVATHE, 2011). Cada plano (schedule) serial consiste em 
uma sequência de instruções de várias transações, em que as instruções pertencentes a 
uma ÚNICA transação aparecem juntas.
Considere a Figura 7, que apresenta dois planos seriais de execução. No Plano 1, 
a transação T1 é executada e após sua finalização, a transação T2 inicia sua execução. 
Repare que todos os comandos de T1 são executados e só então a transação T2 é iniciada, 
executando assim todas as suas operações. Já no Plano 2, a transação T2 é executada 
primeiramente e após sua finalização, é dado início à execução das operações da tran-
sação T1, ocorrendo tudo de maneira sequencial. Dessa maneira, os Planos 1 e 2 são 
considerados planos seriais.
16UNIDADE I Escalonamento de Transações
FIGURA 7 – EXEMPLO DE PLANOS SERIAIS
 
Fonte: A autora (2021).
Por outro lado, nos planos não seriais as operaçoes das transações são executadas 
simultaneamente (ELMASRI e NAVATHE, 2011), ou seja, pode-se ter a execução de algumas 
operações de uma transação T1, depois algumas operações de uma transação T2, depois 
outras de T1 e o restante das operações de T2, por exemplo. A Figura 8 apresenta dois 
planos de execução não serial de transações.
FIGURA 8 – EXEMPLO DE PLANOS NÃO SERIAIS
 
Fonte: A autora (2021).
Como visto anteriormente, supondo os mesmos valores iniciais para as contas A e 
B, dependendo do tipo de plano adotado, os saldos finais de cada conta serão diferentes.
17UNIDADE I Escalonamento de Transações
Para garantir que os resultados finais sejam aqueles desejados, o ideal seria que 
os planos garantissem a consistência dos dados. Para tal, é utilizada a técnica chamada 
de serialidade ou escalonamento de planos, que identifica quais planos são corretos 
quando há intercalação das operações das transações. As operações significativas para o 
escalonamento são (ELMASRI e NAVATHE, 2011):
●	read;
●	write.
A ideia é fazer com que planos não seriais se tornem seriais, pois esses últimos são 
mais fáceis de serem controlados (MEDEIROS, 2013). Porém, não são todas as operações 
que podem ser trocadas de qualquer maneira, pois isso pode causar algum conflito. Assim, 
são necessárias algumas regras.
Considere um Plano P com duas operações consecutivas I1 e I2 das transações T1 e T2:
● Se I1 e I2 se referem a diferentes itens de dados, então elas podem ser invertidas 
sem afetar os resultados;
● Se I1 e I2 se referem ao mesmo item de dado, então a ordem das duas pode importar.
Para melhor entendimento, considere os seguintes casos (ELMASRI e NAVATHE, 2011):
a) I1 = read(A), I2 = read(A)
● A ordem de I1 e I2 não importa, pois, o mesmo valor de A é lido por T1 e T2 
(independente da ordem). 
● Então, as operações I1 e I2 podem ser trocadas.
b) I1 = read(A), I2 = write(A)
● Se I1 vem antes de I2, então T1 não lê o valor de A que é escrito por T2 na 
instrução I2.
● Se I2 vem antes de I1, então T1 lê o valor de A que é escrito por T2 na instrução I2.
c) Ii = write(A), Ij = read(A)
● A ordem de I1 e I2 importa.
● Então, não pode trocar as operações.
d) I1= write(A), Ij2 = write(A)
● Como as duas operações são de escrita, a ordem a ordem dessas instruções 
não afeta T1 ou T2.
● Porém, o valor obtido pela próxima instrução de read(A) é afetada, pois o 
resultado apenas da última das duas instruções write é preservado no BD.
18UNIDADE I Escalonamento de Transações
RESUMINDO: Somente no caso em que se tem instruções de leitura (read), a 
ordem de sua execução não importa.
Então, existe CONFLITO quando operações de diferentes transações sobre o MESMO 
ITEM DE DADO são executadas e PELO MENOS UMA dessa operações for WRITE.
Considere o exemplo da Figura 9, que apresenta duas transações T1 e T2.
FIGURA 9 – EXEMPLO DE ESCALONAMENTO
 
Fonte: A autora (2021)
Para esse caso, tem-se que:
3.1 write(A) de T1 conflita com read(A) de T2.
● Então, não pode inverter.
3.2 write(A) de T2 não conflita com read(B) de T1.
● Então, pode inverter.
Assim, com as inversões de write((A) de T2 com read(B) de T1, tem-se a primeira 
inversão, observada na Figura 10.
FIGURA 10 – ESCALONAMENTO (1ª INVERSÃO)
 
Fonte: A autora (2021).
19UNIDADE I Escalonamento de Transações
Além da inversão já realizada, existem outras situações possíveis de inversões, 
sendo elas:
a) Inverter a instrução read(B) de T1 por read(A) de T2.
b) Inverter a instrução write(B) de T1 por write(A) de T2.
c) Inverter a instrução write(B) de T1 por read(A) de T2.
Dessa maneira, a situação final do escalonamento ou serialização do plano com o 
passo-a-passo das inversões pode ser observado nas Figuras 11, 12 e 13. Repare que com 
a técnica de serialização, o plano com as duas transações se tornou serial.
FIGURA 11 – ESCALONAMENTO (2ª INVERSÃO)
 
Fonte: A autora (2021).
FIGURA 12 – ESCALONAMENTO (3ª INVERSÃO)
 
Fonte: A autora (2021).
FIGURA 13 – ESCALONAMENTO (4ª INVERSÃO)
 
Fonte: A autora (2021).
20UNIDADE I Escalonamento de Transações
Até aqui, as falhas não foram tratadas, porém, se uma transação falhar, é necessário 
desfazer o efeito da mesma para garantir a propriedade de atomicidade. Para isso, é 
necessário substituir restrições sobre os tipos de planos permitidos no sistema. Nesse caso, 
é desejável que um sistema de BD possua planos que sejam recuperáveis e não em cascata.
Considere o plano da Figura 14 com duas transações:
FIGURA 14 – EXEMPLO DE PLANO NÃO RECUPERÁVEL
 
Fonte: A autora (2021).
Perceba que T2 foi confirmada (commit) antes de T1, agora, suponha que T1 falhe 
antes de ser confirmada. Como T2 já leu o valor do item de dado A escrito por T1, o correto 
seria abortar T2. Porém, T2 já foi confirmada e não pode ser abortada, sendo impossível a 
recuperação da falha de T1. Com a operação de commit acontecendo imediatamente após 
read(A) na transação T2, essa situação é considerada um exemplo de plano não recuperável.
Com o objetivo de evitar essa situação indesejável, para cada par de transações 
(T1 e T2), tal que T2 leia um item de dado previamente escrito por T1, a operação de 
commit de T1 deve aparecer antes da operação commit de T2.
Agora, considere um plano com três transações, apresentado na Figura 15: 
FIGURA 15 – EXEMPLO DE ROLLBACK EM CASCATAFonte: A autora (2021).
21UNIDADE I Escalonamento de Transações
Perceba que T1 escreve um valor de A que é lido por T2. Por sua vez, T2 escreve 
um valor de A que é lido por T3. Agora, suponha que nesse ponto, T1 falhe, dessa maneira, 
T1 precisa ser revertida, porém, T2 depende de T1, então T2 também precisa ser revertida. 
Como T3 depende de T2, T3 também precisa ser revertida, essa situação é conhecida 
como rollback em cascata e deve ser evitada em um sistema de BD. 
Assim, em um BD deve-se tentar implementar apenas planos que possam 
ser recuperáveis ou aqueles que não apresentem rollbacks em cascata (ELMASRI e 
NAVATHE, 2011).
Na próxima unidade, você irá aprender que existem alguns protocolos ou conjunto 
de regras que podem assegurar a serialidade dos planos de execução das transações, 
garantindo assim, a consistência e atomicidade dos dados.
22UNIDADE I Escalonamento de Transações
SAIBA MAIS
A linguagem SQL é muito utilizada para a definição e manipulação de dados de um modelo 
relacional. Com essa linguagem é possível realizações operações de manipulação de dados 
de um BD, como: criação de tabelas, seleção de atributos, alteração de dados de uma 
tabela etc. No link a seguir, você pode aprofundar seus estudos sobre a implementação de 
transações utilizado SQL, conhecendo a sintaxe e estrutura de cada bloco de transações: 
Fonte: DEVMEDIA. Transações SQL Server. Disponível em: https://www.devmedia.com.br/transacoes-
sql-server/15331. Acesso em: 06 out. 2021.
REFLITA
É muito importante que todas as ações de uma transação sejam executadas para garantir 
a atomicidade e a consistência de um Banco de Dados. No caso da ocorrência de uma 
falha, se a transação ainda não tiver sido efetivada, todas as ações já implementadas 
por ela devem ser desfeitas. 
Então, todo o tempo e custo computacional empregado para a realização dessas ações 
foi perdido. Nesse sentido, por que o SGBD não implementa um mecanismo para evitar 
esse desperdício de tempo de computação? 
Fonte: A autora (2021).
https://www.devmedia.com.br/transacoes-sql-server/15331
https://www.devmedia.com.br/transacoes-sql-server/15331
23UNIDADE I Escalonamento de Transações
CONSIDERAÇÕES FINAIS
Nesta Unidade, você aprendeu os conceitos básicos sobre transações, 
principalmente a importância de garantir que as propriedades ACID sejam respeitadas na 
execução das transações. 
E para melhor aproveitamento dos recursos computacionais e menor tempo 
de execução, as transações devem executar de maneira simultânea. Porém, isso pode 
ocasionar alguns problemas, principalmente relacionados à perda de consistência dos 
dados em caso de falha de alguma transação. 
Para contornar essas limitações, deve-se tentar implementar transações com 
planos sequenciais, pois eles são mais simples de serem controlados. Se algum plano não 
for sequencial, o ideal é tentar escalonar as operações deste plano, respeitando sempre os 
casos possíveis de inversões de instruções. 
Além disso, para a implementação de bons planos de execução de transações, 
deve-se evitar aqueles que não sejam recuperáveis ou que apresentem rollback em cascata.
24UNIDADE I Escalonamento de Transações
MATERIAL COMPLEMENTAR
 
LIVRO 
Título: Governança de Dados: Práticas, conceitos e novos caminhos
Autor: Carlos Barbieri.
Editora: Alta Books.
Sinopse: Neste livro você entenderá o conceito de Governança de 
Dados, os fatores críticos de sucesso e as dificuldades e desafios 
na sua implementação, conhecerá uma breve história dos dados 
digitais, que precederá o direcionamento que essa nova linha de 
atuação ganhará com os conceitos emergentes de: IoT (Internet 
das Coisas); Big Data; Ciência de Dados; Inteligência Artificial. 
Neste último, tocaremos no sensível e inquietante ponto de ética 
nos dados. Governança de Dados: Práticas, Conceitos e Novos 
Caminhos traz uma nova abordagem sobre o que é considerado 
o maior recurso organizacional da sociedade digital: O dado. 
Com o crescimento dos conceitos de Big Data, IoT (Internet das 
Coisas) e Inteligência Artificial, torna-se imperativa a adoção de 
um novo olhar das empresas sobre esses recursos, por meio 
de uma governança e gerência profissional, viável, moderna e, 
principalmente, efetiva em resultados. Para a criação, consumo 
e descarte controlado desses ativos, algumas regras (políticas, 
padrões, processos, procedimentos etc.) deverão ser definidas 
nas empresas, regulando o seu uso e minimizando os seus riscos. 
As diversas gerências (Segurança, Qualidade, Bancos de Dados, 
Dados Mestres, Metadados etc.) formam o arco operacional 
executivo dos dados na empresa. As duas visões, governança e 
gerência, em convergência e harmonia, criam a gestão de dados. 
 
FILME/VÍDEO
Título: Sujeito a Termos e Condições
Ano: 2013.
Sinopse: O que acontece quando o usuário clica em “aceitar” 
um contrato de termo de uso na internet? O documentário busca 
revelar o que vem sendo feito pelas corporações e os governos 
que possuem acesso ilimitado as informações dos usuários através 
de bancos de dados em computadores e celulares, permitidos de 
serem acessados ao se clicar “aceitar” em um termo de uso. 
25
Plano de Estudo:
● Definições e protocolos de bloqueio;
● Bloqueio binário e múltiplo;
● Bloqueio em duas fases.
Objetivos da Aprendizagem:
● Conceituar e contextualizar os protocolos de bloqueio
 nas transações concorrentes;
● Compreender os tipos de bloqueio utilizados para bloquear 
itens compartilhado em transações simultâneas;
● Estabelecer a importância do bloqueio em 
situações com transações simultâneas.
UNIDADE II
Controle de Concorrência
Professora Doutora Gisele Alves Santana
26UNIDADE I Escalonamento de Transações 26UNIDADE II Controle de Concorrência
INTRODUÇÃO
Um Sistema de Gerenciamento de Banco de Dados que suporta bancos de dados com 
várias aplicações deve permitir acesso concorrente à esses dados. A concorrência proporciona 
melhor tempo de resposta e eficiência computacional, melhorando o desempenho do SGBD. 
Porém, para que a concorrência seja implementada, deve-se assegurar principalmente que 
as propriedades ACID, vistas na Unidade 1, não sejam violadas. 
Para garantir a harmonia dos procedimentos realizados simultaneamente são 
implementados mecanismos de controle de concorrência. Basicamente, um método 
de controle de concorrência deve garantir que em todas as execuções concorrentes de 
transações, cada uma dessas transações termine e que elas sejam executadas sem 
interferência das outras e sem irregularidades de sincronização. Alguns exemplos de 
irregularidades ou anomalias são: acesso a dados inconsistentes, perdas de atualizações 
e perda da consistência do BD.
Nesta Unidade, você vai aprender algumas técnicas utilizadas para o controle 
de concorrência como forma de assegurar a propriedade de não interferência entre uma 
operação e outra ou o isolamento das transações executadas ao mesmo tempo. Dentre 
essas técnicas de bloqueio, você vai conhecer o funcionamento e as características do 
bloqueio binário, bloqueio múltiplo e bloqueio em duas fases.
Você está pronto? Então vamos lá!
27UNIDADE I Escalonamento de Transações 27UNIDADE II Controle de Concorrência
1. DEFINIÇÕES E PROTOCOLOS DE BLOQUEIO
A concorrência pode ser definida como a propriedade de uma transação poder 
ser executada em paralelo com outras transações (ELMASRI e NAVATHE, 2011). Com a 
execução de várias transações ao mesmo tempo, o processador pode ser compartilhado 
entre essas transações, melhorando a eficiência global da máquina, já que uma quantidade 
maior de tarefas é executada em paralelo. 
Com várias transações concorrendo ao mesmo tempo, torna-se necessário que 
o sistema monitore a interação entre as mesmas, de maneira a evitar que a consistência 
do Banco de Dados seja violada (MEDEIROS, 2013). Geralmente, esse gerenciamento é 
realizado através de técnicas de bloqueio ou locks.
A Figura 1 ilustra a arquitetura de um SGBD, onde pode-seperceber que as transações 
são gerenciadas por um Gerenciador de Transações, que implementa alguma técnica de 
controle de concorrência. Após o gerenciamento, as transações são escalonadas, utilizando-
se de algum tipo de plano de execução, que você aprendeu na Unidade 1 desta disciplina. 
Após o escalonamento, os dados são gerenciados através de um gerenciador de 
recuperação, que é responsável por garantir a consistência do BD em caso de falhas. 
Você pode notar a importância do controle de concorrência, pois já no início da arquitetura 
do BD está o gerenciador de transações, responsável por implementar alguma técnica 
de controle, sendo que todas as demais partes da arquitetura são dependentes do bom 
funcionamento deste gerenciador.
28UNIDADE I Escalonamento de Transações 28UNIDADE II Controle de Concorrência
FIGURA 1 – ARQUITETURA DE UM SGBD
 
Fonte: Adaptado de: ELMASRI e NAVATHE (2011)
Qualquer banco de dados que seja utilizado por mais de um usuário deve administrar 
o controle de concorrência entre as informações que estão sendo acessadas pelos usuários. 
No controle de concorrência, usuários distintos ou transações diferentes tentam acessar a 
mesma informação ou item de dado ao mesmo tempo, então neste caso deve-se ter um 
controle entre essas transações (ELMASRI e NAVATHE, 2011). 
Como exemplo de concorrência, considere 4 transações, T1, T2, T3 e T4, ilustradas 
na Figura 2. Agora, imagine que o item de dado S represente o saldo da sua conta corrente e 
que todas essas transações sejam responsáveis por debitar um determinado valor do saldo S. 
FIGURA 2 – EXEMPLO DE CONCORRÊNCIA
 
Fonte: A Autora (2021).
29UNIDADE I Escalonamento de Transações 29UNIDADE II Controle de Concorrência
Agora suponha que o valor inicial de S é R$ 2.000,00 e que o plano de execução 
(schedule) dessas transações possui a seguinte sequência de ações:
● T1 lê o saldo S (read (S));
● T2 lê o saldo S (read (S));
● T3 lê o saldo S (read (S));
● T4 lê o saldo S (read (S));
● T4 debita uma quantia de S (S := S – 100);
● T4 escreve o novo valor de S (write (S));
● T3 debita uma quantia de S (S := S – 50);
● T3 escreve o novo valor de S (write (S));
● T2 debita uma quantia de S (S := S – 200);
● T2 escreve o novo valor de S (write (S));
● T2 debita uma quantia de S (S := S – 150);
● T1 escreve o novo valor de S (write (S)).
Você consegue dizer qual problema que ocorreu nesse caso?
Repare que quando as transações leem o valor do item de dado S, o valor lido por 
todas as transações é o valor inicial de S (R$ 2.000,00). Porém, a partir do momento em 
que a transação T3 debita uma quantia da conta (S := S - 50), o valor de S já foi alterado 
por T4, mas T3 não leu esse valor atual. Quando acontece esse tipo de problema, diz que 
ocorreu uma “leitura suja”, ou seja, a transação leu um valor que já não reflete mais o valor 
atual do item de dado. 
Além disso, como todas as transações estão executando concorrentemente e 
acessando o mesmo item de dado ao mesmo tempo e sem nenhum tipo de controle, a 
única atualização que será realmente efetivada é a última. Assim, neste caso, o valor final 
do saldo refletirá apenas a quantia debitada por T1, sendo que as atualizações realizadas 
por T2, T3 e T4 são perdidas. Quando esse tipo de problema acontece, diz-se que o BD 
sofreu “alterações perdidas”.
Ainda no exemplo, cada transação respeitou o princípio de acesso exclusivo ao 
item de dado S, mas isso não foi suficiente para garantir a execução correta das ações 
das transações. Dessa maneira, é fundamental que seja implementado um mecanismo de 
controle de concorrência eficiente.
O problema principal a ser resolvido pelas técnicas de controle de concorrência 
pode ser resumido como: assumir que todas as transações preservam a consistência lógica 
do BD e terminam, quando executadas sequencialmente (ELMASRI e NAVATHE, 2011). 
30UNIDADE I Escalonamento de Transações 30UNIDADE II Controle de Concorrência
Então, de acordo com Medeiros (2013), uma técnica de controle de concorrência 
deve garantir que:
● cada transação termina;
● cada transação seja executada sem interferência das outras e sem anomalias de 
sincronização.
Essas características devem ser atingidas permitindo-se o máximo de concorrência 
possível, de forma transparente para os usuários e para o conjunto de transações acessando 
qualquer parte do BD.
31UNIDADE I Escalonamento de Transações 31UNIDADE II Controle de Concorrência
2. BLOQEIO BINÁRIO E MÚLTIPLO
As técnicas de controle de concorrência, também chamadas de técnicas ou 
protocolos de bloqueio, são utilizadas para garantir a propriedade de não interferência 
entre as transações, assim como o isolamento de transações executadas simultaneamente 
(ELMASRI e NAVATHE, 2011). 
A maioria dessas técnicas garante a serialização, que é a execução das transações 
de maneira serial (MEDEIROS, 2013). É importante lembrar que uma transação compreende 
todas as operações ou ações executadas entre o início e o fim da mesma, e para gerenciar 
as transações é necessário que as técnicas de bloqueio implementadas pelo SGBD 
assegurem que as propriedades ACID sejam respeitadas.
Nas técnicas de bloqueio, geralmente uma variável de controle é associada a um 
item de dado no BD, representando o status desse item em relação a possíveis operações 
que podem ser aplicadas sobre ele. Então, os bloqueios são utilizados com o objetivo de 
sincronizar o acesso aos itens de um Banco de Dados por transações concorrentes. Os 
bloqueios possuem duas características fundamentais:
● Uma variável (lock) associada a um item de dado, que descreve o status do item 
em relação a possíveis operações que podem ser aplicadas ao mesmo.
● Geralmente, existe um bloqueio para cada item de dado no BD.
32UNIDADE I Escalonamento de Transações 32UNIDADE II Controle de Concorrência
As técnicas de bloqueio mais utilizadas pelos SGBDs são (MEDEIROS, 2013):
● Bloqueio binário;
● Bloqueio múltiplo;
● Bloqueio em duas fases.
A seguir, cada uma dessas técnicas é apresentada e exemplificada.
2.1 Bloqueio Binário
No bloqueio binário, a variável lock possui dois estados (ELMASRI e NAVATHE, 2011): 
● Bloqueado (locked);
● Desbloqueado (unlocked).
Um lock distinto é associado a cada item do BD, por exemplo: lock_item(X) para o 
item de dado x, lock_item(Y) para o item de dado Y, lock_item(A) para o item de dado A.
As operações realizadas pelo bloqueio binário são indivisíveis, sendo elas:
●	lock_item(X) – bloqueia o item de dado X;
●	unlock_item(X) – desbloqueia o item de dado X.
Um gerenciador é mantido pelo SGBD para gerenciar e controlar o acesso aos locks, 
sendo que para cada lock efetuado é mantido um registro no formato: <nome-item,LOCK> 
e esses registros são mantidos em uma tabela de lock.
Basicamente, no funcionamento do bloqueio binário é imposta a exclusão mútua 
em um item de dado, considerando dois importantes fatores:
● Se uma operação de bloqueio ou desbloqueio de X for iniciada, nenhum entrelaçamento 
é permitido até que a operação em questão termine ou a transação espere;
● O comando de espera coloca a transação em uma fila de espera pelo item X até 
que o mesmo seja desbloqueado.
Assim, o bloqueio binário impões as seguintes regras de gerenciamento (ELMASRI 
e NAVATHE, 2011): 
● Uma transação T tem que executar uma operação lock_item antes de qualquer 
read_item ou write_item executado por T;
● Uma transação T tem que executar a operação unlock_item(X) após todas as 
operações de read/write serem completadas em T;
● Uma transação não pode executar uma operação lock_item(X) se já possui um 
lock sobre X;
33UNIDADE I Escalonamento de Transações 33UNIDADE II Controle de Concorrência
● Uma operação T não pode executar um unlock_item(X) a menos que tenha um 
lock sobre X;
● Apenas uma transação pode ter um lock sobre um dado item.ao mesmo tempo.
O algoritmo dessa técnica é apresentado na Figura 3:
FIGURA 3 – ALGORITMO BLOQUEIOBINÁRIO
 
Fonte: Adaptado de: ELMASRI e NAVATHE (2011).
Basicamente, no algoritmo tem-se que:
● A transação que chegar primeiro, bloqueia o item de dado desejado.
● Se quiser bloquear, precisa saber se esse item já está bloqueado.
● Se o item não estiver bloqueado, então a variável lock desse item é setada para o 
valor 1;
● Se o item estiver bloqueado: deve-se aguardar até que o lock volte a ser zero.
Para garantir o adequado funcionamento desta técnica de bloqueio, existe um 
gerenciador de transações responsável por informar à transação que está em espera, que 
o item de dado solicitado por ela foi desbloqueado (MEDEIROS, 2013). Porém, esse aviso 
não garante a realização da transação (possibilidade de tentar novamente). Nesse intervalo, 
pode ser que outra transação chegue na frente ou pode haver uma fila. A Figura 4 ilustra um 
exemplo de schedule que utiliza o protocolo do bloqueio binário:
34UNIDADE I Escalonamento de Transações 34UNIDADE II Controle de Concorrência
FIGURA 4 – EXEMPLO DE SCHEDULE COM BLOQUEIO BINÁRIO
 
Fonte: A Autora (2021).
Como pode ser observado, de maneira resumida, no bloqueio binário:
2.2 lock_item(X)
● Antes de write(X) ou read(X).
● Se X ainda não tiver lock.
2.3 Unlock_item(X)
● Depois de todas as operações de write(X) ou read(X).
● Apenas se tiver o lock de X.
A maior desvantagem do bloqueio binário é que nem todas as operações realizadas 
devem bloquear o acesso a todas as transações, por exemplo, em uma operação de leitura, 
o acesso pode ser compartilhado com outras transações.
Como solução para este problema, tem-se a técnica de bloqueio de modo múltiplo, 
apresentada a seguir.
2.4 Bloqueio Múltiplo
No bloqueio de modo múltiplo, o item de dado é bloqueado exclusivamente apenas 
nas operações de escrita (ELMASRI e NAVATHE, 2011). Dessa maneira, todas as transações 
podem ler um determinado item de dado ao mesmo tempo, pois a leitura é compartilhada, 
mas apenas uma transação pode escrever ou atualizar este item.
Então, esse tipo de bloqueio possui três operações:
2.4.1 read_lock(X):
● Bloqueio compartilhado.
● Utilizado para leitura. 
35UNIDADE I Escalonamento de Transações 35UNIDADE II Controle de Concorrência
2.4.2 write_lock(X): 
● Bloqueio exclusivo.
● Utilizado para gravação.
● Somente uma transação pode solicitá-lo por vez.
2.4.3 unlock_item(X):
● Desbloqueia o item de dado.
Neste tipo de bloqueio, as seguintes regras devem ser observadas (ELMASRI; 
NAVATHE, 2011):
● Uma transação T tem que executar uma operação read_lock(X) ou write_lock(X) 
antes de qualquer read_item(X) executado por 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 T tem que executar uma operação unlock(X) após todas as 
operações read_item(X) ou write_item(X) completadas em T;
● Uma transação T não executará um read_lock(X) se já tem um lock compartilhado 
(read_lock) ou um lock exclusivo (write_lock) em X.
De acordo com os algoritmos de bloqueio e desbloqueio apresentados na Figura 5, 
você pode notar que essa técnica de bloqueio depende do estado da variável lock, ou seja:
● Se estiver em write_locked: tem apenas uma transação sendo executada;
● Se estiver em read_locked: pode ter várias transações executando 
simultaneamente.
36UNIDADE I Escalonamento de Transações 36UNIDADE II Controle de Concorrência
FIGURA 5 – ALGORITMOS DE BLOQUEIO MÚLTIPLO
 
Fonte: Adaptado de: ELMASRI e NAVATHE (2011).
Como regra, tem-se: decrementar o número de transações que estão bloqueando 
o item de dado; se este número chegar em zero (0), então o lock ficará desbloqueado e o 
próximo da fila será informado.
Então, para cada transação, tem-se:
2.5 read_lock(X)
● O antes de read(X).
● O se ainda não tiver read_lock ou write_lock.
2.6 write_lock(X)
● O antes de read(X) com intenção de write(X).
● O antes de write(X).
● O se ainda não tiver write_lock.
2.7 unlock(X)
● O depois de todas as operações read(X) ou write(X).
● O apenas se tiver o lock de X.
37UNIDADE I Escalonamento de Transações 37UNIDADE II Controle de Concorrência
A maior desvantagem relacionada à esse tipo de bloqueio é que o mesmo não 
garante a serialidade de escalonamentos nos quais as transações participam (MEDEIROS, 
2013). Para resolver esse problema é necessário um protocolo adicional que contempla o 
posicionamento dos locks e unlocks em cada transação e para ilustrar o bloqueio múltiplo, 
considere a Figura 6 que ilustra duas transações.
FIGURA 6 – EXEMPLOS DE BLOQUEIO MÚLTIPLOS
 
Fonte: A Autora (2021).
Colocando essas duas transações em um plano, tem-se o ilustrado na Figura 7. 
Repare que os itens de dados Y da transação T1 e X na transação T2 foram desbloqueados 
muito cedo, o que ocasionou um escalonamento não-serial.
FIGURA 7 – BLOQUEIO MÚLTIPLO NÃO SERIALIZÁVEL
 
Fonte: A Autora (2021).
Para contornar esse problema e garantir escalonamentos serializáveis, as operações 
de bloqueio e desbloqueio devem seguir protocolos, que são empregados pela técnica de 
bloqueio apresentada a seguir.
38UNIDADE I Escalonamento de Transações 38UNIDADE II Controle de Concorrência
3. BLOQUEIO EM DUAS FASES
A técnica de bloqueio em duas fases, também chamada de protocolo 2PL (Two-Phase 
Locking), controla a obtenção e liberação de bloqueios de forma que os escalonamentos 
sejam seriáveis, sendo a técnica mais utilizada pelos SGBDs (ELMASRI e NAVATHE, 2011).
Basicamente, esta técnica, como o próprio nome diz, possui duas fases: fase 
de crescimento e fase de encolhimento, sendo essas fases mutuamente exclusivas. Na 
fase de crescimento, é realizada a obtenção dos bloqueios dos itens de dados, ou seja, 
as transações obtêm os bloqueios de leitura ou escrita sobre itens de dados. Já na fase 
de encolhimento, é realizada a liberação dos bloqueios obtidos na fase anterior. Esse 
processo é ilustrado na Figura 8.
FIGURA 8 – FASES DE CRESCIMENTO E ENCOLHIMENTO
 
Fonte: Adaptado de ELMASRI e NAVATHE (2011).
39UNIDADE I Escalonamento de Transações 39UNIDADE II Controle de Concorrência
Então, a fase de crescimento está localizada na curva crescente e é nesta região 
que os bloqueios são realizados (nenhum desbloqueio). Na fase de encolhimento, que está 
localizada na descida da parábola, os bloqueios são liberados e nenhum novo bloqueio pode 
ser realizado (ELMASRI e NAVATHE, 2011). Se em um escalonamento todas as transações 
seguem o protocolo 2PL, então pode-se garantir que o escalonamento é seriável.
Alguns termos importantes utilizados pelo protocolo 2PL são:
3.1 Upgrade:
● Transformar um bloqueio de leitura para um de escrita. 
● Operação realizada apenas na fase de crescimento.
● Exemplo: read_lock(X) write_lock(X)
3.2 Downgrade:
● Transformar um bloqueio de escrita para um de leitura. 
● Operação realizada apenas na fase de encolhimento.
● Exemplo: write_lock(X) read_lock(X)
Para a obtenção dos bloqueios nesta técnica, as seguintes regras devem ser 
obedecidas (MEDEIROS, 2013):
● Uma transação deve bloquear todos os itens aos quais terá acesso, antes de iniciar 
o seu processamento. Se algum dos itens não puder ser bloqueado, a transação 
não bloqueia nenhum item e espera até que todos os itens estejam disponíveis para 
bloqueio.
● Após liberar o bloqueio, a transação não pode adquirir mais bloqueios;
● Em uma transação, todas as operações de bloqueio (read_lock, write_lock) 
precedem a primeira operação de desbloqueio na transação.
Uma grande desvantagem é que esse tipo de bloqueio pode limitar a concorrência 
do SGBD, pois uma transação T pode não ser capaz de liberar um item X depois de usá-lo, 
se T tiver de bloquear um item adicional Y depois. Reciprocamente, T precisa bloquear 
um item adicional Y antes que precise dele, de modo que possa liberar X. Logo, X precisa 
permanecer bloqueado por T até que todos os itens que a transação precisa ler ou gravar 
tenham sido bloqueados. Somente então X pode ser liberadopor T.
Na Figura 9 é apresentado um exemplo de transação que emprega o protocolo 2PL. 
Repare que na fase de crescimento apenas bloqueio dos itens de dados são realizados, e 
na fase de encolhimento os itens de dados são liberados.
40UNIDADE I Escalonamento de Transações 40UNIDADE II Controle de Concorrência
Também é ilustrado um exemplo de downgrade, no qual o item X estão bloqueados 
para escrita e depois foi bloqueado apenas para leitura.
FIGURA 9 – EXEMPLO DO PROTOCOLO 2PL
 
Fonte: A Autora (2021).
Já na Figura 10 é exemplificado um schedule com duas transações que também 
implementa o protocolo de bloqueio 2PL, pois os bloqueios precedem os desbloqueios 
em todos os casos.
FIGURA 10 – EXEMPLO DE SCHEDULE COM PROTOCOLO 2PL
Fonte: A Autora (2021).
Repare que no schedule apresentado na figura anterior, ocorre uma situação 
chamada deadlock, na qual uma ou mais transações estão em estado simultâneo de 
espera, cada uma aguardando que a outra libere um bloqueio para poder prosseguir com 
sua execução. Assim, a grande desvantagem desse protocolo de bloqueio é a ocorrência 
de deadlocks, mas ainda assim, é o tipo de protocolo mais utilizado pelos SGBDs.
41UNIDADE I Escalonamento de Transações 41UNIDADE II Controle de Concorrência
SAIBA MAIS
Em uma situação de deadlock, os processos já estão bloqueando um ao outro, portanto, 
é necessário que haja uma intervenção externa para resolver o impasse. Por esse 
motivo, os SGBDs possuem mecanismos de detecção e resolução de conflitos, em que 
um processo precisa ser escolhido como “vítima de deadlock” e ser eliminado para que 
o outro processo possa continuar funcionando. 
Quer saber mais sobre deadlock em um banco de dados? 
Acesse o link: https://dbabrasil.net.br/locks-blocks-deadlocks/
Fonte: Bernardes, 2012.
E você quer saber como resolver um deadlock? 
Então, acesse: https://cooperati.com.br/2012/07/quando-o-banco-apresenta-um-deadlock-o-que-fazer/.
Fonte: Mulotto (2018).
 
REFLITA
Os protocolos de bloqueio só existem porque existem problemas ao trabalhar-se com 
transações concorrentes.
Fonte: Date (2004).
https://cooperati.com.br/2012/07/quando-o-banco-apresenta-um-deadlock-o-que-fazer/
42UNIDADE I Escalonamento de Transações 42UNIDADE II Controle de Concorrência
CONSIDERAÇÕES FINAIS
Nesta Unidade, você conheceu a importância da implementação de técnicas de 
controle de concorrência em um SGBD. Quando várias transações estão sendo executadas 
simultaneamente, algum tipo de controle deve ser implementado, caso contrário, algumas 
inconsistências podem ocorrer, como leitura suja e atualização perdida.
Nesse contexto, as técnicas ou protocolos de bloqueio são empregados com o objetivo 
de garantir a consistência e o isolamento dos dados acessados por transações concorrentes. 
Você aprendeu também sobre três técnicas de controle de concorrência: bloqueio 
binário, bloqueio múltiplo e bloqueio em duas fases. No bloqueio binário, a variável associada 
ao bloqueio pode assumir dois valores: bloqueado ou desbloqueado. Apesar de ser uma 
técnica simples, possui algumas desvantagens, principalmente em relação ao bloqueio de 
acesso aos itens de dados, mesmo em caso de leitura. 
Já no bloqueio de modo múltiplo, existem dois tipos de boqueio, além do desbloqueio: 
bloqueio de leitura e bloqueio de escrita. No bloqueio de leitura, também chamado de 
bloqueio compartilhado, o item de dado bloqueado pode ser acessado para leitura por 
outras transações. No bloqueio de leitura, o acesso fica exclusivo apenas para a transação 
que realizou tal bloqueio.
Finalmente, vimos sobre a técnica de bloqueio em duas fases, que é a mais utilizada 
pelos SGBDS por garantir a serialidade dos planos de execução das transações. Esse 
protocolo possui duas fases, nas quais são realizados os bloqueios de todos os itens de 
dados que serão utilizados pelas transações (fase de crescimento) e depois é realizado o 
desbloqueio dos itens que já foram processados (fase de encolhimento).
Você percebeu que a concorrência proporciona melhor tempo de resposta e eficiência 
computacional e melhora o desempenho do SGBD. Porém, para que a concorrência seja 
corretamente realizada, técnicas de bloqueio devem ser implementadas. 
43UNIDADE I Escalonamento de Transações 43UNIDADE II Controle de Concorrência
LEITURA COMPLEMENTAR 
Para saber mais sobre o conteúdo abordado nesta unidade acesse os seguintes 
materiais:
● Sistemas de Banco de Dados:
http://tonysoftwares.com.br/attachments/article/5297/Sistema_de_banco_de_da-
dos_Navathe.pdf
● Projeto de Banco de Dados distribuídos:
https://www.ime.usp.br/~mfinger/home/papers/conf/MF98.pdf
● Injeção de falhas em banco de dados distribuídos:
https://www.lume.ufrgs.br/bitstream/handle/10183/2474/000320304.pdf?sequen-
ce=1&local
● Análise e modelagem de banco de dados distribuídos:
http://www.repositoriobc.unirio.br:8080/xmlui/bitstream/handle/unirio/12863/MI%20
15%20-%202010.pdf?sequence=1
http://tonysoftwares.com.br/attachments/article/5297/Sistema_de_banco_de_dados_Navathe.pdf 
http://tonysoftwares.com.br/attachments/article/5297/Sistema_de_banco_de_dados_Navathe.pdf 
https://www.ime.usp.br/~mfinger/home/papers/conf/MF98.pdf 
https://www.lume.ufrgs.br/bitstream/handle/10183/2474/000320304.pdf?sequence=1&local 
https://www.lume.ufrgs.br/bitstream/handle/10183/2474/000320304.pdf?sequence=1&local 
http://www.repositoriobc.unirio.br:8080/xmlui/bitstream/handle/unirio/12863/MI%2015%20-%202010.pdf?sequence=1 
http://www.repositoriobc.unirio.br:8080/xmlui/bitstream/handle/unirio/12863/MI%2015%20-%202010.pdf?sequence=1 
44UNIDADE I Escalonamento de Transações 44UNIDADE II Controle de Concorrência
MATERIAL COMPLEMENTAR
 
LIVRO 
Título: Sistemas de Gerenciamento de Banco de Dados
Autor: Raghu Ramakrishnan | Johannes Gehrke.
Editora: McGraw Hill Brasil.
Sinopse: Este livro apresenta uma abordagem clara e atualizada 
dos fundamentos dos sistemas de banco de dados. Os leitores 
podem optar por dar ênfase a aplicações de bancos de dados ou 
a sistemas. O livro traz muitos exemplos e aplicações, incluindo 
SQL e Oracle, e aplicações para a Internet. Além disso, são intro-
duzidos padrões atuais, como JDBC e XML, e desenvolvimento de 
aplicações em três camadas.
 
FILME/VÍDEO 
Título: Jobs
Ano: 2013.
Sinopse: Este filme mostra a história de vida de Steve Jobs, 
desde sua época na faculdade (e desistência da mesma) até seu 
sucesso como uma das pessoas mais famosas e reverenciadas no 
mundo da tecnologia. O filme conta como o fundador da Apple não 
entendia apenas de computadores, mas principalmente sempre se 
destacou pelo seu entendimento e visão de mercado e negócios.
45
Plano de Estudo:
● Conceitos, tipos de falhas e operações básicas;
● Técnica de Recuperação (Arquivo de log);
● Técnica de Recuperação (Checkpoints).
Objetivos da Aprendizagem:
● Conceituar e contextualizar os sistemas de recuperação de falhas;
● Compreender os tipos de técnicas utilizadas para recuperar
 o BD em caso de ocorrência de falhas;
● Estabelecer a importância da implementação das técnicas 
de recuperação de falhas em um SGBD.
UNIDADE III
Sistemas de Recuperação
Professora Doutora Gisele Alves Santana
46UNIDADE III Sistemas de Recuperação
INTRODUÇÃO
Os bancos de dados são essenciais para qualquer tipo de sistema de informação, 
devendo oferecer integridade, consistência e segurança dos dados armazenados. 
Porém, caso ocorra alguma falha, existe a possibilidade de um BD perder ou alterar 
seu desempenho. Dentre os tipos de falhas mais comuns tem-se: falta de manutenção, falhas 
de transação (erros lógicos), queda de energia elétrica e danos físicos aos equipamentos 
(hardware) de armazenamento dos dados. 
Na ocorrência de uma falha, os dados de um BD podem ser perdidos. Para que 
essa situação não aconteça, os SGBDs utilizam sistemas de recuperação de falhas, 
que sã responsáveis pela restauração do BD para um estado consistente, anterior da 
ocorrência da falha.
Geralmente, ossistemas de recuperação atuam antes e após a ocorrência de uma 
falha, ou seja, são implementadas ações durante o processamento de transações, a fim 
de assegurar que exista informações consistentes para permitir a recuperação correta dos 
dados. Além disso, são executadas ações após a ocorrência da falha, com o objetivo de 
recuperar o estado consistente do BD antes da falha.
Existem vários tipos de técnicas de recuperação de falhas e nesta aula você vai 
conhecer e aprender a aplicar as técnicas de recuperação baseadas em log e checkpoints.
Você está preparado (a)?
Então, vamos lá!
47UNIDADE III Sistemas de Recuperação
1. CONCEITOS, TIPOS DE FALHAS E OPERAÇÕES BÁSICAS
A transferência de dados entre memória e disco pode resultar em (ELMASRI e 
NAVATHE, 2011):
● Conclusão bem sucedida: o destino recebeu a informação;
● Falha parcial: o destino recebeu informação incorreta;
● Falha total: o destino permaneceu intacto.
Então, é interessante manter dois blocos físicos (destino) para cada bloco lógico 
(origem), considerando que um bloco contém diversos dados (MEDEIROS, 2013). Para 
melhor entendimento, vamos assumir que um dado não pertence a mais de um bloco.
Na Figura 1, os movimentos de blocos entre memória principal (MP) e disco 
envolvem duas operações básicas (ELMASRI e NAVATHE, 2011):
1.1 Input(B)
● Transfere o bloco físico B para a memória principal.
1.2 Output(B)
● Transfere o bloco de buffer B para o disco.
Analisando ainda mais a Figura 1, você pode perceber que cada transação possui uma 
área de trabalho privada, na qual mantém cópia de todos os itens de dados acessados por ela.
48UNIDADE III Sistemas de Recuperação
Essa área de trabalho é criada quando a transação é iniciada, sendo removida quando 
a transação é abortada ou efetivada. A interação da transação com o sistema acontece através 
da transferência de dados desta área de trabalho para o buffer do sistema e vice-versa.
FIGURA 1 – ESQUEMA DE TRANSFERÊNCIA DE BLOCOS ENTRE MP E DISCO
 
Fonte: Adaptado de: ELMASRI e NAVATHE (2011).
Como operações principais para a transferência de blocos entre a memória e o 
disco, temos (ELMASRI; NAVATHE, 2011):
1.3 read(X)
● É o valor do item de dado X para a variável de programa xi.
● Se o bloco Bx , no qual X reside não estiver na memória principal, então é 
emitido um input(Bx).
● O input(Bx) atribui a xi o valor de X a partir do bloco de buffer.
1.4 write(X)
● Realiza a atribuição do valor da variável de programa xi para o item de dado X 
no bloco de buffer.
● Se o bloco Bx no qual reside X não estiver na memória principal, então é 
executado o input(Bx).
● O input(Bx) atribui o valor de xi para X no buffer Bx.
Eventualmente, o bloco de buffer é escrito no disco por duas razões: o buffer está 
cheio e é preciso liberar espaço, ou o sistema deseja refletir a mudança em B sobre o disco. 
Para a saída de um dado, o sistema utiliza a operação output(B). Nem sempre o output(B) 
ocorre imediatamente depois de um write(B). Então, se o sistema falhar, o valor escrito em 
B por uma transação pode se perder.
49UNIDADE III Sistemas de Recuperação
1.5 Tipos de Falhas 
Os principais tipos de falhas que podem ocorrer um SGBD são: falhas de transação, 
erros de sistema, queda do sistema e falha de disco (ELMASRI e NAVATHE, 2011).
As falhas de transação podem ser causadas por erros lógicos (MEDEIROS, 2013). 
Nesse caso, a transação não pode continuar sua execução normal devido a uma falha interna 
do sistema, como por exemplo, dados não encontrados, overflow (estouro de memória) e 
programação incorreta. Mesmo que a transação seja reexecutada, o problema irá persistir.
Já nos erros de sistema, o sistema entra em um estado inadequado (deadlock, por 
exemplo), e com isso, a transação não consegue continuar sua execução normal, mas a 
mesma pode ser reexecutada posteriormente (MEDEIROS, 2013).
Por outro lado, uma falha relacionada à queda do sistema pode ocasionar algum 
mal funcionamento no hardware ou software, causando a perda do conteúdo armazenado 
em meio volátil e, assim, parando a execução de uma transação (MEDEIROS, 2013). Vale 
ressaltar que o conteúdo armazenado em meio não-volátil permanece intacto.
Já quando um bloco de disco perde seu conteúdo em função da quebra do cabeçote ou 
de falha durante uma transferência de dados, diz-se que o sistema sofreu uma falha de disco.
Considere a Figura 2, que ilustra a ocorrência de uma falha (queda no sistema) 
durante a execução da Transação T1, e suponha que os valores iniciais de A e B são iguais 
a 1000 e 2000, respectivamente.
FIGURA 2 – EXEMPLO DE OCORRÊNCIA DE FALHAS
 
Fonte: Adaptado de: ELMASRI e NAVATHE (2011).
Vamos imaginar dois procedimentos possíveis para a recuperação: reexecutar ou 
não reexecutar T1. 
50UNIDADE III Sistemas de Recuperação
Qual desses procedimentos seria o mais adequado? Primeiro, vamos analisar a 
reexecução de T1. Nesse caso, com a transação T1 executando novamente, tem-se o valor 
de A igual a 900 ao invés de 950. Dessa maneira, o sistema entra em estado inconsistente.
Agora, vamos verificar o que acontece se o sistema não reexecutar a transação T1. 
Nesse caso, o valor de A permanece igual a 950 e o valor de B permanece igual a 2000. 
Então, mais uma vez, o sistema fica em estado inconsistente.
Esse problema ocorreu porque modificou-se o banco de dados antes de se ter certeza 
de que a transação foi efetivada de fato. Assim, para evitar esse tipo de problema, todas ou 
nenhuma das modificações da transação deveriam ser realizadas (ELMASRI e NAVATHE, 2011). 
Nesse contexto, para garantir a atomicidade é necessário primeiramente enviar as 
informações sobre as modificações para um meio estável, sem modificar efetivamente o 
banco de dados (MEDEIROS, 2013). Aqui entram os sistemas de recuperação de falhas, 
que são rresponsáveis pela restauração do banco de dados para um determinado estado 
(o estado antes da ocorrência de uma falha).
Mas, quais são os meios disponíveis para o armazenamento dos dados? 
No armazenamento volátil, as informações não resistem à quedas do sistema. Por 
outro lado, no meio de armazenamento não volátil as informações não são perdidas quando 
se tem quedas do sistema, mas estão sujeitas a se perderem em falhas mais drásticas. 
Então, o melhor meio de armazenamento é o estável, no qual a informação nunca é perdida. 
Teoricamente, é impossível de se obter um meio estável, mas pode-se utilizar técnicas para 
tornar improvável a perda definitiva de dados de um BD.
1.6 Ações Básicas
Qualquer técnica de recuperação utiliza alguma ação básica, como (ELMASRI e 
NAVATHE, 2011):
1.6.1 Transaction UNDO 
● Uma transação não concluiu suas operações.
● As modificações realizadas por esta transação no BD são desfeitas.
1.6.2 Global UNDO
● Uma ou mais transações não concluíram as suas operações.
● As modificações realizadas por todas essas transações no BD são desfeitas.
51UNIDADE III Sistemas de Recuperação
1.6.3 Partial REDO
● Na ocorrência de uma falha, algumas transações podem ter concluído suas 
operações (committed), mas suas ações podem não ter se refletido no BD.
● As modificações realizadas por essas transações são refeitas no BD.
1.6.4 Global REDO
● No caso de um comprometimento do BD, todas as transações committed no 
BD são perdidas.
● As modificações realizadas por todas essas transações no BD são refeitas.
Vamos ver alguns exemplos de aplicação dessas ações na ocorrência de algumas 
falhas. Suponha que o sistema sofre uma falha de transação, na qual uma transação 
ativa terminou de forma anormal. Como possíveis causas dessa falha, tem-se: lógica da 
transação mal definida, deadlock ou cancelamento pelo usuário. Esse tipo de falha não 
compromete a memória principal e a memória secundária (disco), sendo a falha que possui 
a maior probabilidade de ocorrência em um sistema. 
Porém, seu tempo de recuperação é pequeno. Então, para essa falha, deve-se 
adotar comoação Transaction UNDO e, assim, as modificações provocadas por esta 
transação são desfeitas. 
Considere agora que o SGBD encerrou a sua execução de forma anormal, que teve 
como possíveis causas: interrupção de energia, falha no Sistema Operacional ou falha de 
algum equipamento de hardware. Esse tipo de falha pode comprometer a memória principal, 
mas não compromete o disco. Essa falha possui probabilidade média de ocorrência, assim 
como o tempo de recuperação (médio). Assim, as ações apropriadas para esse caso são: 
Global UNDO ou Partial REDO.
Por último, suponha que o BD tornou-se total ou parcialmente inacessível, tendo 
como possíveis causas: setores corrompidos no disco ou falha no cabeçote de leitura/gra-
vação. Esse tipo de falha não compromete a memória principal, mas compromete o disco. É 
uma falha com baixa probabilidade de ocorrência, porém seu tempo de recuperação é alto. 
Para esse caso, a ação implementada deverá ser Global REDO.
Como você pode perceber, para qualquer tipo de falha as operações são desfeitas 
ou refeitas. Mas, como garantir que o BD fique consistente após uma nova execução ou 
após as operações de uma transação terem sido desfeitas? Para isso, são usados sistemas 
de recuperação, alguns deles apresentados a seguir.
52UNIDADE III Sistemas de Recuperação
2. TÉCNICA DE RECUPERAÇÃO (ARQUVOS DE LOG)
O arquivo de log pode ser definido como uma sequência de registros que mantém 
um arquivo atualizado das atividades executadas em um Banco de Dados (ELMASRI e 
NAVATHE, 2011). O log pode ser gravado em dois momentos: 
● Antes da execução da transação;
● Depois da execução da transação.
 
Sempre que uma operação de escrita é realizada, é fundamental que o registro de 
log equivalente seja criado antes que o BD seja modificado (ELMASRI e NAVATHE, 2011). 
Dessa maneira, o log deve residir em armazenamento estável. 
Como o log contém o registro completo de todas as atividades realizadas no banco 
de dados, seu tamanho pode se tornar relativamente grande, mas eventualmente, pode-se 
apagar o seu conteúdo.
O formato de cada entrada do arquivo de log é formado da seguinte maneira 
(ELMASRI e NAVATHE, 2011):
<Ti,Tj,V1,V2>
Onde:
Ti – identificador da transação;
Xj – identificador do item de dado;
V1 – valor antigo;
V2 – novo valor.
53UNIDADE III Sistemas de Recuperação
Outros registros de um arquivo de log podem ter os seguintes formatos (ELMASRI 
e NAVATHE, 2011):
2.1 [start,T]
● Registra que a transação T começou a executar.
2.2 [write,T,X,valor_antigo,valor_novo]
● Registra que a transação T trocou o valor_antigo de X pelo valor_novo.
2.3 [write,T,X, valor_novo]
● Registra que a transação T alterou X para o valor_novo.
2.4 [read,T,X]
● Registra que a transação T leu o valor do item X.
2.5 [commit,T]
● Registra que a transação T completou com sucesso e seus “efeitos” podem ser 
registrados no BD.
2.6 [abort,T]
● Registro de que a transação T foi abortada.
A Figura 3 ilustra um exemplo de duas transações T1 e T2 e seu escalonamento S. 
As letras R, W e C significam leitura, escrita e commit, respectivamente.
FIGURA 3 – ESCALONAMENTO S
 
Fonte: A autora (2021).
Como ficaria o arquivo de log para esse escalonamento? 
54UNIDADE III Sistemas de Recuperação
Primeiramente, vamos demarcar o início do arquivo de log com [start, T2], já que a 
Transação T2, de acordo com o escalonamento é a primeira a iniciar sua execução. Depois, 
a próxima entrada deverá ser de leitura do item de dado C, da seguinte maneira: [read, T2, 
C]. Após, a transação T1 é iniciada, sendo feita a leitura do item de dado A, então no arquivo 
de log deverão constar as entradas: [start, T1] e [read, T1, A]. Então, T2 é retomada com a 
execução do comando de escrita ou atualização do item de dado B. Suponha que B tinha 
o valor 10 que será atualizado para 20, então a entrada no arquivo de log fica da seguinte 
maneira: [write, T2, B, 10, 20]. 
E assim por diante, até a finalização das duas transações. O arquivo final resultante 
do escalonamento é mostrado na Figura 4.
FIGURA 4 – ARQUIVO DE LOG DO ESCALONAMENTO S
 
Fonte: A autora (2021).
Vale saber que o SGBD gera um identificador único para cada transação (ELMASRI e 
NAVATHE, 2011). Para a recuperação de falhas, as operações de leitura (read) não precisam 
necessariamente serem gravadas no arquivo de log, mas para fins didáticos, adotaremos que 
essas operações são incluídas como entradas no arquivo, conforme feito na Figura 4.
Em caso de falha no sistema, se uma transação T tiver a entrada [start,T] no arquivo 
de log, é realizada uma das seguintes operações (ELMASRI e NAVATHE, 2011):
55UNIDADE III Sistemas de Recuperação
2.7 Undo (desfazer)
● Aplicada às transações do arquivo de log que não possuem a entrada [commit, 
T] ou [abort, T].
2.8 Redo (refazer)
● Aplicada às transações do log que possuem a entrada [commit, T]
O arquivo de log de um SGBD pode ser gravado em dois momentos: antes ou 
depois da execução da transação. A seguir, veremos cada uma dessas técnicas.
2.9 Modificação Adiada no Banco de Dados
Na técnica de modificação adiada, como o próprio nome diz, adia-se a execução 
de todas as operações de escrita (write) de uma transação até que ela seja parcialmente 
efetivada (tenha executado todas as suas ações) (ELMASRI; NAVATHE, 2011). 
No caso da ocorrência de alguma falha antes do término das operações de escrita 
ou se a transação for abortada, as informações no arquivo log serão ignoradas, e somente 
o novo valor do item de dado que sofreu alteração deve ser registrado log.
Na modificação adiada, um registro <start Ti> é escrito no log antes da transação 
Ti iniciar sua execução (ELMASRI; NAVATHE, 2011). 
Todas as operações write(x) de Ti, resultam em um novo registro no arquivo log. 
Quando Ti é parcialmente efetivada, um registro <Ti commit> deve ser escrito no log. 
Assim que a transação é parcialmente efetivada, os registros no log podem ser usados 
para atualizar o banco de dados e a transação entra em seu estado de efetivação. Neste 
momento, deve-se garantir que o log esteja armazenado em meio estável.
Como exemplo, considere a Figura 5, que ilustra a execução de duas transações 
T1 e T2, com os valores iniciais dos itens de dados A = 30, B = 10 e C = 80, assim como 
seu respectivo arquivo de log.
FIGURA 5 – EXEMPLO 1 DE MODIFICAÇÃO ADIADA
 
Fonte: A autora (2021).
56UNIDADE III Sistemas de Recuperação
Como o Banco de Dados nunca é atualizado efetivamente (em disco) até que as 
transações sejam efetivadas, nunca será necessária qualquer operação UNDO (desfazer) 
(ELMASRI e NAVATHE, 2011).
 Já no caso do sistema falhar depois que as transações forem efetivadas, será 
necessário realizar a ação de REDO (refazer), mas antes de todas as suas alterações 
serem gravadas em disco.
Vamos supor o exemplo ilustrado na Figura 6, com três situações. As ações 
executadas serão:
● Para o arquivo de log 1: nenhuma ação REDO é necessária, pois não se tem 
nenhuma entrada no arquivo de log com commit.
● Para o arquivo de log 2: é necessário realizar REDO(T1), pois existe uma entrada 
[commit, T1] registrada no arquivo de log.
● Para o arquivo de log 3: é necessário realizar REDO(T1) seguido de REDO(21), uma 
vez que as entradas [commit, T1] e [commit, T2] estão presentes no arquivo de log.
FIGURA 6 – EXEMPLO 2 DE MODIFICAÇÃO ADIADA
Fonte: A autora (2021).
Como outro exemplo, considere as transações da Figura 7, e tente determinar quais 
operações devem ser executadas pelo sistema de recuperação de falhas, tendo como base 
a técnica de modificação adiada.
57UNIDADE III Sistemas de Recuperação
FIGURA 7 – EXEMPLO 3 DE MODIFICAÇÃO ADIADA
Fonte: A autora (2021).
Para esse caso, como só existe uma linha de entrada no arquivo de log com commit 
([commit, T2]), será necessário apenas a ação REDO da transação T2.
Agora que você já aprendeu a técnica de modificação adiada, vamos conhecer 
o outro tipo de modificação

Outros materiais