Transações - ECNSoft.Net

Propaganda
Administração e Gerenciamento
de Banco de Dados
Transação
[email protected]
Transação
Transação é um bloco composto de uma unidade lógica de trabalho,
ou seja, todas as instruções que compõem o bloco são efetivadas
ou nenhuma delas é efetivada.
É um conjunto de procedimentos executados num banco de dados,
que para o usuário é visto como uma única ação.
Do ponto de vista do SGBD, uma transação é uma sequência de
operações que são tratadas como um bloco único e indivisível
(atômico) no que se refere à sua recuperação.
Esse conceito garante: consistência e integridade dos dados.
2
CATEGORIA SQL TPL
Categoria básica: DML
TPL: Linguagem de Processamento de Transações
 Permite agrupar diversas operações em uma só.
 Se uma operação falhar, as demais são canceladas.
Principais Comandos:
• BEGIN - início
• COMMIT - final
• ROLLBACK - desfaz a transação corrente
Aumenta a velocidade!
Transações se dão sem acesso ao disco para atualizar o banco de dados
(update).
As mudanças são armazenadas na memória, até o Commit, quando são
gravadas.
3
Assim, só há acesso ao disco uma vez.
Código SQL
BEGIN TRANSACTION
UPDATE CONTA A;
UPDATE CONTA B;
IF TRANSAÇÃO OK
THEN COMMIT;
ELSE ROLLBACK;
END IF;
4
Término da Transação
É indicado pelos comando:
Commit: Termina com sucesso uma a transação.
Rollback: Termina uma transação indicando que houve um erro.
Se uma transação terminar com commit, todas as modificações realizadas dentro
dela, serão efetivadas.
Se uma transação terminar com rollback, todas as modificações realizadas dentro
dela, serão desfeitas. O banco de dados ficará no mesmo estado que estava antes
da transação ser iniciada.
O comando rollback pode ser emitido explicitamente pelo programador ou
automaticamente pelo SGBD quando ocorre um erro.
5
Garantia de isolamento por transação
COMMIT faz as atualizações efetuadas na
transação se tornarem visíveis a outras
transações e com garantia de não serem
canceladas (durabilidade).
Por outro lado, ROLLBACK faz com que todas as
atualizações feitas durante a transação sejam
canceladas (desfeitas) como se a transação
nunca tivesse existido (sido executada).
6
Transações
BEGIN
........
SAVEPOINT P1;
........
ROLLBACK TO SAVEPOINT P1;
Ao contrário da instrução COMMIT TRASACTION, a instrução
ROLLBACK TRASACTION termina uma transação que por
algum motivo não pode ser completada com sucesso.
A instrução SAVE TRASACTION estabelece um ponto de
salvamento na transação. Este ponto é marcado de forma
que todas as atualizações seguintes podem ser
canceladas sem o cancelamento de toda a transação.
7
Propriedade das transações
As transações devem ser executadas pelos SGBDs
de maneira a evitar que problemas ocorram. As
ações que compões uma transação devem
possuir um conjunto de propriedades que é
normalmente referido como propriedades ACID:
•
•
•
•
Atomicidade
Consistência
Isolamento
Durabilidade
8
Atomicidade
Também chamado de Princípio do "Tudo ou Nada".
Evita que falha ocorridas, possam deixar o banco de
dados inconsistentes.
Uma transação não pode ser
executada pela metade,
ou é executada por inteiro
ou é cancelada por inteiro,
retornando ao estado anterior ao seu início.
9
Consistência
Uma transação só é executada, se o estado do
banco de dados permanecer consistente após o seu
término.
Possui dois aspectos: A consistência do banco
dados e a consistência da própria transação.
Uma transação deve ser um programa correto e
suas ações não devem resultar em violações das
restrições de integridade definidas para o banco de
dados.
10
Isolamento
As transações são independentes.
Em execuções concorrentes, uma transação não
pode gerar um estado inconsistente, com a
intercalação de diversas transações relacionadas.
Significa que, mesmo no caso de transações
executadas concorrentemente, o resultado final é
igual ao obtido com a execução isolada de cada
uma delas. A observância desta propriedade das
transações pelos SGBDs impede a ocorrência dos
problemas de acesso a dados.
11
Durabilidade
A durabilidade garante por algum mecanismo a
recuperação das informações perdidas.
Significa que os resultados de uma transação, caso ela
seja
concluída com sucesso, devem ser persistentes. Mesmo
se depois houver uma falha no sistema.
Quando em um banco de dados ocorrer falha após a
execução com sucesso de uma transação, é garantida a
possibilidade de recuperação das informações e da
integridade dos dados.
12
Transações no SQL Server
No SQL Server
as transações funcionam
com as instruções DML
e também com as
instruções DDL.
13
Bloqueio
Compartilhado: permite que outras transações possam
compartilhar os dados mas não possam ter bloqueio
exclusivo.
Exclusivo: nenhuma outra transação poderá obter
qualquer tipo de acesso.
Protocolo impõe a serialização:
 bloqueio compartilhado sobre tudo que for lido,
 bloqueio exclusivo sobre tudo que for atualizado
 conservar todos os bloqueios até o fim da transação.
14
15
16
17
Tipos de Comandos de SQL
OS COMANDOS SQL SÃO DIVIDIDOS EM SEIS(6) CATEGORIAS:
• DDL LINGUAGEM DE DEFINIÇÃO DE DADOS.
CRIAR TABELAS = CREATE
REESTRUTURAR = ALTER
EXCLUIR TABELA = DROP.
• DML  LINGUAGEM DE MANIPULAÇÃO DE DADOS.
ACRESCENTA OU REMOVE LINHAS INTEIRAS =
INSERT E DELETE.
ALTERA O VALOR DE COLUNAS ESPECÍFICAS =
UPDATE
SELECIONAR LINHAS ESPECÍFICAS =
SELECT
18
Tipos de Comandos de SQL
• DCL LINGUAGEM DE CONTROLE DE
DADOS.
PERMITE O CONTROLE DE
ACESSO AO BANCO DE DADOS.
GRANT (dá privilégios)
e REVOKE (revoga privilégios)
• DQL  LINGUAGEM DE CONSULTA DE
DADOS.
PRINCIPAL FOCO PARA O
USUÁRIO DE BD, PARA COMPOR
CONSULTAS.
SELECT (FROM, WHERE)
com operadores lógicos (AND, OR, NOT)
com operadores de comparação (<, >, <=, >=, LIKE, BETWEEN)
com funções de soma (AVG, COUNT, SUM, MIN, MAX)
19
Tipos de Comandos de SQL
• DTL  - Linguagem de Transação de
Dados (TPL da DML)
• CCL LINGUAGEM DE CONTROLE DE
CURSOR.
PERMITE SELECIONAR UMA
ÚNICA LINHA DE UM RECORDSET
PARA PROCESSAMENTO.
UPDATE WHERE CURRENT. 20
Serialização
Exigência que qualquer escala
produzida pelo processamento concorrente
de um conjunto de transações
tenha um efeito equivalente
a uma escala produzida
quando essas transações são executadas
sequencialmente em alguma ordem,
garantindo a serialização.
21
22
23
24
25
26
Exemplo de transação
• Um cliente, em um PC ligado por modem, faz
transferência de fundos de uma conta bancária para
outra, em dois passos:
(1) Saque(quantia, conta1)
(2) Deposite(quantia, conta2)
• Se a ligação telefônica cair entre os passos (1) e (2)
o dinheiro desaparece!
• Solução: passos (1) e (2) devem ocorrer como uma
transação atômica (como se fosse um único passo);
se a ligação telefonia cair entre os passos (1) e (2),
os efeitos do passo (1) devem ser cancelados.
27
Exemplo de Log
x = 0;
y = 0;
BEGIN_TRANSACION
x = x + 1;
y = y + 2;
x = y * y;
END_TRANSACION
Log
x = 0/1
y = 0/2
x = 1/4
28
Problema dos
Leitores e Escritores
Courtois et al., 1971
Problema/Exemplo
Sistema de reserva de linhas aéreas com muitos
acessos (processos) em competição, querendo
ler e escrever.
É aceitável que múltiplos acessos consigam ler
a base de dados ao mesmo tempo, mas, se um
acesso for atualizar (escrever) na base de dados,
nenhum outro processo pode ter acesso ao
dado da base de dados que será alterado,
mesmo que seja somente para leitura.
29
Leitores e Escritores
Prever:
. Consulta
. Inclusão
. Alteração
. Exclusão
30
Barbeiro Sonolento
31
Barbeiro Sonolento
comunicação interprocessos (IPC)
Numa barbearia, há um barbeiro, uma cadeira de
barbeiro e n cadeiras para eventuais clientes esperarem
a vez.
Quando não há clientes, o barbeiro senta-se na cadeira
de barbeiro e cai no sono.
Quando chega um cliente, ele se sentará (se houver
cadeiras vazias) ou sairá da barbearia (se todas as
cadeiras estiverem ocupadas).
O problema é programar o barbeiro e os clientes sem
cair em condições de disputa.
32
Barbeiro Sonolento
Exemplo
Situações com várias filas,
com uma mesa de atendimento,
com diversos atendentes e um
sistema computadorizado
de chamadas em espera,
atendendo a um número limitado
de chamadas que chegam.
33
Algoritmo
dos Filósofos Famintos
Dijkstra, 1965
34
Filósofos Famintos
Estados
Espera
Pensa
Filósofos
Come
Garfos
Espera
Espera
35
Filósofos Famintos
(com 7 filósofos e 7 garfos)
1. Filósofos e garfos irão jantar.
2. Cada filósofo necessita de 2 garfos para comer.
3. Os filósofos podem estar em um destes três 3 estados:
. PENSANDO,
. ESPERANDO ou
. COMENDO.
4. Se um filósofo está PENSANDO e quer passar para o estado
COMENDO, ele tenta pegar 2 garfos.
5. Se ele não consegue, passa o estado ESPERANDO.
6. Se ele consegue passa para o estado COMENDO.
7. No estado FAMINTO, o filósofo permanece tentando pegar os
garfos.
Problemas? Pode ocorrer eterna espera ou um impasse.
36
Filósofos Famintos
Solução 1
1. Filósofo com fome pega o garfo da direita.
2. Pega o garfo da esquerda.
3. Come.
4. Libera garfo da direita e da esquerda.
Problemas:
Suponha que os filósofos vizinhos ao que resolveu comer
estejam comendo. O filósofo não consegue executar o
passo e fica em um impasse.
37
Filósofos Famintos
Impasse
Impasse, Disputa ou Deadlock
Estado em que um programa não pode
executar a próxima instrução.
38
Filósofos Famintos
Solução 2
1. Filósofo com fome tenta pegar o garfo da direita.
2. Se está livre pega, senão aguarda por x tempo e repete
o passo 2.
3. Tenta pegar o garfo da esquerda.
4. Se está livre pega, senão, libera o garfo da direita,
aguarda por x tempo e repete o passo 2.
5. Come.
6. Libera garfo da direita e da esquerda.
Problemas:
Suponha que os 7 filósofos resolvam comer
simultaneamente, haverá uma eterna espera de todos
pelo garfo da esquerda.
39
Filósofos Famintos
Eterna Espera
Inanição ou Starvation
Estado em que um programa continuará
a ser executado indefinidamente, sem
conseguir progredir em seus passos.
40
Filósofos Famintos
Solução 3
1. Filósofo com fome tenta pegar o garfo da direita.
2. Se está livre pega, senão aguarda por um tempo
aleatório e repete o passo 2.
3. Tenta pegar o garfo da esquerda.
4. Se está livre pega, senão, libera o garfo da direita,
aguarda por um tempo aleatório e repete o passo 2.
5. Come.
6. Libera garfo da direita e da esquerda.
Problemas:
Probabilidade do processo continuar intertravado é
muito pequena.
Utilizado na prática na rede local Ethernet quando há
colisão de pacotes. Contudo, não funcionaria, por
exemplo, no controle de segurança de uma usina nuclear.
41
Filósofos Famintos
Solução 4
Utilização de semáforos:
Filósofo i só come se
semáforo i-1 e i+1
estiverem liberados.
Exercício:
Elabore o algoritmo desta solução.
42
Problemas Clássicos de IPC
Filósofos Famintos
acesso exclusivo a um número limitado de
recursos
Leitores e Escritores
acesso a base de dados
Barbeiro Sonolento
comunicação interprocessos (IPC)
43
Exercício Deadlock.
Considere o seguinte conjunto de transações e suas respectivas instruções. Estas transações
entram em deadlock? Justifique.
T1
T2
Lock-X(A)
Usuário X e S.
Transação T1 e T2.
Registro A e B.
Read(A)
Lock-S(B)
Lock-X(B)
Read(X)
Write(X)
Lock-X(A)
44
Exercício Deadlock.
Considere o seguinte conjunto de transações e suas respectivas instruções. Estas transações
entram em deadlock? Justifique.
T1
T2
Lock-X(A)
Usuário X e S.
Transação T1 e T2.
Registro A e B.
Read(A)
Lock-S(B)
Lock-X(B)
Read(X)
Write(X)
Lock-X(A)
Sim, pois T1 solicita bloqueio exclusivo sobre o item B (que já está bloqueado em modo conflitante por T2) e precisa esperar;
e T2 solicita bloqueio exclusivo sobre o item A (que já está bloqueado em modo conflitante por T1) e precisa esperar.
45
46
GRAUS DE ISOLAMENTO
SERIALIZABLE:
PERMITE APENAS ESCALAS SERIALIZAVEIS SEREM EXECUTADAS.
BLOQUEIA OS DADOS ATÉ O FINAL DA TRANSAÇÃO E IMPEDE A
INSERÇÃO DE NOVAS TUPLAS NAS TABELAS EM USO.
MODO MAIS RESTRITO, QUE RESULTA EM MENOR CONCORRÊNCIA.
REPEATABLE READ:
BLOQUEIA OS DADOS ATÉ O FINAL DA TRANSAÇÃO.
GARANTE QUE OS VALORES DOS DADOS ACESSADOS NÃO SEJAM
MODIFICADOS POR OUTRAS TRANSAÇÕES, MAS PERMITE INSERIR TUPLAS.
READ COMMITED:
OS VALORES DOS DADOS ACESSADOS NÃO PODEM SER MODIFICADOS POR
OUTRAS TRANSAÇÕES. OPCAO DEFAULT.
READ UNCOMMITED (outro usuário vai ler sem levar em conta a transação):
NÃO USA BLOQUEIO. É O MODO MENOS RESTRITO.
TEM MAIOR CONCORRÊNCIA E DEVE SER USADO QUANDO NÃO SE TEM
NENHUM COMPROMISSO COM A CONSISTÊNCIA DO RESULTADO.
47
Criar exemplo de uma ou mais transações
com:
1. Ponto de salvamento
2. Bloqueio compartilhado
3. Bloqueio exclusivo
4. Timeout
5. Bloqueio de tabela
6. Bloqueio de registro
7. Commit e Rollback
8. Leitura multi-usuária sem bloqueio
9. Processamento simultâneo de duas transações
Não esqueça de marcar os desbloqueios!
48
Download