Vous êtes sur la page 1sur 2

GUILHERME DUARTE

Banco de Dados 2
Exerccios Unidade 6
Documento apresentado como composio de nota de
prevista no plano de ensino da disciplina de Interface Banco de
Dados 2, no Curso de Tecnologias da Informao e
Comunicao, na Universidade Federal de Santa Catarina.
Prof. Dr. Alexandre Leopoldo Gonsalves.

Ararangu, 2016

1) Faa uma discusso geral sobre os modos de bloqueios deixando claro o comportamento a partir
da tabela de compatibilidade.
Os modelos de bloqueio utilizam operaes de leitura que no alteram seus dados. Os bloqueios
permitem que transaes simultneas leiam um recurso Select sob controle de simultaneidade. Nenhuma
outra transao pode modificar os dados enquanto as transaes esto em bloqueios compartilhados,
existirem no recurso. Os bloqueios so liberados quando a operao de leitura finaliza a operao.
Os bloqueios de atualizao evitam a formao de deadlock. Se duas transaes adquirem
bloqueios em modo compartilhado em um recurso e tentam atualizar os dados, uma das transaes tenta
uma modificar o bloqueio para exclusivo. A converso de bloqueio de modo compartilhado para exclusivo
precisa esperar, porque o bloqueio exclusivo para uma transao no compatvel com o bloqueio em
modo compartilhado da outra transao; ocorre uma espera por bloqueio. A segunda transao tenta
adquirir um bloqueio exclusivo para sua atualizao. Como ambas as transaes esto convertendo para
bloqueios exclusivos, e ambas esto esperando pela outra transao liberar seu bloqueio em modo
compartilhado, ocorre um deadlock.
Bloqueio de maneira Exclusiva utilizado em operaes da modificao, como Insert, Update ou
Delete, este bloqueio segura que vrias atualizaes no sejam realizadas no mesmo recurso e tempo. Este
bloquei evita o acesso de um recurso atravs de transaes simultneas. Com um bloqueio exclusivo,
nenhuma outra transao pode modificar os dados.
2) Considerando o conceito de MVCC (Multiversion Concurrency Control) elabore um exemplo
com uma sequncia consistente de comandos SQL/DML envolvendo trs transaes. Como
resultado apresente em uma tabela os passos executados, ou seja, com os comandos. Na tabela deve
existir tambm uma quarta coluna explicando cada operao executada.
CREATE TABLE PROF (
CODIGO INTEGER,
NOME VARCHAR(50),
SALARIO NUMERIC(10,2)
);
DELETE FROM PROF;
INSERT INTO PROF (CODIGO, NOME, SALARIO) VALUES (1, 'Professor 1', 10500.00),
(2, 'Professor 2', 8500.00),
(3, 'Professor 3', 3200.00),
(4, 'Professor 4, 9000.00),
(5, 'Professor 5', 11130.00);
select codigo, nome, salario from PROF where CODIGO between 1 and 10 for update wait 10;
update PROF set salario = salario + 1000.00 where CODIGO between 1 and 10;
select codigo, nome, salario from PROF where SALARIO > 1000 for update wait 10;
update PROF set salario = salario + 1000.00 where SALARIO > 1000;
select cod_cliente, nome, salario from PROF where CODIGO between 1 and 10;
select cod_cliente, nome, salario from PROF where CODIGO between 11 and 20 for update;
update PROF set salario = salario + 1000.00 where CODIGO between 11 and 20;
3) Considerando o conceito de deadlock implemente um exemplo com comandos SQL/DML
(updates) utilizando trs sesses SQL. Ao final apresente os valores atualizados aps todos os
commits e/ou rollbacks.
Sesso 1 = UPDATE deadlock SET value = value + 120 WHERE id = 2;
Sesso 2 = UPDATE deadlock SET value = value + 120 WHERE id = 3;
Sesso 3 = UPDATE deadlock SET value = value + 120 WHERE id = 1;

Vous aimerez peut-être aussi