Escolar Documentos
Profissional Documentos
Cultura Documentos
Construo de Sistemas de
Gerenciamento de
Banco de Dados
Construo de Sistemas de
Gerenciamento de
Banco de Dados
COORDENADORES DE CURSOS
ADMINISTRAO Antonella Maria das Chagas Sousa
ADMINISTRAO PBLICA Fabiana Rodrigues de Almeida Castro
CINCIAS BIOLGICAS Maria da Conceio Prado de Oliveira
FILOSOFIA Zoraida Maria Lopes Feitosa
FSICA Miguel Arcanjo Costa
LETRAS PORTUGUS Jos Vanderlei Carneiro
LETRAS INGLS Lvia Fernanda Nery da Silva
MATEMTICA Jos Ribamar Lopes Batista
PEDAGOGIA Vera Lcia Costa Oliveira
QUMICA Milton Batista da Silva
SISTEMAS DE INFORMAO Leonardo Ramon Nunes de Sousa
ISBN:
CDD: 005.74
A responsabilidade pelo texto e imagens desta obra do autor. O contedo desta obra foi licenciado, temporria e
gratuitamente, para utilizao no mbito do Sistema Universidade Aberta do Brasil, atravs da UFPI. O leitor se compromete
a utilizar o contedo desta obra para aprendizado pessoal, sendo que a reproduo e distribuio ficaro limitadas ao mbito
interno dos cursos. A citao desta obra em trabalhos acadmicos e/ou profissionais poder ser feita, com indicao da fonte.
A cpia desta obra sem autorizao expressa, ou com intuito de lucro, constitui crime contra a propriedade intelectual, com
sanes previstas no Cdigo Penal.
proibida a venda deste material.
Um Sistema de Gerenciamento de Banco de Dados, ou SGBD, um
software projetado para auxiliar o armazenamento, a recuperao e a utilizao
de vastos conjuntos de dados. O gerenciamento dessas informaes envolve
definir as estruturas que sero utilizadas para o armazenamento dos dados e
os mecanismos que sero responsveis pela manipulao desses dados. Como
as informaes precisam ser compartilhadas entre vrios usurios, o SGBD
necessita evitar possveis resultados anmalos. Alm disso, o SGBD necessita
garantir a segurana das informaes armazenadas, apesar das falhas que por
ventura possam ocorrer, ou das tentativas de acesso no autorizado.
Os SGBDs so, atualmente, ferramenta indispensvel para o
armazenamento e o gerenciamento de informaes. A disciplina que aborda
as tcnicas, os algoritmos e a teoria utilizada na construo de sistemas de
gerenciamento de banco de dados tornou-se parte integrante do currculo dos
cursos de Sistemas de Informao, Cincia da Computao e Engenharia da
Computao.
O objetivo deste livro proporcionar ao leitor entendimento da Construo
de Sistemas de Gerenciamento de Banco de Dados. O texto foi escrito de forma
simples e objetiva. Cada captulo acompanhado de embasamento terico
e prtico, bem como de implementaes e de exerccios. A bibliografia e a
webliografia ao fim das notas so mais do que suficientes para que o leitor se
aprofunde na teoria apresentada em cada unidade. Assim, esperamos prover ao
leitor um sentido de investigao nesta disciplina rica e vibrante.
Introduo
Boa Leitura!!
Flvio Rubens de Carvalho Sousa
Jos Maria da Silva Monteiro Filho
UNIDADE 1
09 PROJETO FSICO DE BANCOS DE DADOS
UNIDADE 2
41 PROCESSAMENTO DE TRANSAES
1 INTRODUO
1.1 O Problema da Concorrncia em BDs .................. 51
1.2 Conceito de Transao ......................................... 53
1.3 Estados de uma transao ....................................55
1.4. Propriedades da transao ..................................56
Exerccios ....................................................................57
2 EXECUES CONCORRENTES
2.1 Acessos Concorrentes ...........................................57
2.2 Controle de Concorrncia ................................................. 58
Exerccios ................................................................................ 61
3 ISOLAMENTO DE TRANSAES
3.1 Transaes Sequenciais .................................................... 62
3.2 Execuo Correta de Transaes Concorrentes ................ 63
3.3 Serializabilidade ................................................................ 66
3.4 Grafo de serializao de um Schedule .............................. 68
3.5 Prefixo de um Schedule S ..................................................69
Exerccios .................................................................................70
4 CONFIABILIDADE DE SCHEDULES
4.1 Corretude x Confiabilidade ............................................... 72
4.2 Schedule Recupervel .......................................................73
4.3 Schedule que Evita Abort em Cascata ...............................73
4.4 Schedule Preciso (Strict) ................................................... 74
Exerccios ...................................................................75
UNIDADE 3
69 CONTROLE DE CONCORRNCIA
1 INTRODUO
1.1 Conceitos iniciais ...............................................................79
1.2 Classificao dos Protocolos de Concorrncia .................. 79
Exerccios ................................................................................ 80
2. DESCRIO DOS PROTOCOLOS CONSERVADORES
2.1 Protocolos Baseados em Bloqueios .................................. 81
2.2 Tratamento de impasse .....................................................95
2.3 Granularidade de Bloqueios ............................................. 100
2.4 Bloqueio de duas fases com mltiplas verses .................105
2.5 Arquitetura de GTs que utilizam 2PL .................................109
2.6 Nveis de isolamento .........................................................110
Exerccios ................................................................................ 117
3. DESCRIO DOS PROTOCOLOS AGRESSIVOS
3.1 Protocolos baseados em Marcadores de Tempo
(timestamp) ............................................................................ 126
3.2 Teste do grafo de serializao ........................................... 128
3.3 Protocolos otimistas ..........................................................131
Exerccios ................................................................................ 132
UNIDADE 4
41 RECUPERAO DE BANCO DE DADOS
Resumindo
Esta unidade discute, em detalhes, os principais aspectos relacionados ao projeto
fsico de sistemas de bancos de dados. Inicialmente, define-se o que um Sistema
de Gerenciamento de Banco de Dados (SGBD). Em seguida, discute-se a arquitetura
para um SGBD e uma classificao com as diferentes arquiteturas apresentada.
Posteriormente, examinamos os conceitos, as tcnicas e as estratgias relacionadas ao
armazenamento de dados, ao gerenciamento de buffer e indexao de dados.
PROJETO FSICO DE
BANCOS DE DADOS
1.1 Introduo
1.2 Arquitetura
16 UNIDADE 1
A Figura 1 ilustra os principais componentes funcionais de um sistema
de banco de dados. Nessa arquitetura, um SGBD (ou DBMS Database
Management System) formado por dois mdulos principais: o Processador de
Consultas e o Sistema de Armazenamento.
O processador de consultas responsvel por traduzir as consultas
recebidas do usurio ou de uma aplicao, as quais so representadas por
comandos em uma determinada linguagem de consulta (como SQL, por
exemplo), em operaes de baixo nvel, que o gerenciador do banco de dados
pode interpretar e executar. Alm disso, o processador de consultas tenta
transformar uma requisio do usurio em uma representao interna que seja
equivalente (ou seja, retorne os dados solicitados) consulta recebida, porm
mais eficiente em termos de desempenho. Dessa forma, busca-se encontrar
uma boa estratgia para executar a consulta fornecida pelo usurio (ou pela
aplicao). O processador de consultas dividido nos seguintes mdulos:
Compilador DML
Analisa sintaticamente e semanticamente os comandos DML (Data
Manipulation Language) expressos em uma determinada linguagem de consulta
(SQL, por exemplo) recebidos do usurio. Em seguida, traduz esses comandos
para uma das formas de representao interna de consultas (como por exemplo,
a lgebra relacional). Exemplos de comandos DML so: SELECT, INSERT,
UPDATE e DELETE.
Pr-Compilador DML
Traduz comandos DML, embutidos em programas aplicativos (aplicaes
Java, por exemplo) que acessam o sistema de banco de dados (por meio de
JDBC ou SQLJ, por exemplo), em chamadas a procedimentos (rotinas) em uma
linguagem hospedeira. O pr-compilador precisa interagir com o processador de
consultas para gerar o cdigo apropriado.
Interpretador DDL
Interpreta comandos DDL (Data Definition Language) e os armazena
no catlogo (log ou metabase). Um catlogo uma tabela que armazena
metadados. J os metadados descrevem o banco de dados, ou seja, o esquema
do banco de dados. Exemplos de comandos DDL so: CREATE TABLE, ALTER
TABLE, DROP TABLE, dentre outros.
Mecanismo de Consultas
Responsvel pela otimizao e pela gerao de planos de execuo de
consultas.
O Sistema de Armazenamento fornece a interface entre os dados
18 UNIDADE 1
esses dados mais rpido.
Fragmentos de Cdigo, tais como procedimentos armazenados (stored
procedures) e gatilhos (triggers).
Exerccios
20 UNIDADE 1
2. ARMAZENAMENTO DE DADOS
2.1 Introduo
22 UNIDADE 1
os discos rgidos em computadores portteis (notebooks).
Memria Secundria (Armazenamento em Discos Magnticos)
O principal meio para armazenamento de dados em longo prazo o
disco magntico. Esse dispositivo apresenta capacidade de armazenamento
maior que a memria principal. Em contrapartida, o acesso a dados em disco
mais lento que na memria principal. Os discos magnticos apresentam
armazenamento no voltil, ou seja, os dados armazenados sobrevivem a faltas
de energia e a falhas do sistema. Assim, os discos magnticos so utilizados
para armazenar dados de forma persistente (permanente), podendo armazenar
programas aplicativos, grandes arquivos de dados etc. Normalmente, o banco de
dados inteiro armazenado em disco magntico. Logo, o SBD precisa mover os
dados do disco para a memria principal, de modo que possam ser acessados.
Posteriormente, os dados que foram modificados na memria principal precisam
ser gravados (atualizados) em disco. Logicamente, os discos magnticos tambm
esto sujeitos a falhas. Dessa forma, dados podem ser perdidos. Contudo, essas
falhas normalmente ocorrem com muito menos frequncia do que as falhas do
sistema (tais como falta de energia e crash).
Memria Terciria
A memria terciria composta por dispositivos mais lentos, tais como:
fitas magnticas e discos ticos (CD Compact Disk e DVD Digital Video
Disk). Esse tipo de memria utilizado para armazenar um grande volume de
dados (backup).
Nos discos pticos, os dados so armazenados de forma ptica e so
lidos por um laser. Sistemas de junkebox de discos pticos contm algumas
unidades de leitura/gravao e vrios discos que podem ser carregados em uma
das unidades automaticamente (por um brao mecnico).
O armazenamento em fita usado principalmente para backup e
arquivamento de dados. Embora a fita magntica seja mais barata do que os
discos pticos, o acesso aos dados muito mais lento, pois a fita precisa ser
acessada sequencialmente desde o incio. Assim, o armazenado em fita
chamado de armazenamento de acesso sequencial, enquanto o armazenamento
em disco chamado de armazenamento de acesso direto ou aleatrio. As fitas
possuem alta capacidade de armazenamento, alm disso, podem ser removidas
das unidades (leitoras/gravadoras) de fita e transportadas. Logo, so bastante
adequadas para o armazenamento de grandes volumes de dados, por longos
perodos de tempo. Bibliotecas de fitas (jukeboxes) so usadas para manter
colees de dados excepcionalmente grandes, como dados de satlites, que
c=CT/CA (dollars/bit)
24 UNIDADE 1
Mtodo de Acesso:
(i) Random-access memory (RAM): Dispositivos de memria
cujas posies podem ser acessadas em qualquer ordem. O
tempo de acesso independente da localizao a ser acessada,
uma vez que existe um mecanismo de acesso (leitura/gravao)
para cada posio de memria. Esse mtodo de acesso
utilizado na memria principal e na memria flash, por exemplo.
Figura 2.2
26 UNIDADE 1
de dados necessitam ser armazenados em discos rgidos (ou seja, em meios de
armazenamento secundrio):
Frequentemente os bancos de dados so muito grandes (ou
seja, envolvem grandes volumes de dados) para caberem
inteiramente na memria principal;
As circunstncias que causam a perda permanente de
dados armazenados so menos frequentes nos meios de
armazenamento secundrio (discos magnticos, por exemplo)
do que nos meios de armazenamento primrio (memria
principal, por exemplo).
O custo de armazenamento por unidade de dados menor nos
discos magnticos do que nos dispositivos de armazenamento
primrio;
Por esses motivos, espera-se que os discos magnticos continuem a ser
a mdia mais utilizada para armazenar grandes bancos de dados nos prximos
anos. Contudo, atualmente, o armazenamento de bancos de dados tanto em
memria flash quanto inteiramente em memria principal (in-memory database)
comeam a ser investigados.
Vale destacar ainda que as tcnicas utilizadas para armazenar grandes
volumes de dados em discos magnticos so importantes tanto para os
administradores de bancos de dados e DBAs (Database Administrators) quanto
para desenvolvedores de SGBDs. Os DBAs devem conhecer as vantagens e as
desvantagens de cada tcnica de armazenamento, a fim de poderem projetar,
implementar e operar, com eficincia, um banco de dados em um SGBD
especfico. Em geral, os SGBDs fornecem diversas opes para a organizao
dos dados, e o processo de projeto fsico envolve escolher, dentre as opes
disponveis, as tcnicas de organizao que melhor se adquem aos requisitos
de uma determinada aplicao. J os desenvolvedores (ou fabricantes) de
SGBDs devem estudar as tcnicas de organizao de dados a fim que possam
implement-las de forma eficiente e, assim, proporcionar boas opes aos DBAs
e usurios de SGBDs.
28 UNIDADE 1
Figura 2.3 Viso geral de um disco rgido
Assim, discos com um mesmo tamanho podem apresentar capacidades
de armazenamento diferentes (uma vez que as densidades de gravao desses
discos podem ser diferentes).
30 UNIDADE 1
Taxa de transferncia de dados (TTr): Taxa na qual os dados
so lidos ou armazenados por segundo. Se N a capacidade
das trilhas em palavras, ento TTr= rN.
Tempo de transferncia de dados de um setor (TT):
Tempo (em segundos) necessrio para transferir dados
de um setor. Se n o tamanho (em palavras) de um
setor, ento TT= n(rN)-1.
Tempo de acesso a um setor (TA): Tempo gasto desde
um pedido de leitura/escrita at o fim da transferncia
de dados. A frmula para determinar o tempo de acesso
de um disco dada por:
TA=TP + TL + TT
TA= TP + (2r)-1 + n(rN)-1
O acesso a disco extremamente lento. Logo, nos SGBD atuais, o
custo de acesso a disco domina (ou seja, o principal componente) o custo de
execuo das consultas. Assim, em relao execuo de uma determinada
consulta SQL pelo SGBD, o custo de acesso a disco maior que o custo de
processamento (custo de utilizao do processador), por exemplo.
32 UNIDADE 1
RAID nvel 2 O RAID 2 utiliza uma organizao de discos com
distribuio paralela (baseada em bytes) e redundncia implementada atravs
de bits de correo, os quais podem ser implementados por meio de bits de
paridade. Vale destacar que se pode utilizar tanto paridade par quanto paridade
mpar.
RAID nvel 3 Nesse nvel, os dados so divididos entre os discos que
compem a matriz (RAID), exceto um, que armazena informaes de paridade.
Assim, se cinco discos compem o dispositivo RAID, quatro discos sero utilizados
para armazenar dados, enquanto um disco ser utilizado para armazenar os
bits de paridade. O RAID 3 consegue oferecer altas taxas de transferncia e
confiabilidade das informaes armazenadas. Para usar o RAID 3, pelo menos
trs discos so necessrios (dois discos de dados e um de paridade).
RAID nvel 4 O RAID 4 no apresenta distribuio, ou seja, os
blocos so armazenados da mesma forma que em discos comuns. Assim, uma
leitura de bloco acessa somente um disco. Isso permite que outras solicitaes
sejam processadas pelos outros discos de forma paralela. A redundncia
implementada atravs de blocos de paridade. Um disco redundante (disco
de paridade) armazena todos os blocos de paridade. Nesse disco, o bloco i
armazena bit de paridade dos blocos i de todos os discos de dados.
RAID nvel 5 O RAID Nvel 5 bastante semelhante ao RAID Nvel
4, exceto pelo fato de que os bits de paridade no ficam armazenados em um
nico disco, mas em todos os discos que compem a matriz. Isso faz com que
a gravao de dados seja mais rpida, pois no necessrio acessar um disco
de paridade em cada gravao. Assim, o disco de paridade no se torna um
gargalo (hot spot). Apesar disso, como a paridade distribuda entre os
discos, o nvel 5 tende a ter um menor desempenho que o RAID 4 nas operaes
de leitura. O RAID 5 o nvel mais utilizado atualmente.
RAID nvel 6 O RAID Nvel 6 semelhante ao RAID Nvel 5. Contudo.
O RAID Nvel 6 utiliza redundncia P + Q, ou seja, armazena informaes
adicionais para recuperar dados no caso de falha em mais de um disco. Assim,
o RAID Nvel 6 garante um maior grau de confiabilidade que o RAID Nvel 5.
Contudo, o RAID 6 requer um mnimo de quatro discos para ser implementado.
RAID nvel 10 ou 1 + 0 Em um RAID 1+0 os dados so primeiramente
espelhados, e, em seguida, para cada espelho h a segmentao (distribuio)
sobre vrios discos.
RAID 0 + 1 O RAID 0 + 1 uma combinao dos nveis 0 (Striping)
e 1 (Mirroring), onde os dados so primeiramente distribudos (segmentados)
Exerccios
34 UNIDADE 1
O ideal seria armazenar as pginas desse arquivo em blocos contguos no
disco e preferivelmente em um mesmo cilindro, pois o acesso ficaria mais
rpido devido menor necessidade de movimentao dos cabeotes de
leitura/gravao.
3. Considere um disco com setores de 512 bytes (tamanho), 2.000 trilhas por
superfcie, 50 setores por trilha, cinco pratos (discos fsicos) de dupla face
e tempo de busca de 10 ms.
- Qual a capacidade de uma trilha em bytes?
tamanho do setor x nmero de setores por trilha =
512 x 50 bytes = 25.600 bytes.
- Qual a capacidade de uma superfcie?
tamanho do setor x nmero de setores por trilha x nmero de
trilhas =
512 x 50 x 2000 bytes = 51.200.000 bytes
- Qual a capacidade de um disco (prato)?
tamanho do setor x nmero de setores por trilha x nmero de
trilhas x nmero de faces =
512 x 50 x 2000 x 2 bytes = 102.400.000 bytes
- Quantos cilindros existem em um disco?
Cilindro o conjunto de trilhas pertencentes a diferentes
superfcies e discos de uma mesma unidade, mas que apresentam a
mesma posio relativa. No disco considerado na questo, cada cilindro
possui 10 trilhas (cinco pratos x duas faces). No entanto, a quantidade
de cilindros do disco igual ao nmero de trilhas existentes em cada
superfcie. Logo, o disco possui 2.000 cilindros.
- Fornea exemplos de tamanhos de blocos vlidos. Pode existir
um bloco de 256 bytes?
Como pelo enunciado os setores do disco possuem 512 bytes,
temos como exemplos de tamanhos de blocos vlidos: 512, 1024, 2048
ou 4096 bytes por bloco. Como o setor a menor unidade de informao
que pode ser escrita no disco (Slide 36) e o setor do disco tem 512 bytes,
ento no possvel existir bloco menor que 512 bytes. Logo, NO pode
existir um bloco de 256 bytes para o disco da questo.
- Podemos ter blocos de 2048 bytes? e de 51.200?
Como pelo enunciado os setores possuem 512 bytes, podemos
ter blocos de 2048 bytes ou mesmo de 51.200, uma vez que 2048 e
36 UNIDADE 1
Tamanho do registo = 100 bytes
Assim, at 10 registros (1.024 / 100) podem ser armazenados
em um bloco, sendo que 24 bytes do bloco ficam ociosos por
no serem capazes de armazenar um registro inteiro.
- Quantos blocos so necessrios para armazenar o arquivo por
inteiro?
100.000 blocos so necessrios para armazenar 1.000.000 de
registros
- Quantos registros de 100 bytes cada podem ser armazenados
usando esse disco?
Capacidade total do disco = (512 x 50 x 2000 x 2 x 5) bytes
Quantidade total de blocos no disco = (512 x 50 x 2000 x 2 x 5)
/ 1024 = 50 x 2000 x 5
Como podemos ter 10 registros em cada bloco, o total de
registros :
10 x qtd. blocos = 10 x (50 x 2000 x 5) = 5.000.000
Logo, 5.000.000 de registros podem ser armazenados usando
esse disco.
- Qual o tempo necessrio para ler um arquivo contendo 100.000
registros de 100 bytes cada sequencialmente?
Ta = Tp + Tl + Tt (Slide 41), onde:
Ta Tempo de acesso a um setor
Tp Tempo de procura = 10 ms = 1 / 100 s
Tl Tempo de Latncia = (2r), onde r a taxa de rotaes/
segundo
Tt Tempo de transferncia = n(rN), onde n o tamanho de
um setor e N a capacidades das trilhas.
r = 5400 rpm = 90 rotaes/segundo
n = 512 bytes
N = (512 x 50) bytes
Em cada bloco cabem 10 registros de 100 bytes. 10.000 o n
de blocos que precisam ser percorridos para a leitura de 100.000
registros. Como cada bloco (1024 bytes) tem dois setores (2 x
512 bytes), precisamos percorrer 20.000 setores para a leitura
de 100.000 registros.
Assim temos:
T = Tp + (2r) + qtd. setores x n(rN)
3. GERENCIAMENTO DE BUFFER
38 UNIDADE 1
SGBD antes de busc-la no disco, verifica se essa j se encontra em algum
bloco (pgina) no buffer. Vale lembrar que todos os dados de um banco de
dados so armazenados em blocos (pginas) e que a menor unidade de leitura e
gravao em um disco rgido uma pgina (bloco). Caso a informao desejada
j se encontre em um determinado bloco do buffer, o SGBD envia aplicao o
endereo desse bloco, para que esse seja lido/acessado pela aplicao. Caso
a informao desejada no se encontre em nenhum dos blocos presentes no
buffer, a cpia do bloco que contm essa informao e que est armazenada
no disco rgido (memria secundria) dever ser copiada para o buffer, criando-
se uma cpia desse bloco na memria principal. Nesse momento, o bloco que
contm a informao requisitada pela aplicao ter duas cpias: uma em disco
e outra no buffer.
Para que isto seja possvel, o gerenciador de buffer precisa alocar
(reservar) um espao no buffer para armazenar a cpia do bloco requisitado
(que est em disco). Caso haja espao no buffer, essa alocao realizada
sem nenhuma dificuldade. Porm, caso todo o espao do buffer esteja ocupado,
ser necessrio retirar algum dos blocos correntemente armazenados no
buffer para liberar espao. Nesse caso, o gerenciador de buffer deve verificar
se o bloco eleito (escolhido) para ser retirado do buffer foi alterado. Em caso
afirmativo, ele dever ser reescrito (gravado) no disco. Caso contrrio, ele pode
ser simplesmente descartado. Em seguida, uma cpia do bloco requisitado
pela aplicao (armazenado em disco) armazenada no espao (bloco) que
foi liberado no buffer. Por fim, o endereo desse bloco (endereo no buffer)
enviado para a aplicao, a fim de que essa possa ler (acessar) a informao
desejada.
O gerenciador de buffer funciona de maneira anloga (semelhante)
ao gerenciador de memria virtual de um sistema operacional. Uma diferena
importante que um banco de dados pode ser muito maior que a memria
virtual de um sistema computacional qualquer. Outra diferena que as tcnicas
utilizadas para gerenciamento do buffer so mais sofisticadas que as de
gerenciamento de memria virtual.
Mais formalmente, um sistema de memria virtual pode ser definido
como um sistema de armazenamento hierrquico, com no mnimo dois nveis de
memria. A maioria dos sistemas de memria virtual implementa hierarquia de
dois nveis, compreendendo:
Uma memria principal M1 (Buffer), cuja capacidade de
armazenamento representada por S1 e cujo custo dado por
40 UNIDADE 1
levada (copiada) do disco (M2) para o buffer (M1).
A taxa de acerto calculada aplicando-se a frmula:
H= N1 / (N1+N2)
Assim, a taxa de acerto tima deve tender a 1. J taxa de no acerto
definida por 1-H.
Na prtica, os SGBDs buscam atingir taxas de acertos maiores que 95%.
Considere que TA1 e TA2 sejam os tempos de acesso de M1 e M2,
respectivamente.
O tempo mdio para o SGBD acessar um dado no sistema de memria
dado por:
TA = H.TA1 + (1-H).TA2 (1)
Caso um determinado bloco (pgina) no seja encontrado em M1, uma
pgina do banco de dados (em disco) contendo a palavra transferida para M1.
Seja TB o tempo de transferncia de uma pgina do disco para o buffer, temos
que:
TA2 = TB + TA1 (2)
Assim, substituindo (2) em (1), temos:
TA = TA1 + (1-H).TB
A razo (r) do tempo de acesso de um sistema de memria virtual com
dois nveis definida como:
r= TA2 / TA1
A eficincia de acesso (e) de um sistema de memria virtual determinada
pela equao:
e= 1 / [r+(1-r).H]
O objetivo obter valores para e prximos a 1. Para isso necessrio
que H seja prximo a 1.
42 UNIDADE 1
a solicitao de um usurio ao sistema de banco de dados envolve diversos
passos. O sistema de banco de dados capaz de determinar antecipadamente
quais blocos sero requisitados por meio da verificao de cada um dos
passos necessrios para executar a operao solicitada pelo usurio. Assim,
diferentemente dos sistemas operacionais, que devem se basear no passado
para prever o futuro, os sistemas de bancos de dados podem possuir e utilizar
informaes relativas ao futuro prximo.
Os SGBDs costumam utilizar os algoritmos LRU (Least Recently Used)
ou Clock2 (Two Round Clock) para gerenciar o buffer na memria principal.
Contudo, o esquema LRU, em banco de dados, mais elaborado que em
sistemas operacionais, pois o sistema de banco de dados capaz de determinar
antecipadamente quais blocos sero necessrios por meio da verificao de
cada um dos passos necessrios para executar a operao solicitada pelo
usurio. Para ilustrar, consideremos a seguinte expresso da lgebra relacional:
Departamento Empregado
Considere que a tabela Departamento possui os atributos DEP_CODIGO
e DEP_NOME. Assuma ainda que a tabela Empregado possui os atributos
EMP_CPF, EMP_NOME e DEP_CODIGO (chave estrangeira utilizada para
representar em que departamento um empregado trabalha).
Suponha que o algoritmo de juno a ser utilizado o Nested-Loop Join
(mostrado a seguir). Assuma tambm que as duas relaes desse exemplo
sejam armazenadas em arquivos separados.
Para cada tupla d de departamento faa
Para cada tupla e de empregado faa
Se d[EMP_CODIGO] = e[EMP_CODIGO] ento
Incio
Seja x definida da seguinte forma:
x[DEP_CODIGO]:= d[DEP_CODIGO]
x[DEP_NOME]:= d[DEP_NOME]
x[EMP_CPF]:= e[EMP_CPF]
x[EMP_NOME]:= e[EMP_NOME]
Inclua a tupla x como parte do resultado de departamento
x empregado
Fim
Fim
Fim
44 UNIDADE 1
buffer. Logo, uma das pginas presentes no buffer deve ser selecionada para sair
do buffer, liberando espao para que a pgina 1 possa ser copiada para o buffer.
Que pgina ser escolhida para deixar o buffer? Segundo o algoritmo LRU, a
pgina menos recentemente utilizada. Ora, no buffer esto as pginas de 2 a 11
do arquivo lido (tabela empregado). A pgina menos recentemente utilizada a
pgina 2. Logo, a pgina 2 ser escolhida para deixar o buffer. Em seu lugar ser
carregada uma cpia da pgina 1. Nesse instante esto no buffer as pginas: 1,
3, 4, 5, 6, 7, 8, 9, 10 e 11. Qual prxima pgina a ser requisitada pela operao
de varredura? A prxima pgina requisitada ser a pgina 2. Porm, a pgina
2 no se encontra no buffer. Qual a pgina que ser escolhida para deixar o
buffer pelo algoritmo LRU? A pgina 3. Qual a prxima pgina a requisitada
pela operao de varredura? A pgina 3. Observe que esse comportamento se
mantm at a leitura da ltima pgina (pgina 11) pela operao de varredura.
Portanto, nesse exemplo, todas as execues da operao de varredura iro
apresentar uma taxa de acerto de 0%.
Assim, usando LRU, todas as operaes de scan (sobre o arquivo) tero
que ler todas as pginas do arquivo do disco e levar para o buffer pool (operao
de I/O). Nessa situao, chamada sequential flooding, LRU a pior estratgia
para substituio de pginas.
Podemos observar, para esse exemplo, que uma vez que uma tupla
de empregado tenha sido processada, a tupla no ser necessria novamente.
Portanto, uma vez que o processamento de um bloco inteiro de tuplas de
empregado seja completado, esse bloco no mais necessrio na memria.
Entretanto, como ele foi usado recentemente ele ainda permanecer no buffer
por um longo perodo de tempo. O gerenciador de buffer deveria ser instrudo a
liberar o espao ocupado por um bloco de empregado assim que a ltima tupla
tenha sido processada. Essa estratgia de gerenciamento de buffer chamada
de arremesso imediato.
Agora considere o algoritmo de juno Nested Loop Join. Cada bloco
de tuplas de empregado precisa ser lido uma vez para cada tupla da relao
departamento. Assim, quando o processamento de um bloco de tuplas de
empregado concludo, esse no ser mais necessrio at o processamento
da prxima tupla de departamento, antes disso todos os demais blocos de
empregado devero ser lidos novamente. Entretanto, como esse bloco foi usado
recentemente ele ainda permanecer no buffer por certo perodo de tempo, o
que inteiramente desnecessrio.
46 UNIDADE 1
Vale destacar que a estratgia utilizada por um gerenciador de buffer
para a substituio de blocos influenciada por outros fatores alm do tempo no
qual o bloco foi carregado para o buffer (como no caso do FIFO) ou referenciado
(como no caso do LRU e MRU). Se o sistema est processando solicitaes de
vrios usurios concorrentemente, o subsistema de controle de concorrncia
pode ter de atrasar algumas solicitaes para assegurar a preservao da
consistncia do banco de dados. Se o gerenciador de buffer receber informaes
do subsistema de controle de concorrncia indicando quais solicitaes esto
sendo atrasadas, ele pode usar essas informaes para alterar sua estratgia
de substituio de blocos. Especificamente, os blocos necessrios para as
solicitaes ativas (no atrasadas) podem ser retidos no buffer, enquanto os
blocos relacionados s solicitaes atrasadas podem ser bons candidatos para
deixar o buffer.
O subsistema de recuperao de falhas tambm impe restries
rigorosas substituio de blocos. Se um determinado bloco b tiver sido
modificado (alterado), o gerenciador de buffer no tem permisso de escrever
de volta no disco a nova verso do bloco b (presente no buffer), uma vez que
isso destruiria a verso antiga do bloco b (armazenada em disco). Em vez disso,
o gerenciador de buffer deve obter permisso do subsistema de recuperao
de falhas antes de escrever o bloco b de volta no disco. O subsistema de
recuperao de falhas pode exigir (para garantir a consistncia dos dados) que
determinados blocos (por exemplo, os blocos x e y) tenham que sair do buffer
antes da sada do bloco b. Assim, o subsistema de recuperao de falhas s
dar a permisso para que o bloco b saia do buffer aps a sada dos blocos x e y.
O gerenciador de buffer, alm de utilizar os conhecimentos acerca
da solicitao que est sendo processada, pode utilizar tambm informaes
estatsticas relativas probabilidade de acesso a determinadas pginas
(blocos). O dicionrio de dados, por exemplo, uma das partes do sistema de
banco de dados mais frequentemente acessadas. Logo, o gerenciador de buffer
no deveria tentar remover blocos do dicionrio de dados do buffer (ou seja,
da memria principal) a no ser que outros fatores determinem que isso seja
feito. De forma similar, como as estruturas de ndice podem ser acessadas mais
frequentemente que as prprias pginas de dados (blocos que armazenam as
tuplas das relaes), o gerenciador de buffer, em geral, no deveria remover os
blocos de ndices da memria principal (buffer), a menos que no hajam outras
alternativas.
48 UNIDADE 1
UNIDADE 2
Processamento de
Transaes
Resumindo
Esta unidade discute em detalhes o problema do processamento de transaes em
bancos de dados. Define, precisamente, os conceitos do modelo convencional de
transaes. Discute e examina noes de transao e schedules. O critrio de corretude
convencional, denominado de serializabilidade, descrito. Vantagens e desvantagens
desse modelo so apontadas e discutidas. Aborda tambm a relao entre corretude e
confiabilidade de schedules.
PROCESSAMENTO DE TRANSAES
1. INTRODUO
52 UNIDADE 2
Programa-1 Programa-2
Select saldo into: valor1
From t_conta
where num_conta = 12
update t_conta
set saldo = :valor1
where num_conta = 12
Valor2 = valor2 +300 Select saldo into :valor1
From t_conta
where num_conta = 12
inconsistente retrieval
Figura 2. Transies Incorretas
Esse um problema comum em SGBDs. No decorrer desse captulo,
veremos mais exemplos como esse, bem como a forma existente para trat-lo.
Para entender o conceito de concorrncia em banco de dados, faz-se
necessrio entender, primeiramente, o conceito de transao.
T1 = r1(conta_12) w1(conta_12)
Como visto, transao pode ser entendida como uma srie de operaes
sobre itens no banco de dados que podem alterar o seu estado. As operaes
so delimitadas com uma instruo de incio da transao (Begin Transaction)
e no final com uma instruo de fim da transao Commit para efetivar as
alteraes, ou uma instruo Rollback quando for necessrio descartar todas as
alteraes realizadas no banco de dados.
Para alguns renomados autores, transao :
uma unidade lgica de processamento no BD (Navathe)
uma unidade de execuo do programa que acessa e possivelmente
atualiza vrios itens de dados (Silberschatz)
Possveis operaes dentro de um banco de dados:
BEGIN_TRANSACTION Incio da execuo de uma transao
END_TRANSACTION Fim da Transao
READ(x) ou WRITE(x) Operaes de leitura de um dado x e escrita
do dado x em um banco de dados
COMMIT Transao completou sua execuo com sucesso
ROLLBACK (ou ABORT) Transao foi abortada, no terminou com
sucesso e as mudanas realizadas devem ser desfeitas.
54 UNIDADE 2
1.3 Estados de uma transao
56 UNIDADE 2
efetuada)
A atomicidade garante que todas as operaes sero efetuadas
ou nenhuma delas ser. Para essa suposta falha, a operao de
retirada desfeita retornando o saldo da conta X para R$ 1.000
Consistncia
Se os dados estiverem consistentes antes da transao, elas
devem permanecer consistentes depois da transao tambm.
Isolamento
Operaes no podem se intercalar, gerando um estado
inconsistente.
Mesmo que uma operao leia informaes da outra, a
consistncia deve ser garantida.
Durabilidade
Quando uma transao executou com sucesso, preciso garantir
que nenhuma falha resulte na perda dos dados j armazenados.
Exerccios
1. Conceitue transao em um banco de dados?
2. EXECUES CONCORRENTES
58 UNIDADE 2
Transao consiste de muitas etapas como: atividades de E/S,
utilizao da CPU que podem ser executadas em paralelo. Tudo
isso aumenta o throughput, isto , o nmero de transaes
executadas em determinada quantidade de tempo e a utilizao
dos recursos.
Tempo de espera reduzido
Pode haver transaes curtas e longas. Se a execuo for
serial, uma transao curta pode esperar muito tempo at
uma que transao longa termine. Se elas forem executadas
simultaneamente, compartilhando os ciclos da CPU, o tempo
mdio de resposta ser reduzido.
No SGBD, o responsvel pelo controle de concorrncia o escalonador
(Scheduler). Ele o responsvel por fazer o entrelaamento (interleaving) de
operaes. Por entrelaamento, entenda que operaes de um programa podem
ser executadas entre duas operaes de outro programa.
O Schedule (histria) representa a ordem cronolgica em que as
instrues so executadas no sistema. O escalonador (Scheduler) define
uma sequncia de operaes de um conjunto de transaes concorrentes,
preservando a ordem das operaes em cada uma das transaes.
Escalonador serializvel: As operaes de cada transao so
executadas de maneira consecutiva sem nenhuma intercalao nas operaes
(Figura 6).
Soluo ineficiente!!!
Vrias transaes podem esperar muito tempo para serem
executadas.
A CPU pode ficar muito tempo ociosa.
Enquanto uma transao faz I/O, por exemplo, outras
transaes poderiam ser executadas.
T1 T2
read (X)
X = X - 20
write (X)
execuo read (Y)
serial Y = Y + 20
write (Y)
read (Y)
X = X + 10
write (X)
60 UNIDADE 2
Uma transao Ty grava em um dado atualizado por uma transao Tx
T1 T2
read (X)
X = X - 20
read (Z)
X = Z + 10
write (X)
read (Y)
write (X) a atualizao de X
Y = Y + 30 por T1 foi perdida!
write (Y)
Figura 7. Escalonador no serializvel
leitura suja (dirty-read)
TX atualiza um dado X, outras transaes posteriormente leem X, e
depois TX falha (Figura 8).
T1 T2
read (X)
X = X - 20
write (X)
read (X) T2 leu um valor
X = X + 10 de X que no ser
write (X) mais vlido!
read (Y)
abort (Y)
Figura 8. Exemplo leitura suja
Exerccios
3. ISOLAMENTO DE TRANSAES
62 UNIDADE 2
T1 T2
Select saldo into :valor1
From t_conta
where num_conta = 12
update t_conta
set saldo = :valor1
where num_conta = 12
update t_conta
set saldo = :valor2
where num_conta = 13
Select saldo into :valor1
From t_conta
where num_conta = 12
64 UNIDADE 2
3.2.1. Equivalncia de estado final
o Dois Schedules sobre um conjunto = {T1, T2, ..., Tn} so equivalentes
de estado final (S FS S) se, e somente se,
(i) tm as mesmas operaes pertencentes s transaes de e
(ii) produzem o mesmo estado final no BD, se forem executados
sobre um mesmo estado inicial
PROBLEMA: Schedules no capturam o conceito de
estados inicial e final.
3.2.2 Equivalncia de viso
o Dois Schedules S e S sobre um conjunto ={T1, T2, ..., Tn} so
equivalentes de viso (S V S) se, e somente se,
(i) tm as mesmas operaes pertencentes a transaes de e
(ii) para cada operao ri(x) de Ti , o valor lido por ri o mesmo
nos dois Schedules
(iii) Se wi(x) a ltima operao de escrita sobre x em S, ento wi(x)
a ltima operao de escrita sobre x em S
PROBLEMA: Controle sobre todas as operaes de
leitura e de escrita.
Para entendermos o prximo tipo de equivalncia (equivalncia em
conflito), precisamos entender primeiro o conceito de operaes em conflito.
o Operaes em conflito (conflitantes): Duas operaes esto em
conflito se e somente se:
1. So operaes de transaes distintas
2. So executadas sobre um mesmo objeto e
3. Pelo menos uma das duas operaes uma operao de
escrita (write)
Considere o exemplo mostrado a seguir.
T1=r1(x)w1(x)
T2=r2(x)w2(y)
S= r2(x)r1(x)w2(y)w1(x)
OBS: Observe que as operaes r2(x) e w1(x) esto em conflito, uma vez que
pertencem a transaes diferentes (a primeira operao, r2(x), pertence
transao T2, enquanto a segunda operao, w1(x), pertence
transao T1; as duas operaes atuam sobre o mesmo objeto (objeto
ou item x) e pelo menos uma das operaes uma operao de escrita
(no caso desse exemplo, a segunda operao uma operao de
escrita).
3.3 Serializabilidade
66 UNIDADE 2
Serializabilidade por conflito (CSR)
Um schedule S serializvel por conflito, se ele equivalente de
conflito a algum Schedule serial.
Os trs critrios de corretude podem ser utilizados para produzir
Schedules corretos. Ento, surge uma pergunta: Qual critrio a adotar?
Vale destacar que os trs critrios de corretude apresentam
diferentes graus de paralelismo, uma vez que permitem
diferentes nveis de entrelaamento.
Para ilustrar, considere o seguinte exemplo:
SS= r2(x)w2(x,5)r1(x)w1(x,10) e o valor inicial de x 2
S1= r1(x)r2(x)w2(x,5)w1(x,10)
68 UNIDADE 2
Assim, SG(S)=(V,E) tal que:
- SG(S) um grafo direcionado
- V=
- Ti Tj E
i. Ti,Tj ,
ii. p OP(Ti), q OP(Tj), tal que p conflita com q e p
<S q
O grafo de serializao de um schedule um grafo direcionado, onde
cada transao um vrtice do grafo e as operaes em conflito so as arestas
que conectam os vrtices (transaes). Um exemplo desse grafo pode ser
observada na Figura 12.
Teorema
Um schedule S serializvel por conflito o grafo de serializao
de S no contm ciclos
- Para verificar existncia de ciclos em grafos existem
algoritmos que podem ser executados em tempo polinomial,
ou seja, cuja complexidade assinttica O(n2), onde n
representa o nmero de transaes.
Exerccios
1. Verifique se o seguinte Schedule serializvel por estado final e por viso.
Justifique sua resposta.
T1=r1(y)r1(x)w1(y) T2= w2(u)r2(x)r2(y)w2(x)
T3=r3(y)r3(x)w3(u)w3(z) T4= r4(v)w4(u)
S=r4(v)r3(y)r1(y)w2(u)r2(x)r2(y)w1(y)w4(u)w2(x)r1(x)r3(x)w3(u)w3(z)
S=r3(y)r1(y)r1(x)r2(x)w1(y)r2(y)w2(x)r3(x)w3(z)
T3=r3(y)r3(x)w3(u)w3(z) T4=r4(v)w4(u)
S=r4(v)r3(y)r1(y)r1(x)w2(u)r2(x)w1(y)r2(y)w4(u)r3(x)w2(x)w3(u)w3(z)
70 UNIDADE 2
5. Suponha duas transaesT1eT2:
BEGIN TRANSACTION T1
UPDATEBanco
SETSaldo= ((SELECTSaldoFROMBancoWHEREConta= 10)
100)
WHERE Conta = 10
UPDATE Banco
SETSaldo= ((SELECTSaldoFROMBancoWHEREConta= 20) +
100)
WHEREConta= 20
COMMIT TRANSACTION T1
BEGIN TRANSACTION T2
UPDATEBanco
SETSaldo= ((SELECTSaldoFROMBancoWHEREConta= 20)
200)
WHERE Conta = 20
UPDATE Banco
SETSaldo= ((SELECTSaldoFROMBancoWHEREConta= 30) +
200)
WHEREConta= 30
COMMIT TRANSACTION T2
READ Conta 10
WRITE Conta 10
READ Conta 20
WRITE Conta 20
Seguindo o exemplo acima, obtenha as instrues de leitura e de escrita dos
dados da transaoT2.
S= r2(u)w1(x,2)r2(x)w2(y, x+3)c2
Aps o abort de T1
o r2(x) torna-se uma leitura inconsistente (dirty read)
o Desfazer execuo de T1
- Violao da semntica da operao r2(x) (r2(x) leu o
valor que j tinha sido alterado por w1(x))
o Abortar T2
- Violao da semntica da operao c2 (nenhuma
72 UNIDADE 2
transao pode ser abortada aps ter realizado Commit)
Execuo de S correta (serializvel), porm
o Execuo de S no confivel
Por exemplo:
S1= r2(u)w1(x,2)r2(x)w2(y, x+3)
Sempre que wi(x) <S pj ento ci <S pj ou ai <S pj, onde pj {r(x), w(x)}
74 UNIDADE 2
Exerccios
Resumindo
Esta unidade discute em detalhes o problema de controle de concorrncia em bancos de
dados. Vrios algoritmos para controle de concorrncia so apresentados e discutidos.
A apresentao de cada mtodo acompanhada de uma discusso sobre problemas
adicionais, ocasionados pelo mtodo, que possam impedir o trmino normal das
transaes. Uma classificao desses protocolos tambm apresentada e discutida.
Controle de Concorrncia
1. INTRODUO
Exerccios
80 UNIDADE 3
2. DESCRIO DOS PROTOCOLOS CONSERVADORES
Este captulo discute os protocolos baseados em bloqueios, os quais
so utilizados no controle de concorrncia em SGBDs relacionais. Inicialmente
os problemas de gerncia de bloqueios e de tratamento de impasses (deadlocks)
so abordados. Em seguida, um mtodo que utiliza o conceito de bloqueio
para assegurar a gerao de schedules (execues) serializveis, denominado
bloqueio em duas fases, apresentado. Por fim, a correo do mtodo provada.
Exemplo 1
82 UNIDADE 3
T1 = l1 (x) r1(x) l1(y) r1(y) w1(x) w1(y) u1(x) u1(y) c1
T2 = l2(x) r2(x) u2(x) c2
Considere agora a seguinte execuo (schedule):
S1 = r1(x) r2(x) c2 r1(y) w1(x) w1(y) c1
ou, mais precisamente:
S1 = l1 (x) r1(x) l2(x) r2(x) u2(x) c2 l1(y) r1(y) w1(x) w1(y) u1(x) u1(y) c1
S2 = l1 (x) r1(x) l1(y) r1(y) w1(x) w1(y) u1(x) l2(x) r2(x) u2(x) c2 u1(y) c1
T1 T2
Figura 2.1 Grafo de Serializao do Schedule S2.
Porm, se montarmos o grafo de serializao para o schedule S1 (figura
2.2), veremos que esse tambm no possui ciclo. Assim, podemos concluir que
S1 tambm serializvel por conflito (e, por conseguinte, correto). Contudo, o
schedule S1 no seria gerado pelo protocolo apresentado, apesar de apresentar
um grau de concorrncia maior que o schedule S2. Esse maior grau de
concorrncia decorre do fato de que no schedule S1 a operao r2(x) executada
bem antes do que no schedule S2.
T1 T2
Figura 2.2. Grafo de Serializao do Schedule S1.
84 UNIDADE 3
Alm disso, a tabela de bloqueios deve ser modelada agora como uma
coleo de tuplas (x,modo,T, F) onde:
i) x o nome de um item de dado (objeto);
ii) modo representa a modalidade pela qual o item de dado x foi bloqueado
(leitura ou escrita);
iii) T conjunto das transaes que mantm bloqueios sobre x. Se x estiver
bloqueado para escrita T ser um conjunto unitrio, ou seja, T conter uma nica
transao. Se x estiver bloqueado para leitura o conjunto T poder conter mais
de uma transao;
iv) F uma fila de espera para x, contendo pares de valores do tipo <Ti,
modo> onde Ti representa o nome de uma transao e modo indica a modalidade
do bloqueio requisitado por Ti.
Agora, o protocolo de bloqueio bsico, utilizando bloqueios de leitura e
de escrita, pode ser descrito da seguinte forma:
Passo 1: Inicialmente a tabela de bloqueios est vazia ( indica a fila, F, vazia);
Passo 2: Ao receber solicitao para bloquear o objeto x para a transao Ti,
por meio de uma operao rli(x) ou wli(x), genericamente representada por pli(x),
pesquise a tabela de bloqueios procurando uma tupla cujo primeiro elemento
seja x:
i) se nenhuma tupla for encontrada (ou seja, se x est livre), bloqueie
x para Ti, no modo requisitado, acrescentando a tupla (x, modo, Ti, ) tabela.
ii) caso contrrio, o objeto x j se encontra bloqueado por uma ou mais
transaes. Nesse caso, verifique se o modo (leitura ou escrita) do bloqueio
solicitado por Ti compatvel com o modo pelo qual o item x j se encontra
bloqueado:
1) em caso afirmativo, bloqueie x para Ti, no modo requisitado,
atualizando a tupla (x, modo, T, F) tabela, ou seja, insira
Ti em T.
2) caso contrrio, acrescente Ti ao final da fila de espera para x
na tripla encontrada, ou seja, insira <Ti, modo> em F.
Passo 3: Ao receber solicitao da transao Ti por meio da operao ui(x) para
liberar o objeto x, pesquise a tabela de bloqueios procurando uma tupla cujo
primeiro elemento seja x e Ti T.
i) se nenhuma tupla for encontrada, ignore a liberao de x.
ii) caso contrrio, seja (x, modo, T, F) a tupla encontrada, onde Ti T.
a) se T {Ti} =
- se a fila F estiver vazia (F = ), retire a tupla da tabela,
liberando x.
- se a fila F no estiver vazia (F ), passe o controle
Exemplo 2
Exemplo 3
T1 = rl1(B) r1(B) wl1(B) w1(B, B-50) u1(B) rl1(A) r1(A) wl1(A) w1(A, A+50)
u1(A) c1
86 UNIDADE 3
A transao T2 apresenta o saldo total das contas A e B, isto , a soma
A+B e definida por:
S1 = rl1(B) r1(B) wl1(B) w1(B, B-50) u1(B) rl2(A) r2(A) u2(A) rl2(B) r2(B) u2(B)
Display (A+B) c2 rl1(A) r1(A) wl1(A) w1(A, A+50) u1(A) c1
T1 T2
rl1(B)
r1(B)
wl1(B)
w1(B, B-50)
u1(B)
rl2(A)
r2(A)
u2(A)
rl2(B)
r2(B)
u2(B)
Display(A+B)
c2
rl1(A)
r1(A)
wl1(A)
w1(A, A+50)
u1(A)
c1
Exemplo 4
88 UNIDADE 3
Exemplo 5
T1 = rl1(B) r1(B) wl1(B) w1(B, B-50) u1(B) rl1(A) r1(A) wl1(A) w1(A, A+50)
u1(A) c1
T3 = rl1(B) r1(B) wl1(B) w1(B, B-50) rl1(A) r1(A) wl1(A) w1(A, A+50) u1(B)
u1(A) c1
A transao T4 corresponde T2, com desbloqueio ao final da
transao, e definida como:
T4 = rl2(A) r2(A) rl2(B) r2(B) Display (A+B) u2(A) u2(B) c2
Observe agora a execuo a seguir (figura 2.7).
T3 T4
rl1(B)
r1(B)
wl1(B)
w1(B, B-50)
rl2(A)
r2(A)
rl2(B)
rl1(A)
r1(A)
wl1(A)
Figura 2.7 Execuo Concorrente S1 (Exemplo 5).
Observe que no momento em que a transao T4 tenta obter um bloqueio
de leitura sobre o item de dado B (rl2(B)), esse j se encontra bloqueado em um
modo incompatvel (escrita) pela transao T3. Logo, a transao T4 ir esperar
at que a transao T3 libere seu bloqueio de escrita sobre o item B. Assim, a
transao T4 ter sua execuo suspensa at que ela possa obter um bloqueio
90 UNIDADE 3
escala no qual a transao obteve seu ltimo bloqueio (fim da fase de expanso)
chamado ponto de bloqueio da transao. Assim, as transaes podem ser
ordenadas de acordo com seus pontos de bloqueio.
Exemplo 6
T1=w1(x,2) r1(z) c1
S1= rl2(u) r2(u) wl1(x) w1(x,2) u1(x) rl2(x) r2(x) wl2(y) w2(y, x+3) u2(u) u2(x)
u2(y) c2 a1
Observe que o schedule S1 pode ser gerado pelo protocolo 2PL bsico,
pois uma vez que a transao T1 libera o bloqueio obtido sobre o item de dado
x, essa entra na fase de encolhimento e no solicita mais nenhum bloqueio.
Contudo, a execuo S1 no confivel (recupervel) uma vez que w1(x,2) <S1
r2(x) e c1 no precede c2 em S1. Assim, o abort da transao T1 deveria causar o
abort de T2, uma vez que T2 leu um valor escrito por T1. Contudo a transao T1 j
commitou (concluiu) e no pode mais ser desfeita. Logo, podemos concluir que
o protocolo 2PL bsico pode gerar execues (schedules) no confiveis,
ou seja, no recuperveis. Consequentemente, o protocolo 2PL bsico no
evita aborts em cascata e nem gera execues precisas (strict).
Contudo, o protocolo 2PL bsico assegura a gerao de execues
(schedules) serializveis por conflito.
92 UNIDADE 3
de commit ou abort.
S1= rl2(u) r2(u) wl1(x) w1(x,2) u1(x) rl2(x) r2(x) wl2(y) w2(y, x+3) u2(u) u2(x)
u2(y) c2 a1
Observe que esse schedule no seria gerado pelo protocolo 2PL Preciso,
pois a operao u1(x) s poderia ser realizada aps o commit ou abort de T1.
Consequentemente, a transao T2 no conseguiria obter o bloqueio de leitura
sobre o item x (rl2(x)) e ficaria esperando at que a transao T1 libere o bloqueio
de escrita anteriormente obtido sobre o item x. Assim, a execuo gerada pelo
protocolo 2PL Preciso seria:
S2= rl2(u) r2(u) wl1(x) w1(x,2) a1 ...
94 UNIDADE 3
2.2 Tratamento de Impasse (deadlock)
Exemplo 7
A figura 2.9 ilustra o grafo wait-for para o Schedule S1. Observe que a
transao T1 ao tentar obter um bloqueio de escrita sobre o item x (wl1(x)) ir
esperar pela transao T2, uma vez que T2 j detm um bloqueio (leitura), rl2(x),
em modo incompatvel com o bloqueio desejado por T1. Nesse momento, uma
aresta T1 T2 ser no grafo wait-for. Em seguida, a transao T2 tenta obter um
bloqueio de escrita sobre o item x (wl2(x)). Contudo, como a transao T1 j detm
um bloqueio (leitura), rl1(x), em modo incompatvel com o bloqueio desejado por
T2. Logo, T2 vai esperar por T1 e uma aresta T2 T1 ser inserida no grafo
wait-for. Porm, essa nova aresta introduz um ciclo no grafo wait-for. Assim,
o escalonador ir detectar que T1 e T2 esto envolvidas em uma situao de
impasse (deadlock). A transao T2, por ser mais recente (iniciou sua execuo
aps a transao T1) ser escolhida como vtima, e, consequentemente, ser
abortada.
96 UNIDADE 3
2.2.2 Preveno de Impasses (Deadlocks)
98 UNIDADE 3
priorizadas. Essa escolha decorre da expectativa que as transaes mais jovens
tenham executado uma quantidade menor de operaes, logo o trabalho a ser
refeito deve ser menor. Contudo, essa escolha apresenta o risco de que uma
determinada transao Tj (jovem) seja sempre escolhida como vtima, sendo
sempre reiniciada, ao envolver-se em deadlocks com transaes mais antigas.
Assim, Tj poderia ser abortada continuamente, fenmeno denominado de
livelock, ou enfraquecimento.
A soluo para essa situao consiste em ao reiniciar uma transao
Tj no reiniciar o seu timestamp (ts(Tj)), ou seja, manter um nico timestamp
para cada transao. Dessa forma, razovel esperar que as transaes mais
antigas que Tj em algum momento concluam sua execuo, ficando Tj como
a transao mais antiga, passando a ter prioridade sobre as transaes mais
recentes que ela.
Exemplo 8
100 UNIDADE 3
Figura 2.11 Relacionamento entre as Diferentes Granularidades.
A ideia principal consiste em que o bloqueio de um determinado objeto (n)
no grafo de granularidades implica que seus descendentes so implicitamente
bloqueados (com o mesmo tipo de bloqueio). Alm disso, propagam-se para os
seus ascendentes os efeitos do bloqueio.
A fim de ilustrao considere a rvore da figura 2.12, a qual consiste
em quatro (4) nveis de ns. O nvel mais alto representa o banco de dados
(BD) como um todo. Abaixo, h ns do tipo rea; o BD constitudo exatamente
dessas reas. Cada rea, por sua vez, possui ns do tipo arquivo/relao/tabela
como filhos. Cada rea constituda exatamente daquelas tabelas que so seus
ns filhos. Nenhuma tabela est em mais de uma rea. Finalmente, cada tabela
possui ns do tipo registro/tupla. Nenhum registro pode estar em mais de um
arquivo.
102 UNIDADE 3
Um bloqueio intencional (ou de advertncia) de leitura representa a
inteno de obter um bloqueio compartilhado sobre um elemento secundrio. As
regras do protocolo so:
Vale destacar que o protocolo 2PL com mltipla granularidade exige que
os bloqueios sejam feitos de cima para baixo (top-down da raiz para as folhas),
enquanto a liberao deve ser de baixo para cima (bottom-up das folhas para
a raiz).
104 UNIDADE 3
Exemplo 9
T1 irl
Filme
T2 iwl
Princpios de Funcionamento
Os princpios gerais que norteiam o protocolo 2V2PL so discutidos a
seguir:
- Para cada objeto x duas verses so mantidas: x e xi
- Uma operao de escrita de uma transao Tk sobre um objeto x gera
uma nova verso xi de x
- Para executar a operao de escrita:
Tk obtm primeiro um bloqueio de escrita sobre x para
prevenir que nenhuma outra transao
- Leia xi ou
- Escreva uma nova verso de x
Qualquer outra transao pode ler x
- Quando Tk executa seu commit, xi torna-se a nica verso de x
A verso anterior torna-se inacessvel
Vantagens
Podemos observar que o protocolo 2V2PL apresenta duas vantagens
principais, so elas:
- Leituras sobre x no so atrasadas devido a uma escrita sobre x
- Escritas sobre x no so atrasadas devido a uma leitura sobre x
106 UNIDADE 3
algoritmo que pode ser utilizado para implementar o protocolo 2V2PL.
Comentrios
O protocolo 2V2PL produz escalonamentos (schedules) serializveis por
conflito e precisos, ou seja, histrias corretas e que evitam aborts em cascata.
Alm disso, esse protocolo apresenta um grau de paralelismo maior, uma vez
que um mesmo item pode ser lido e escrito por transaes diferentes de forma
simultnea. Por esses motivos, o protocolo 2V2PL ganhou enorme popularidade
e, atualmente, j implementado pelos principais SGBDs (Oracle, PostgreSQL,
SQLServer, dentre outros).
Exemplo 10
Exemplo 11
108 UNIDADE 3
converter o bloqueio de escrita wl1(x) em um bloqueio de certificao cl1(x).
Porm, essa converso no ser realizada, pois existe um bloqueio incompatvel,
nesse caso rl2(x). Logo, a transao T1 ir esperar at que a transao T2 libere
o bloqueio rl2(x). Dessa forma, a situao de impasse (deadlock) est formada.
Logo, podemos concluir que o protocolo 2V2PL no est livre da ocorrncia de
deadlocks.
Exemplo 12
110 UNIDADE 3
transaes, permitindo assim controlar a relao entre o grau de concorrncia e
o nvel de consistncia desejado.
Um nvel de isolamento define:
Escopo do bloqueio;
Durao do bloqueio.
Quanto ao escopo um bloqueio pode ser:
Bloqueio de objeto: Bloqueia um objeto (tupla, por exemplo) especfico
do banco de dados;
Bloqueio de predicado: Bloqueia um conjunto de objetos que satisfazem
uma determinada condio. Assim, bloqueiam objetos existentes no
banco de dados, objetos ainda no existentes no banco de dados, mas
que satisfariam o predicado caso fossem includos no banco de dados,
e, objetos a serem alterados, que passariam a satisfazer o predicado
aps a alterao.
112 UNIDADE 3
Non-Repeatable
Dirty Read Phantom
Read
Read Uncommitted Sim Sim Sim
Read Committed No Sim Sim
Repeatable Read No No Sim
Serializable No No No
Figura 2.17 Nveis de Isolamento ANSI/ISSO SQL
Dirty Read Ocorre quando uma transao (T1) modifica determinada informao
e, em seguida, outra transao (T2) l a mesma informao antes que T1 realize
sua operao de commit ou rollback (abort). Assim, caso a transao T1 seja
cancelada (abortada), T2 ter lido uma informao que nunca chegou a existir
oficialmente na base de dados.
Non-Repeatable Read Ocorre quando uma transao T1 l um determinado
item de dado. Posteriormente, outra transao T2 apaga ou modifica esse item.
Em seguida, quando a transao T1 tenta ler novamente o mesmo item de dado
lido anteriormente, essa vai observar um valor diferente do valor lido inicialmente.
Phantom Ocorre quando uma transao T1 l um conjunto de itens que
satisfazem uma determinada condio de seleo. Em seguida, uma transao
T2 modifica ou insere itens de dados que satisfazem a condio de seleo
utilizada por T1. Depois disso, T1 repete a consulta executada anteriormente,
com a mesma condio de seleo, obtendo, porm, um resultado diferente, por
exemplo, recuperando itens que no foram recuperados na primeira consulta
(leitura).
Agora que conhecemos os fenmenos que deseja-se evitar, podemos
definir formalmente os diferentes nveis de isolamento do padro ANSI/ISSO
SQL.
Read Uncommitted Esse o primeiro e menos restritivo nvel de isolamento.
Nesse nvel podem ocorrer os trs fenmenos estudados. Por outro lado,
possibilita o maior grau de concorrncia, dentre os diferentes nveis de isolamento
do padro SQL. Nesse nvel de isolamento, temos que:
Bloqueios de leitura: No so necessrios.
Bloqueio de escrita: So de curta durao tanto para objetos (tuplas de
uma tabela, por exemplo) quanto para predicados.
Read Commited Esse nvel o usado por padro no Oracle, PostgreSQL
e SQL Server. Esse nvel evita a ocorrncia do fenmeno leitura suja (Dirty
Read). Porm, no evita os fenmenos leitura no repetvel (Non-Repeatable
- Nonrepeatable read
- Lost update
114 UNIDADE 3
Observe que o Schedule S3 no poderia ser produzido no nvel de
isolamento Cursor Stability uma vez que o bloqueio de leitura obtido pela transao
T2 sobre o item x somente ser liberado quando o cursor for movimentado para
o prximo item de dado, o que s vai ocorrer aps a transao T2 executar sua
operao de escrita em x (ou seja, w2(x)).
Commit
116 UNIDADE 3
Exerccios
1. Sob que condies melhor evitar conflitos do que permitir que eles
ocorram para depois detect-los?
T1 : r1(A)
r1(B)
if A = 0 then B := B + 1;
w1(B)
T2 : r2(B)
r2(A)
if B = 0 then A := A + 1;
w2(A)
S S X I
S verdadeiro falso falso
10. Explique o fenmeno fantasma. Por que esse fenmeno leva execuo
incorreta apesar do uso de um protocolo que assegura a serializabilidade?
Soluo:
118 UNIDADE 3
2. Para cada uma das opes baixo modifique o schedule S a fim
de criar um novo schedule (completo) T tal que:
Soluo:
Lembrando (Definies):
Logo, T recupervel.
b) T recupervel.
15. Em que situao o protocolo 2V2PL pode provocar que uma transao
espere indefinidamente para terminar sua execuo?
Soluo:
S=r4(v)r3(y)r1(y)r1(x)w2(u)r2(x)w1(y)c1r2(y)r3(x)w2(x)c2w4(u)c4w3(u)w3(z)c3
20 O nvel de isolamento repeatable read sofre do fenmeno de fantasma
(phanton). Considere que o DBA de sua empresa definiu o nvel de
120 UNIDADE 3
isolamento repeatable read para todas as transaes. Construa um
schedule onde esse fenmeno pode ocorrer no nvel de isolamento
repeatable read. Justifique sua resposta.
S=r2(v)r1(y)w2(x)r3(v)r1(x)w3(z)r2(z)w3(y)c3c1c2
SA= r2(y)r1(x)r1(v)w2(x)w3(y)r3(v)r3(u)w1(v)c3c1c2
122 UNIDADE 3
b) Para cada uma das opes abaixo modifique o schedule S a fim de criar
um novo schedule (completo) T tal que:
T evita aborts em cascata e no serializvel.
T recupervel e no serializvel por conflito.
T serializvel por conflito e no evita aborts em cascata.
Para criar o schedule T voc pode adicionar novas operaes em
qualquer posio do schedule S, mas no pode alterar a ordem das operaes
j existentes. Caso no seja possvel criar o schedule T como se pede, comente
brevemente.
mostrados a seguir:
UPDATE CANDIDATOS
SET NR_CANDIDATO = 128
WHERE NR_CANDIDATO = 13
Dicas:
1. Observe que o comando TransactSQL WAITFOR DELAY '000:02:00'
faz com que o procedimento pare sua execuo e espere por 2
minutos.
2. Note que o comando SET TRANSACTION ISOLATION LEVEL seta
(ajusta) o nvel de isolamento.
124 UNIDADE 3
SET TRANSACTION ISOLATION LEVEL READ
UNCOMMITTED
UPDATE CANDIDATOS
SET NR_CANDIDATO = 128
WHERE NR_CANDIDATO = 13
UPDATE CANDIDATOS
SET NR_CANDIDATO = 127
WHERE NR_CANDIDATO = 13
30. Para cada uma das opes abaixo crie um Schedule que satisfaa as
propriedades requisitadas:
a) No recupervel e no serializvel.
b) Serializvel e recupervel.
c) Preciso e serializvel.
d) No serializvel e que no evita aborts em cascata.
Teorema:
126 UNIDADE 3
3.1.1 Protocolo Bsico de Ordenao por Timestamp
Exemplo 14
Considere o seguinte conjunto de transaes:
T1 = r1(x) r1(y) w1(x) c1
T2 = r2(x) r2(y) c2
Considere agora a seguinte execuo (schedule):
S1 = r1(x) r2(x) r1(y) w1(x) r2(y) c2 c1
128 UNIDADE 3
for acclico o schedule gerado serializvel por conflito. Vale destacar que existe
um algoritmo para verificar se um grafo acclico em tempo polinomial.
Abortar Ti;
Retirar do grafo o n referente a Ti e todas as
arestas que partem ou chegam nesse n;
Fim Se;
Fim Para;
Garbage Collection
Observe que o schedule S1 ser gerado pelo protocolo TGS, uma vez
que o grafo de serializao de S1 no possui ciclo (figura 3.3).
T1 T2
Figura 3.3 Grafo de Serializao do Schedule S1.
Exemplo 16
Considere o seguinte conjunto de transaes:
T1 = r1(x) w1(x) c1
T2 = r2(x) w2(x) c2
Considere agora a seguinte execuo (schedule):
S2 = r1(x) r2(x) w1(x) w2(x) c1 c2
130 UNIDADE 3
3.3 Protocolos Otimistas
Exerccios
132 UNIDADE 3
6. Identifique se o seguinte schedule pode ser produzido por um escalonador
(scheduler) implementando o protocolo de marca de tempo. Justifique sua
resposta.
SA= r1(y)r2(u)r2(x)w3(u)r3(v)c3w1(v)c2c1;
Resumindo
Esta unidade discute em detalhes a recuperao de banco de dados. So discutidos e
detalhados os diversos tipos de falhas. A estrutura de log apresentada e a recuperao
baseada em log discutida. Noes de gerenciamento de buffer so apresentadas e
examinadas. Tcnicas de recuperao, incluindo os meios de armazenamentos so
apresentadas, destacando suas vantagens e desvantagens. Por fim, tcnicas baseadas
em pginas sombras so discutidas.
RECUPERAO DE BANCO DE
DADOS
1.1 Introduo
Um sistema de computador, como qualquer outro dispositivo eltrico ou
mecnico, est sujeito a falhas. Essa simples observao tem consequncias
de longo alcance para o projeto de sistemas de computadores em geral e de
Sistemas de Gerenciamento de Banco de Dados (SGBD) em particular.
Uma parte essencial do SGBD o Sistema de Recuperao, responsvel
pela deteco de falhas e pela restaurao do BD para um estado consistente
que existia antes da ocorrncia da falha.
O Sistema de Recuperao trata de duas propriedades das transaes:
atomicidade e durabilidade. Para tanto, o SGBD deve ser tolerante a falhas,
ou seja, ser capaz de conduzir o BD a um estado passado consistente, aps a
ocorrncia de uma falha que o deixou em um estado inconsistente.
O Sistema de Recuperao baseia-se em redundncia de dados.
Entende-se por redundncia a criao de cpias dos dados e operaes ou
a replicao desses dados. No caso de falha dos dados principais, podem-se
utilizar as cpias para recuperar os dados e ento retornar o BD a um estado
consistente.
importante lembrar que a redundncia de dados no um mecanismo
100% seguro. Suponha que o SBGD est fazendo cpia dos dados em um disco
rgido externo e ocorre uma falha no disco principal. Nesse caso, o SGBD vai
tentar recuperar os dados do disco externo. Contudo, esse disco tambm pode
sofrer uma falha e, assim, o SGBD no poder retornar a um estado consistente.
O SGBD executa alguns procedimentos durante seu funcionamento
normal, como manter informaes sobre o que foi atualizado no BD pelas
transaes e realizar cpias peridicas do BD. Quando ocorre uma falha, o
SGBD deve executar aes para retornar o BD a um estado consistente. As
Falha de Transao
A falha de transao ocorre quando uma transao ativa termina
de forma anormal. As principais causas para esse tipo de falha so: violao
de uma restrio de integridade, lgica da transao mal definida, deadlock,
cancelamento pelo usurio, entre outras.
Esse tipo de falha no compromete a memria principal nem a memria
secundria (disco, em geral). Como as causas so muito comuns, essa falha
tem maior probabilidade de ocorrncia. Entretanto, seu tempo de recuperao
pequeno, pois no compromete as memrias principais e secundrias.
Falha de Sistema
A falha de sistema ocorre quando o SGBD encerra a sua execuo de
forma anormal. As principais causas para esse tipo de falha so: interrupo de
energia, falha no sistema operacional erro interno no software do SGBD, falha
de hardware, entre outras.
Nesse caso, as transaes em execuo no podem mais continuar,
porm possvel recuper-las. Pode perguntar por que quedas de energia geram
perda de estado de uma transao? A resposta simples: porque muitas vezes
o contedo que estava na memria principal (memria voltil) no foi passado
para o disco (memria estvel).
Esse tipo de falha compromete a memria principal, mas no compromete
a memria secundria. Como as causas so mais comuns do que a falha de
transao, esse tipo de falha tem probabilidade mdia de ocorrncia. Entretanto,
seu tempo de recuperao mdio, pois compromete a memria principal.
138 UNIDADE 4
Esse tipo de falha no compromete a memria principal mas compromete
a memria secundria. Como as causas no so comuns, essa falha tem menor
probabilidade de ocorrncia. Entretanto, seu tempo de recuperao grande,
pois compromete a memria secundria.
Falha Catastrfica
Na falha catastrfica esto vrias situaes em que a mdia que contm
o BD completamente destruda. Os exemplos incluem exploses ou incndios
no local do banco de dados, vandalismo ou vrus.
Em todos os casos, os princpios em que se baseia a recuperao so
bastante simples e podem ser resumidos em uma nica palavra: redundncia.
Isto , o meio de proteger o BD assegurar que qualquer informao nele
existente possa ser reconstruda a partir de alguma outra informao armazenada
redundantemente.
Para evitar ou contornar essas falhas, os seguintes procedimentos
so executados: (a) toda vez que feita uma modificao no BD, mantido
automaticamente pelo sistema um registro num arquivo especial (b)
periodicamente feito um backup de todo o BD (normalmente em fita magntica).
Registro de Log
A estrutura largamente usada para registrar modificaes no banco
de dados o log (ou Journal). Um log registra sequencialmente as operaes
feitas por transaes no banco de dados. Esse arquivo geralmente consultado
em caso de falhas para a realizao de UNDO e/ou REDO de transaes e
mantido em uma ou mais cpias em memria secundria, tais como disco e fita.
Tipos de Log
Existem alguns tipos de log e esses so usados para recuperao em
diversas situaes, de acordo com o tipo de falha ou problema. Os principais
tipos de log so:
log UNDO: esse log mantm apenas o valor antigo do dado (before
image).
log REDO: esse mantm apenas o valor atualizado do dado (after
image).
log UNDO/REDO: esse o log mais comum e mantm os valores antigo
e atualizado do dado.
Representao do Log
Para diferenciar as transaes, o SGBD atribui a uma dessas um
identificador nico. Os vrios tipos de registros de log so representados de
acordo com a Figura 1.
140 UNIDADE 4
Nessa Figura, a transao T3 inicia a transao e depois altera o item B
do valor 15 para o valor 12. Em seguida, a transao T2 inicia e modifica o item
B do valor 12 para o valor 18. A transao T1 inicia e modifica o item D do valor
20 para o valor 25. A transao T1 efetivada e o processo de preenchimento do
log continua a a efetuao das transaes T2 e T3.
importante observar que apenas as operaes de escrita so
armazenadas no log. Outra forma de representar o log considerar a operao
feita no BD:
insert: <write Tx, X, INSERT, afterImage>
update: <write Tx, X,UPDATE, beforeImage, afterImage>
delete: <write Tx, X,DELETE, beforeImage>
OBS.: Como o log armazena informaes sobre todas as atividades do
BD, o volume de dados armazenados no log pode tornar-se excessivamente
grande. Existem meios seguros para apagar informaes do log ou para
compact-lo.
NOT-STEAL
Nessa tcnica, um bloco na cache utilizado por uma transao Tx no
pode ser gravado antes do commit de Tx. Esse bloco possui um bit de status
indicando se foi (1) ou no (0) modificado. Com isso, o processo de recuperao
mais simples, pois evita dados de transaes inacabadas sendo gravadas no
banco de dados.
STEAL
Na tcnica STEAL, um bloco na cache utilizado por uma transao Tx
pode ser gravado antes do commit de Tx. Assim, necessrio se algum dado
142 UNIDADE 4
requisitado do banco de dados por outra transao e no h blocos disponveis
na cache. Ento, um bloco a ser eliminado deve ser escolhido atravs de alguma
tcnica, como o FIFO, ou seja, primeiro a entrar, primeiro a sair. A vantagem
dessa tcnica que no h necessidade de manter blocos bloqueados por
transaes.
FORCE
Com o FORCE, os blocos que mantm dados atualizados por uma
transao Tx so imediatamente gravados no BD quando Tx alcana o commit.
Para tanto, deve-se saber quais os blocos que Tx atualizou dados. A vantagem
com isso garantia da durabilidade de Tx o mais cedo possvel, permitindo o
REDO de Tx em caso de falha.
NOT-FORCE
Com o NOT-FORCE, os blocos que mantm dados atualizados por Tx
no so imediatamente gravados no BD quando Tx alcana o commit. Assim,
blocos atualizados podem permanecer na cache e serem utilizados por outras
transaes, aps o commit de Tx, o que reduz o custo de acesso a disco.
1.5 Checkpoint
144 UNIDADE 4
Deve ficar claro que, quando o sistema reiniciado, as transaes do
tipo T3 e T5 devem ser desfeitas (UNDO), e as transaes do tipo T2 e T4 devem
ser refeitas (REDO).
Entretanto, as transaes T1, no entram no processo de recuperao,
porque todos os seus resultados j foram escritos no banco de dados fsico no
tempo tc.
Modificao Imediata
Na modificao imediata, todos os dados que foram alterados por
transaes efetivadas ou no, so persistidos no arquivo de dados. Por essa
razo, algumas transaes precisam ser desfeitas (UNDO) e outras refeitas
(REDO) no momento da recuperao. Com a necessidade do UNDO, alguns
controles adicionais precisam ser adicionados ao arquivo de log. O SGBD
precisa conhecer, alm dos valores alterados, os valores antes da modificao.
A ideia bsica que a atualizao feita no banco de dados no momento exato
em que foi executada, ento, no procedimento de recuperao aps falha, tem
que desfazer tudo e refazer.
As tcnicas baseadas em modificao imediata consistem em realizar
modificaes no banco de dados antes do trmino das transaes, ou seja,
permite que as modificaes no banco de dados sejam realizadas enquanto
as transaes ainda esto em execuo. Nesse sentido, as escritas realizadas
por transaes ativas so denominadas de modificaes no efetivadas. Nessa
abordagem, o log dever armazenar o valor antigo e o valor novo, efetuados
pelas aes de modificaes.
Diante de uma falha, uma transao recuperada por meio da operao
UNDO, onde os valores antigos sero recuperados para o banco de dados. Se
existir, no log, informao sobre o trmino da transao, a operao REDO ser
executada para que todos os novos valores sejam refletidos no banco de dados.
Durante o processo de recuperao pode haver um cenrio onde todos os
dados j tenham sido escritos no banco de dados. Mas no haver inconsistncia,
pois sero sobrescritos pelos mesmos valores. Essa caracterstica est ligada
propriedade de idempotncia de operaes UNDO e REDO, ou seja, fazer
UNDO ou REDO uma vez ou vrias vezes produz o mesmo resultado.
Do ponto de vista do gerenciamento de buffer, essas tcnicas utilizam
a abordagem STEAL. Isso torna o gerenciamento de buffer bem mais simples,
Tcnica UNDO/REDO
Na tcnica UNDO/REDO gravada a efetivao de uma transao "x"
no log depois que todas as modificaes, realizadas por "x", terem sido gravadas
no log, e antes dessas modificaes terem sido gravadas no banco de dados.
Para isso, essa tcnica requer a existncia de um log UNDO e REDO.
Essa abordagem utiliza duas listas, uma lista de REDO e uma lista de
UNDO, que contm identificadores de transaes. A lista de REDO exibe os
identificadores das transaes que efetivaram, ou seja, possuem indicativo de
efetivao gravado no log. J a lista de UNDO ilustram os identificadores das
transaes que estavam "ativas".
O procedimento de recuperao dado, basicamente, por duas regras.
A primeira regra consiste em fazer uma varredura no log do final para o comeo,
executando UNDO das transaes contidas na lista de UNDO, ou seja, as
transaes que efetivaram. J a segunda regra faz a varredura do comeo para
o final do log, realizando REDO das transaes inseridas na lista de REDO, ou
seja, as transaes "ativas".
Durante a aplicao da primeira regra possvel que, ao percorrer o log
do comeo para o final para realizar REDO, um dado "x" tenha sido atualizado
mais de uma vez por transaes efetivadas. Nesse caso, por medidas de
otimizao, necessrio realizar, somente, o REDO da ltima atualizao do
dado "x".
Exemplo:
Nesse exemplo, vamos expor o comportamento da tcnica UNDO/REDO
com checkpoint diante do processo de recuperao. Para isso, seguiremos um
cenrio que contm cinco transaes dispostas em uma linha do tempo e o
momento da falha. Maiores detalhes sobre esse cenrio podem ser visualizados
na Figura 5.
146 UNIDADE 4
Podemos perceber que as transaes T1 e T2 iniciaram e terminaram
antes da execuo do checkpoint. A transao T3 iniciou antes do checkpoint e
no chegou a sua efetivao. J a transao T4 iniciou antes do checkpoint e
efetivou antes da falha. A transao T5 iniciou aps o checkpoint e no consegui
efetivar por completo.
Seguindo as regras impostas pela tcnica em questo, as transaes
T1 e T2 foram efetivadas antes do checkpoint. Portanto, essas transaes no
precisam ser desfeitas e nem refeitas. Isso porque o checkpoint faz com que
transaes efetivadas contenham suas atualizaes persistidas no banco de
dados.
A transao T4 efetivou antes do momento da falha, mas suas
atualizaes no foram persistidas no banco de dados. Para esse caso, vamos
supor que a tcnica utiliza a estratgia NOT-FORCE. Com isso necessrio,
durante o processo de recuperao, que a transao T4 sobre a operao de
REDO. J as transaes T3 e T5 no efetivaram nem antes do checkpoint e nem
antes do momento da falha. Nesse caso, essas transaes devem sofrer UNDO.
RM_Restart ( )
Tcnica UNDO/NO-REDO
Na tcnica UNDO/NO-REDO gravada a efetivao de uma transao
"x" no log depois que todas as modificaes, realizadas por "x", terem sido
gravadas no log, e depois que essas modificaes terem sido gravadas no banco
de dados. Nesse caso, necessrio a existncia de um log UNDO.
Nessa tcnica, se existir um registro de efetivao de uma transao "x"
no log, ento "x" est garantidamente efetivada no banco de dados. A principal
vantagem dessa abordagem que no h a necessidade de realizar REDO.
Porm, pode-se fazer UNDO de uma transao que foi gravada com sucesso no
banco de dados, mas sua efetivao no foi gravada a tempo no log.
O procedimento de recuperao dessa tcnica bem mais simples do
que a tcnica UNDO/REDO. Nessa abordagem, necessrio realizar varredura
do final para o comeo do log, executando UNDO das transaes existentes
na lista de UNDO, ou seja, desfazendo os efeitos produzidos pelas transaes
"ativas".
Exemplo:
Para esse exemplo vamos supor um cenrio que existam cinco transaes
em uma linha do tempo e momento em que ocorre a falha. Nesse cenrio, a
tcnica UNDO/NO-REDO ser demonstrada sem o uso de checkpoint. Maiores
detalhes sobre a disposio das transaes na linha do tempo e o momento da
falha podem ser encontradas na Figura 6.
Podemos observar que as transaes T1 e T2 foram efetivadas antes
do momento da falha. As transaes T3 e T5 no conseguiram efetivar antes da
falha. J a transao T4 efetivou bem prximo do momento da falha. A disposio
de T4 na linha do tempo, nesse cenrio, permite-nos observar uma caracterstica
dessa tcnica.
As transaes T1 e T2 efetivaram antes do momento da falha e possuem
suas efetivaes em log. Nesse sentido, essas duas transaes no necessitam
sofrer REDO durante a recuperao. J as transaes T3 e T5 no chegaram
a efetivar por completo. Com isso, devem passar por uma operao de UNDO
para que suas modificaes sejam desfeitas.
Por ltimo, a transao T4 conseguiu terminar antes do momento da
falha. Porm, esse momento de efetivao foi bem prximo do momento da
falha e, infelizmente, seu registro de efetivao no se encontra no log. Portanto,
assim como T3 e T5, a transao T4 precisa passar pela operao de UNDO
durante o processo de recuperao aps falha.
148 UNIDADE 4
Figura 6 Tcnica Undo/Redo sem o uso de checkpoint.
RM_Restart ( )
2. Faa desfeito = { }
150 UNIDADE 4
Tcnica NO-UNDO/REDO
Na tcnica NO-UNDO/REDO fora-se a gravao do log em disco aps
uma transao "x" concluir suas modificaes. Com isso, se uma transao "x"
falhar antes de alcanar sua efetivao, no necessrio realizar UNDO de "x",
pois nenhuma atualizao de "x" foi gravada no banco de dados.
Nessa tcnica o processo de recuperao ocorre por meio de uma
varredura do comeo do log at o final, realizando REDO nas transaes
contidas na lista de REDO. Como a gravao do log, em disco, feita aps a
efetivao das transaes, o REDO acontece somente nas transaes que foram
efetivadas. Caso, durante a falha, haja transaes "ativas", ou seja, transaes
que alcanaram a efetivao, essas devem ser recomeadas.
Esse tipo de tcnica limita a execuo concorrente das transaes
porque itens de dados ficam bloqueados at a efetivao das transaes.
Consequentemente, uma transao no grava as modificaes no BD at sua
efetivao. Logo, uma transao nunca desfeita por causa da ocorrncia de
falhas. Outra caracterstica importante que uma transao nunca vai ler o valor
de um item gravado por outra no acabada, porque os itens esto bloqueados.
Portanto, no ocorrer UNDO em cascata de transaes.
Exemplo:
Nesse primeiro exemplo, vamos mostrar um cenrio da tcnica NO-
UNDO/REDO sem o uso de checkpoint. Para isso, colocamos em nosso exemplo
cinco transaes descritas na linha do tempo e o momento em que ocorre a
falha. Maiores detalhes sobre esse cenrio pode ser visto na Figura 7.
152 UNIDADE 4
do checkpoint, mas terminou antes da falha. Nesse caso, a transao T4 dever
sofrer REDO, assim como na tcnica sem o uso do checkpoint. Com relao s
transaes T3 e T4, assim como na tcnica sem o uso de checkpoint, devem ser
ressubmetidas pelos usurios ou aplicaes.
RM_Restart ( )
2. Faa desfeito = { }
154 UNIDADE 4
essas tarefas.
Princpio de Funcionamento
Exerccios
1. Quais so os objetivos do sistema de recuperao de um SGBD?
10. Qual a principal vantagem das tcnicas de atualizao adiada? Por que
so chamadas de mtodo NO-UNDO/REDO?
156 UNIDADE 4
armazenamento.
( ) A tcnica UNDO/REDO usada na recuperao do meio de
armazenamento.
( ) O log uma arquivo aleatrio utilizada na recuperao do BD que
armazena operaes de escrita.
( ) Uma das vantagens da utilizao do checkpoint que as transaes
committed antes do checkpoint no precisam sofrer UNDO em caso de
falha.
158 UNIDADE 4
SILBERSCHATZ, A.; KORTH, H.; SUDARSHAN, S. Sistema de Banco de
Dados. 5. ed., Editora Campus, 2006.