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
Rollback Transaction
Trmino de transao com erro; Retorna o banco de dados posio anterior Transao;
BEGIN TRANSACTION
ROLLBACK TRANSACTION
COMMIT TRANSACTION
Gerente de bloqueios
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.
SGBD
rea de Dados
Log de Transaes
T1 T2 e T4 T3 e T5
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
Select P Tempo T1 T2 Update P T3 T4 Update P Select P
Transao 2
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 T2 T3 Rollback
Transao 2
Update P
Problemas de Concorrncia
Anlise Inconsistente:
Transao 1 Acc1 = 40 Acc2 = 50 Acc3 = 30 Soma = 120
Select Acc1 Soma = 40 Select Acc2 Soma = 90 Tempo
Transao 2
T2
T3
Erro
Select Acc3
Soma = 110
T4
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 XLOCK SLOCK No No SLOCK No Sim
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.
Transao 2
T4
Transao 2
Update P (XLOCK)
T3
T4
Transao 2
T3
T4
Select Acc1 (SLOCK) Update Acc1=50 (Solic. XLOCK) WAIT WAIT ...
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
R3 R1
T2
R2
T3
No ocorre
Ocorre
Ocorre
No ocorre
No ocorre
Ocorre
No ocorre
No ocorre
No ocorre
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