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
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
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
TC (Checkpoint)
TF (Falha do Sistema)
T1
T2
T3
T4
T5
T1
Nada a fazer
T2 e T4
T3 e T5
Checkpoint:
Atualizao fsica dos
buffers do SGBD.
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
Tempo
Select P
(SLOCK)
T1
T2
Update P
(Solic. XLOCK)
WAIT
WAIT
...
Transao 2
Select P
(SLOCK)
T3
T4
Update P
(Solic. XLOCK)
WAIT
...
Select P
(Solic. SLOCK)
WAIT
WAIT
Tempo
Transao 2
T1
Update P
(XLOCK)
T2
T3
Cont. Select P
(SLOCK)
T4
Commit/Rollback
(Libera XLOCK)
Tempo
T1
T2
T3
Select Acc3
(Solic. SLOCK)
WAIT
...
T4
Transao 2
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.
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
]
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