Vous êtes sur la page 1sur 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 Compilador Otimizador Catlogo do Sistema

Gerente de Transaes Gerente de logs Gerente de acesso a dados Gerente de buffers

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

Recuperao de Consistncia (Falha de Sistema) Processo de Recuperao


Tempo T1 T2 T3 T4 T5 TC (Checkpoint) TF (Falha do Sistema)

T1 T2 e T4 T3 e T5

Nada a fazer Ser refeitas (REDO) 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 Desfazer as transaes Forward Recovery 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
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

T1 Select Acc3 Update Acc3=20

T2

T3

Select Acc1 Update Acc1=50 Commit

Erro

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 XLOCK SLOCK 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
Select P (SLOCK) Tempo T1 T2 Update P (Solic. XLOCK) WAIT WAIT ... T3 Update P (Solic. XLOCK) WAIT ... Select P (SLOCK)

Transao 2

T4

Resoluo dos Problemas de Concorrncia


Dependncia de Transao no Concluda:
Transao 1
Tempo T1 Select P (Solic. SLOCK) WAIT WAIT

Transao 2
Update P (XLOCK)

T2 Commit/Rollback (Libera XLOCK)

T3

Cont. Select P (SLOCK)

T4

Resoluo dos Problemas de Concorrncia


Anlise Inconsistente:
Transao 1
Select Acc1 - Soma = 40 (SLOCK) Select Acc2 - Soma = 90 (SLOCK) Tempo T1 T2 Select Acc3 (SLOCK) Update Acc3=20 (XLOCK)

Transao 2

T3

Select Acc3 (Solic. SLOCK) WAIT ...

T4

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
R3 R1

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 Read Uncommitted Read Committed Repeatable Read Serializable Leitura Suja (Dirty Read) Ocorre Leitura no Repetvel (Nonrepeatable Read) Ocorre Registro Fantasma (Phantom) Ocorre

No ocorre

Ocorre

Ocorre

No ocorre

No ocorre

Ocorre

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

Vous aimerez peut-être aussi