Anda di halaman 1dari 39

Banco de Dados I

6 Transaes e Controle de
Concorrncia
Grinaldo Lopes de Oliveira (grinaldo@gmail.com)
Curso Superior de Tecnologia em
Anlise e Desenvolvimento de Sistemas

* Material com crditos de colaborao dos professores Mrcio Soussa, Leandro Coelho e Pablo Florentino

Agenda
Aprendendo
Transaes
Controle de Concorrncia

Transao

O que uma Transao


O termo transao refere-se a uma coleo
de operaes que forma uma nica unidade
lgica de trabalho.
Por exemplo, uma transferncia de dinheiro de
uma conta para outra uma transao
consistindo de duas atualizaes, uma para cada
conta.

Exemplo de Transao
Transferncia bancria
BEGIN TRANSACTION
update conta1
set saldo = saldo 100
update conta2
set saldo = saldo + 100

COMMIT TRAN

Caractersticas de Transaes

Transaes do SGBD

Finalizao de uma Transao


Commit Transaction
Encerramento da transao com sucesso;
Torna as atualizaes permanentes;

Rollback Transaction
Trmino de transao com erro;
Retorna o banco de dados posio anterior
Transao;
BEGIN
TRANSACTION

ROLLBACK
TRANSACTION

COMMIT
TRANSACTION

O que faz uma transao falhar?

Estados de uma Transao

Propriedades de uma Transao


ACID
A: Atomicidade
Unidade lgica atmica (tudo ou nada)
C: Consistncia (Preservao)
Ao final de uma transao o banco continua
consistente
I: Isolamento
A execuo de uma transao no deve sofrer
interferncia de outras transaes concorrentes
D: Durabilidade (Persistncia)
Aps o ponto de confirmao, as alteraes devem
persistir no banco de dados

Arquitetura de um SGBD
Referncia
Respostas

Comandos da
Aplicao /usurio/ DBA
Catlogo do
Sistema

Compilador
Otimizador

Gerente de Transaes

Gerente
de
bloqueios

Gerente
de
logs

LOG

Gerente de
acesso a
dados

BD

Gerente
de
buffers

Log de Transaes
Caractersticas:
Registro de todas as operaes (alteraes) realizadas no banco
de dados;
Base para o processo de recuperao (Recovery)
Atualizao anterior operao realizada sobre os dados;
Atualizao fsica (I/O), sem utilizao de buffers.

SGBD

rea de
Dados

Log de
Transaes

Recuperao de Consistncia (Falha de Sistema)


Processo de Recuperao
Tempo

TC (Checkpoint)

TF (Falha do Sistema)

T1
T2
T3
T4
T5

T1

Nada a fazer

T2 e T4

Ser refeitas (REDO)

T3 e T5

Ser desfeitas (UNDO)

Checkpoint:
Atualizao fsica dos
buffers do SGBD.

Recuperao de Consistncia (Falha de Sistema)


Processo de Recovery
Iniciamos o algoritmo com duas listas (Undo e Redo). Undo com
a lista das transaes no momento do ltimo checkpoint e Redo
vazia;
Pesquisamos no log de transaes a partir do registro de
checkpoint;
Se um Begin Transaction for encontrado, adicionamos a
transao lista Undo;
Se um Commit for encontrado, move a transao da lista Undo
para a Redo;
Refazer as transaes

Forward Recovery

Desfazer as transaes

Backward Recovery

Transao Distribuda
Two-Phase Commit
Protocolo para garantir o conceito de transao entre
servidores distintos (Transao inter-servidores);
Opo de efetivar ou cancelar a transao cabe a um
Coordenador:
FASE1: O coordenador instrui todos os participantes para
estarem prontos para efetivar a transao. (Forar a
gravao dos registros de log envolvidos na transao). Os
participantes devem responder Ok ou No Ok caso
tenham conseguido ou no se preparar;
FASE2: Se todas as respostas forem OK, o coordenador
deve transmitir um Commit a todos os participantes, caso
contrrio emite Rollback (algum No Ok).

Controle de Concorrncia

Problemas de Concorrncia
Atualizao Perdida:
A Transao 1 perde a atualizao no tempo T4.
Transao 1

Tempo

Select P

T1
T2

Update P

Transao 2

Select P

T3
T4

Update P

Problemas de Concorrncia
Dependncia de Transao no Concluda:
A Transao 1 tem acesso um dado que depende da
concluso da Transao 2.
Transao 1

Tempo
T1

Select P

Transao 2
Update P

T2
T3

Rollback

Problemas de Concorrncia
Anlise Inconsistente:
Acc1 = 40
Acc2 = 50
Acc3 = 30
Soma = 120

Erro

Transao 2

Transao 1

Tempo

Select Acc1
Soma = 40

T1

Select Acc2
Soma = 90

T2

Select Acc3
Update Acc3=20

T3

Select Acc1
Update Acc1=50
Commit

Select Acc3

Soma = 110

T4

Controle de Concorrncia
Primitiva
Princpio da correo
Toda transao, se executada de forma isolada,
transformar qualquer estado consistente em outro
estado consistente.

Controle de Concorrncia
Escalonador (Scheduler)
Escalonador : Tem como funo assegurar que as
transaes preservem a consistncia quando
executadas simultaneamente.
T1: Update
T2: InsertSelect
Gerenciador
de Transaes
Solicitaes de leitura e gravao
Escalonador
(Scheduler)

Buffers de
Memria

Controle de Concorrncia
Escalonamento
Serializao (Serializabilidade, Seriabilizao)
Requisito abstrato que tem como objetivo assegurar que
as transaes executem de forma concorrente e ao final o
estado do banco continue consistente.
Escalonamento Serializvel:
Quando seu efeito sobre o estado do banco de dados
igual ao de algum escalonamento serial.
Escalonamento no-serializvel:
Escalonamento que no assegura o estado consistente do
banco de dados

Controle de Concorrncia
Bloqueios
Como os SGBDs impem a serializao ?
A tcnica mais comum adotada a utilizao de bloqueios sobre elementos
do banco de dados, a fim de evitar um comportamento no serializvel.
(Pessimista)
Uma transao obtm bloqueios sobre os elementos do banco de dados
para impedir que outras transaes acessem esses elementos ao mesmo
tempo e, portanto, haja risco da no serializao.
utilizada uma tabela de bloqueios
H outras tcnicas:
Timbre de hora Timestamp
Tcnicas otimistas- Entendem que operaes conflitantes so exceo

Bloqueios
Definio:
Mecanismo que permite a uma transao impedir que
outras acessem ou atualizem registros de forma a evitar os
problemas de concorrncia;

XLOCK:
Bloqueio exclusivo sobre os registros;
Utilizado para atualizaes;

SLOCK:
Bloqueio compartilhado sobre os registros;
Utilizado para consultas.

Bloqueios
Relao entre os Bloqueios:
XLOCK

SLOCK

XLOCK

No

No

SLOCK

No

Sim

Controle de Concorrncia
Bloqueios
Granularidade dos bloqueios
Linha (registros)
Pgina de disco
Tabela
Banco de Dados

O SGBD decide automaticamente o melhor nvel de


granularidade (Bloqueio de mltipla granularidade).
Alguns SGBDs permitem que o usurio altere a
granularidade e o tipo do bloqueio.

Resoluo dos Problemas de Concorrncia


Atualizao Perdida:
Transao 1

Tempo

Select P
(SLOCK)

T1
T2

Update P
(Solic. XLOCK)
WAIT
WAIT
...

Transao 2

Select P
(SLOCK)

T3

T4

Update P
(Solic. XLOCK)
WAIT
...

Resoluo dos Problemas de Concorrncia


Dependncia de Transao no Concluda:
Transao 1

Select P
(Solic. SLOCK)
WAIT
WAIT

Tempo

Transao 2

T1

Update P
(XLOCK)

T2

T3

Cont. Select P
(SLOCK)

T4

Commit/Rollback
(Libera XLOCK)

Resoluo dos Problemas de Concorrncia


Anlise Inconsistente:
Transao 1

Tempo

Select Acc1 - Soma = 40


(SLOCK)

T1

Select Acc2 - Soma = 90


(SLOCK)

T2

T3

Select Acc3
(Solic. SLOCK)
WAIT
...

T4

Transao 2

Select Acc3 (SLOCK)


Update Acc3=20 (XLOCK)

Select Acc1 (SLOCK)


Update Acc1=50
(Solic. XLOCK)
WAIT
WAIT
...

Resoluo dos Problemas de Concorrncia

Deadlock
Situao onde duas transaes esto simultaneamente em
estado de espera (Wait), cada uma aguardando pela
liberao do bloqueio (Lock) da outra;
O SGBD deve detectar e quebrar o deadlock (sacrificar
uma transao);
Grfico de Espera (Wait-For Graph);
T1

R1

R3

T2
R2

T3

Controle de Concorrncia
Problemas de Concorrncia
Problemas clssicos de concorrncia
Atualizao perdida (Lost Update)
Leitura suja (Dirty read)
Leitura no-repetitiva (Repeatable-read)
Fantasmas (Phantoms)

Controle de Concorrncia
Problemas de Concorrncia
Atualizao perdida (Lost Update)
Ocorre quando duas transaes que acessam os mesmos itens
do banco de dados tm suas operaes entrelaadas, de modo
que torne incorreto o valor de algum item.
Leitura Suja (Dirty read)
Ocorre quando uma transao atualiza um item do banco de
dados e, por algum motivo, outra transao ler esse item
supostamente atualizado.

Controle de Concorrncia
Problemas de Concorrncia
Leitura No Repetitiva (Non-Repeatable read)
Ocorre quando uma transao l itens em uma determinada condio
e depois outra transao altera e efetiva um novo item que satisfaz a
condio da transao anterior. Caso a primeira transao faa
novamente uma leitura com a mesma condio, os registros podem
aparecer de maneira diferente.
Fantasmas (Phantoms)
Ocorre quando uma transao l itens em uma determinada
condio e depois outra transao insere e efetiva um novo item
que satisfaz a condio da transao anterior. Caso a primeira
transao faa novamente uma leitura com a mesma condio, um
registro fantasma ir aparecer

Controle de Concorrncia
Nveis de Isolamento (Padro SQL-92)
Read uncommitted
Permite a leitura de dados no efetivados
H ganho de performance, mas perda de segurana.
Read committed
Nvel de isolamento Padro
Leitura s pode ser feita em dados efetivados.
Repeatable Read
Registros lidos no sero alterados por outros processos, garantindo releituras
idnticas.
Serializable
A mais restrita de todas.
Inseres ou delees no podem ser feitas em conjuntos de registros lidos.

Nveis de Isolamento (SQL-92)


Nvel de
Isolamento

Leitura Suja
(Dirty Read)

Leitura no Repetvel
(Nonrepeatable Read)

Registro Fantasma
(Phantom)

Ocorre

Ocorre

Ocorre

Read
Committed

No ocorre

Ocorre

Ocorre

Repeatable
Read

No ocorre

No ocorre

Ocorre

Serializable

No ocorre

No ocorre

No ocorre

Read
Uncommitted

Controle de Concorrncia
Nveis de Isolamento (Padro SQL-92)
Sintaxe SQL
A configurao do nvel de isolamento pode ocorrer para todas a transaes do
banco de dados ou para alguma especfica.
SET TRANSACTION
ISOLATION LEVEL
[
READ UNCOMMITTED ou
READ COMMITTED *(Padro)
REPEATABLE READ
SERIALIZABLE
]

Debate em Sala de Aula


Uma aplicao est com baixo
tempo de resposta em virtude de
muitas transaes concorrentes e
alto grau de bloqueios. O que voc
faria para minimizar este problema?

Banco de Dados I
6 Transaes e Controle de
Concorrncia
Grinaldo Lopes de Oliveira (grinaldo@gmail.com)
Curso Superior de Tecnologia em
Anlise e Desenvolvimento de Sistemas

Anda mungkin juga menyukai