Você está na página 1de 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 COMMIT
TRANSACTION 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
Compilador Sistema

Otimizador

Gerente de Transaes

Gerente Gerente Gerente de Gerente


de de acesso a de
bloqueios logs dados buffers

LOG BD
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.

rea de
Dados
SGBD

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 Checkpoint:


T2 e T4 Ser refeitas (REDO) Atualizao fsica dos
buffers do SGBD.
T3 e T5 Ser desfeitas (UNDO)
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 Transao 2

Select P T1

T2 Select P

Update 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 Transao 2

T1 Update P

Select P T2

T3 Rollback
Problemas de Concorrncia
Anlise Inconsistente:
Transao 1 Tempo Transao 2

Acc1 = 40 Select Acc1


T1
Acc2 = 50 Soma = 40
Acc3 = 30
Select Acc2 Select Acc3
T2 Update Acc3=20
Soma = 90
Soma = 120

Select Acc1
T3 Update Acc1=50
Commit

Select Acc3
Erro T4
Soma = 110
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 Buffers de
(Scheduler) 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 Transao 2

Select P T1
(SLOCK)
Select P
T2
(SLOCK)

Update P T3
(Solic. XLOCK)
Update P
WAIT
T4 (Solic. XLOCK)
WAIT
...
WAIT
...
Resoluo dos Problemas de Concorrncia
Dependncia de Transao no Concluda:

Transao 1 Tempo Transao 2

Update P
T1
(XLOCK)

Select P
(Solic. SLOCK) T2
WAIT
WAIT
T3 Commit/Rollback
(Libera XLOCK)

Cont. Select P
T4
(SLOCK)
Resoluo dos Problemas de Concorrncia
Anlise Inconsistente:
Transao 1 Tempo Transao 2

Select Acc1 - Soma = 40 T1


(SLOCK)

Select Acc2 - Soma = 90 Select Acc3 (SLOCK)


T2
(SLOCK) Update Acc3=20 (XLOCK)

Select Acc1 (SLOCK)


T3 Update Acc1=50
(Solic. XLOCK)
WAIT
Select Acc3 WAIT
(Solic. SLOCK) T4 ...
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);

R1
T1 T2

R3 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 Leitura Suja Leitura no Repetvel Registro Fantasma


Isolamento (Dirty Read) (Nonrepeatable Read) (Phantom)

Read Ocorre Ocorre Ocorre


Uncommitted

Read No ocorre Ocorre Ocorre


Committed

Repeatable No ocorre No ocorre Ocorre


Read

Serializable No ocorre No ocorre No ocorre


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

Você também pode gostar