Tecnologia em Análise e Desenvolvimento de
Sistemas
Administração de Banco de Dados
Exercícios
❖
1) O problema caracterizado pelo quadro ao lado, onde a
coluna Tempo indica a sequência de execução das
operações das transações concorrentes T1 e T2, é
conhecido como
❖
(A)atualização perdida
❖
(B)atualização temporária
❖
(C)leitura não repetível
❖
(D)leitura suja
Exercícios
❖
2)
Suponha duas transações T1 e T2:
❖
BEGIN TRANSACTION
T1
❖
UPDATE
Banco
❖
SET
Saldo = ((
SELECT
Saldo
FROM
Banco
WHERE
Conta =
10)
–
100)
❖
WHERE
Conta = 10
❖
UPDATE
Banco
Exercícios
❖
2)
Suponha duas transações T1 e T2:
❖
BEGIN TRANSACTION
T2
❖
UPDATE
Banco
❖
SET
Saldo = ((
SELECT
Saldo
FROM
Banco
WHERE
Conta =
20)
–
200)
❖
WHERE
Conta = 20
❖
UPDATE
Banco
❖
SET
Saldo = ((
SELECT
Saldo
FROM
Banco
WHERE
Conta =
30) + 200)
Comandos Avançados para Controle
de Transação
❖
SAVEPOINT <identifier>
❖
Define um ponto de chamada dentro de um
Comandos Avançados para Controle
de Transação
❖
SAVEPOINT <identifier> - Exemplo
START TRANSACTION
;
comandos SQL…
SAVEPOINT
Tabela_cliente;
comandos SQL…
Comandos Avançados para Controle
de Transação
❖
ROLLBACK TO SAVEPOINT <identifier>
❖
Desfaz todas as instruções SQL que foram
realizadas após o ponto de chamada informado;
Comandos Avançados para Controle
de Transação
❖
ROLLBACK TO SAVEPOINT <identifier> - Exemplo
START TRANSACTION
;
comandos SQL…
SAVEPOINT
Tabela_cliente;
comandos SQL…
ROLLBACK TO SAVEPOINT
Tabela_cliente;
comandos SQL…
Comandos Avançados para Controle
de Transação
❖
RELEASE SAVEPOINT <identifier>
❖
Libera um ponto de chamada previamente
definido.
Comandos Avan
çados para Controle de Transação
❖
RELEASE SAVEPOINT <identifier> - Exemplo
START TRANSACTION
;
comandos SQL…
SAVEPOINT
Tabela_cliente;
comandos SQL…
ROLLBACK TO SAVEPOINT
Tabela_cliente;
RELEASE SAVEPOINT
Tabela_cliente;
comandos SQL…
Comandos Avançados para Controle
de Transação
❖
RELEASE SAVEPOINT <identifier> - Exemplo
❖
O
RELEASE SAVEPOINT
serve para
liberar o
identificador
do
SAVEPOINT
para ser utilizado
novamente dentro da mesma transação;
❖
Os comandos
COMMIT
e
ROLLBACK
liberam da
memória
todos os
SAVEPOINT
que foram
Transações no MySQL
❖
Se tratando do MySQL, apenas o InnoDB
Transações no MySQL
❖
Instruções de Controle SQL de uma transação:
❖
Start Transaction
(ou
BEGIN
)
❖
Inicia explicitamente uma nova transação,
mantendo ela aberta até que seja fechada
Transações no MySQL
❖
Instruções de Controle SQL de uma transação:
❖
SavePoint
❖
Um ponto delimitado na transação, que oferece a
possibilidade de um
rollback
de qualquer comando
executado após este ponto salvo.
❖
Cuidado
❖
Ao efetuar um novo
savepoint
com o mesmo nome, o antigo
Transações no MySQL
❖
Instruções de Controle SQL de uma transação:
❖
Rollback to savepoint
❖
Efetua o rollback da transação até o ponto criado.
Este ponto continuará a existir mesmo após o
rollback, permitindo que ele seja reutilizado.
❖
Rollback
❖
Cancela todas as alterações efetuadas na
transação.
❖
Commit
Transações no MySQL
START TRANSACTION
;
SELECT
@Total:=
SUM
(salario)
FROM
funcionarios
WHERE
type=1;
UPDATE
Folha_pagamento
SET
Valor_FP=@Total
WHERE
type=1;
Transações no MySQL
❖
AUTOCOMMIT
❖
É ativado por padrão, logo o MySQL confirma
implicitamente cada instrução como uma
transação;
❖
Uma vez desativado, será possível manusear
cada transação, porém fica a critério do
DBA/DEV;
❖
Para desativar o autocommit:
Transações no MySQL
❖
AUTOCOMMIT
❖
Para verificar a configuração através do select:
❖
select @@autocommit;
❖
A partir da versão 5.5.8 do MySQL, é possível definir o
autocommit = 0 de forma global na seção do
[mysqld] no seu arquivo de configuração (default
Exercícios
❖
3)
Cada comando SQL é tratado como uma
transação isolada pelos SGBDs.
❖
(C) Certo
Exercícios
❖
4)
Se uma transação for executada de maneira
serializável, poderá ocorrer de uma transação
ler novamente dados lidos anteriormente e
descobrir que eles foram alterados por outra
transação.
❖
(C) Certo
Recuperação de falhas
❖
Responsabilidade do SGBD
❖
Todas as operações de uma transação se
completem com sucesso e seu efeito seja
registrado permanentemente no BD; ou
❖
A transação não tenha absolutamente nenhum
Recuperação de falhas
❖
O SGBD não deve permitir que algumas
operações de uma transação T sejam
aplicadas ao banco de dados enquanto outras
operações de T não sejam.
❖
Isso pode acontecer quando uma transação
Recuperação de falhas
❖
Os tipos de falhas possíveis são:
❖
falha no computador;
❖
erro de transação ou de sistema;
❖
condições de exceção detectadas
pela transação;
❖
imposição do controle de
concorrência;
❖
falha no disco;
❖
problemas físicos e catástrofes.
O sistema deve
manter
informações
suficientes para se
recuperar da
Recuperação de falhas
❖
Para manter a consistência do banco de
dados, o gerenciador de recuperação mantém
o registro das operações:
❖
BEGIN_TRANSACTION:
❖
marca o início da transação.
❖
READ ou WRITE:
❖
lê ou grava um item no banco de dados.
❖
END_TRANSACTION:
Recuperação de falhas
❖
Para manter a consistência do banco de dados, o
gerenciador de recuperação mantém o registro das
operações:
❖
COMMIT_TRANSACTION:
❖
sinaliza o final bem-sucedido da transação, de modo
que quaisquer alterações executadas pela transação
possam ser seguramente confirmadas (
committed
)
para o banco de dados e não serem desfeitas.
❖
ROLLBACK (ou ABORT):
❖
sinaliza que a transação terminou sem sucesso, de
Exercícios
❖
5) Uma transação é uma unidade atômica de
trabalho que ou estará completa ou não foi
realizada. Para propostas de restauração, o
administrador de restaurações mantém o
controle das seguintes operações:
❖
BEGIN_TRANSACTION
:
❖
M arca o início da execução da transação.
❖
READ
ou
WRITE
:
Exercícios
❖
Avalie as seguintes afirmações:
❖
I. Especifica que as operações READ e WRITE da transação terminaram e
marca o fim da execução da transação. Entretanto, nesse ponto é necessário
v erificar se as mudanças introduzidas pela transação podem ser
permanentemente aplicadas ao banco de dados (efetiv adas), ou se a
transação dev erá ser abortada porque v iola a serialização, ou por alguma
outra razão.
❖
II. Indica término com sucesso da transação, de forma que quaisquer
alterações (atualizações) executadas poderão ser seguramente efetiv adas no
banco de dados e não serão desfeitas.
❖
III. Indica que uma transação não terminou com sucesso, de forma que
quaisquer mudanças ou efeitos que a transação possa ter aplicado ao banco
de dados dev erão ser desfeitas.
❖