Post on 18-Jul-2020
Transacções e controle de concorrência 1
Tópicos Avançados de Bases de DadosInstituto Politécnico da Guarda, Escola Superior de Tecnologia e Gestão, 2004/2005
1Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
Tópicos Avançados de Bases de Dados
Henrique Madeira
2004/2005
2Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
Programa de TABD 2004/2005
• Componente teórica– Revisão e complemento de conceitos básicos de bases de dados– Data Warehousing e OLAP
Conceitos básicos •••• Modelo multidimensional Projecto de data warehouses •••• Desempenho e optimização de queries Particionamento de dados •••• Discos RAID Noções básicas de administração •••• Área de estágio e ETT
• Componente prática– Desenvolvimento de uma aplicação de base de dados (parcialmente feita fora do
espaço das aulas)
– Aulas práticas para consolidação de aspectos específicos da matéria básica de bases de dados:
• Transacções e controlo de concorrência• Indexação
para consolidação de aspectos específicos da matéria de Data Warehousing e OLAP:• Definição de esquemas em estrela
Transacções e controle de concorrência 2
Tópicos Avançados de Bases de DadosInstituto Politécnico da Guarda, Escola Superior de Tecnologia e Gestão, 2004/2005
3Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
Conversar sobre bases de dados:algumas perguntas de diagnóstico
• O que é uma base de dados?• O que é um SGBD?• O que é o modelo relacional?• O que é integridade dos dados?• Como se garante a integridade dos dados?• O que é normalização?• O que são formas normais?• Quais os inconvenientes de as tabelas não estarem normalizadas?• Como se normaliza tabelas?• O que são modelos de Entidade-Relacionamento (ER)?• O que são operações relacionais?• Quais as principais operações relacionais?
4Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
Conversar sobre bases de dados:algumas perguntas de diagnóstico (cont.)
• O que é SQL?• Quais os quatro comandos SQL mais importantes para
manipulação de dados?• O que são transacções?• Quais as propriedades das transacções?• Como funciona o controlo de concorrência (bloqueios)?• Quais os principais métodos de acesso a dados?• O que são índices e para que servem?• Quais as regras básicas para definição de índices?• O que é projecto lógico e projecto físico em bases de dados?
Transacções e controle de concorrência 3
Tópicos Avançados de Bases de DadosInstituto Politécnico da Guarda, Escola Superior de Tecnologia e Gestão, 2004/2005
5Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
Conversar sobre bases de dados:algumas perguntas de diagnóstico (cont.)
• O que é programação no servidor (PL/SQL no caso do Oracle)?• Quais as principais vantagens e desvantagens de programar no
servidor de bases de dados?• O que são excepções e porque é que são muito importantes?• O que são cursores e para que servem?• O que são triggers?• Quando se fala em “administração de bases de dados” de que é
que se está a falar?• Quais os grandes grupos de tarefas na administração de bases de
dados
6Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
Transacções
• Mecanismo que valida (ou anula) conjuntos de operações básicas na base de dados de uma maneira atómica:
ou todas as operações elementares pertencentes à transacção são confirmadas, ou são todas anuladas e é como se nunca tivessem existido.
INSERT INSERT DELETE UPDATE
TRANSACÇÃO
COMMIT
INSERT UPDATE
COMMITOU
ROLLBACK
INSERT Tempo
TRANSACÇÃO
Transacções e controle de concorrência 4
Tópicos Avançados de Bases de DadosInstituto Politécnico da Guarda, Escola Superior de Tecnologia e Gestão, 2004/2005
7Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
Propriedades das transacções (ACID)
• Atomicidade — todas as operações associadas à transacção são executadas ou nenhuma o é
• Consistência – a execução de uma transacção leva a base de dados de um estado consistente para um novo estado consistente
• Isolamento – os efeitos de uma transacção devem ser entendidos sem ter em conta as restantes transacções
• Persistência – os resultados de uma transacção devem permanecer na base de dados, mesmo que haja uma falha após a conclusão da transacção.
8Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
Dois requisitos particularmente importantes
• Consistência — garantia de correcção da informação
(é da responsabilidade do programador)
• Atomicidade — todas as operações associadas à tran-sacção são executadas ou nenhuma o é
(é da responsabilidade do SGBD)
Transacções e controle de concorrência 5
Tópicos Avançados de Bases de DadosInstituto Politécnico da Guarda, Escola Superior de Tecnologia e Gestão, 2004/2005
9Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
Instruções DML, DDL e transacções(Caso do Oracle)
• Transacções DML — Podem conter qualquer número de instruções DML.
• Transacções DDL — Apenas podem conter uma instrução DDL.
INSERT INSERT DELETE CREATE TABLE
TRANS. DML
UPDATEINSERT
TRANS. DML
Termina transacção corrente e inicia nova transacção
Termina transacção DDL e inicia nova transacção
TRANS. DDL
10Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
Processamento de transacções
• Uma transacção começa quando é encontrado o primeiro comando DML (a seguir ao fim da transacção anterior);
• Uma transacção termina com:
– COMMIT (a transacção é confirmada);
– ROLLBACK (a transacção é abortada);
– Comando DDL (a transacção é confirmada);
– Detecção de ERROS (a transacção é abortada);
– Saída (EXIT) da sessão SQL (a transacção é confirmada).
Transacções e controle de concorrência 6
Tópicos Avançados de Bases de DadosInstituto Politécnico da Guarda, Escola Superior de Tecnologia e Gestão, 2004/2005
11Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
Savepoints
• Permitem guardar todas as alterações efectuadas desde o início da transacção corrente, ou desde o último Savepoint;
• Não terminam a transacção, apenas guardam as alterações efectuadas;
• Úteis em transacções muito longas;
• Pode-se fazer Rollback para um Savepoint, anulando assim apenas as alterações introduzidas depois desse Savepoint;
• Depois de Rollback To Savepoint a transacção continua activa;
• Quando a transacção termina todos os Savepoints são eliminados.
SAVEPOINT S1 SAVEPOINT S2 ROLLBACK TO S2 COMMITCOMMIT
12Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
Durante uma transacção
Enquanto as alterações introduzidas durante a transacção corrente não forem confirmadas (Commit), estas alterações:
– são visíveis para o dono da transacção;
– são invisíveis para as outras transacções (estes vêem o estado após o último Commit);
– podem ser anuladas através de Rollback;
– podem ser anuladas parcelarmente através de Rollback para um Savepoint.
Transacções e controle de concorrência 7
Tópicos Avançados de Bases de DadosInstituto Politécnico da Guarda, Escola Superior de Tecnologia e Gestão, 2004/2005
13Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
Transacções e transparência para o programa
O controlo (início/fim) das transacções é explícito e visível para o programador/utilizar.
O programador é responsável por definir as operações que devem ser executadas atomicamente através do mecanismos das transacções.
14Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
Atomicidade e consistência de dados: um exemplo
Transacção
Transferência de 5000 contos entre duas contas bancárias:1) Débito de 5000 contos da conta origem;
2) Crédito de 5000 contos da conta destino.
Débito CréditoCommit Commit
As transacções devem englobar conjuntos de coman-dos que promovem alterações consistentes de dados
Transacções e controle de concorrência 8
Tópicos Avançados de Bases de DadosInstituto Politécnico da Guarda, Escola Superior de Tecnologia e Gestão, 2004/2005
15Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
• A execução bem sucedida de um comando DML—> todo o comando foi executado sem erros e de uma
maneira atómica (e.g., todos os registos selec-cionados foram actualizados);
• As alterações efectuadas por um comando só ficam permanentes quando ocorrer o Commit da transacção.
Execução de comandos DML em SQL e controlo das transacções
16Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
Rollback ao nível do comando SQL
• Se, durante a fase de execução de um comando DML, for detectado um erro é feito Rollback do comando (é como se o comando nunca tivesse sido iniciado)
• Possíveis erros detectados:– tentativas de violação de integridade;– incompatibilidade de dados;– Esgotamento do espaço disponível para a tabela;– etc
• Todas as alterações provocadas pela execução parcial do comando (até à detecção do erro) são desfeitas.
Transacções e controle de concorrência 9
Tópicos Avançados de Bases de DadosInstituto Politécnico da Guarda, Escola Superior de Tecnologia e Gestão, 2004/2005
17Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
Instruções SQL para controlo de transacções
• COMMIT [WORK]
• SAVEPOINT <nome do savepoint>
• ROLLBACK [WORK] TO [SAVEPOINT] <nome do savepoint>
18Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
COMMIT [WORK]
• Termina explicitamente transacção corrente:
– Torna definitivas as alterações efectuadas durante a transacção;
– Elimina todos os Savepoints efectuados durante a transacção;
– Liberta os bloqueios da transacção.
Recordar que:A transacção também pode terminar de uma maneira implícita (sem o comando Commit):
– Antes de uma instrução DDL;
– Depois de uma instrução DDL;
– Ao sair da sessão SQL.
Transacções e controle de concorrência 10
Tópicos Avançados de Bases de DadosInstituto Politécnico da Guarda, Escola Superior de Tecnologia e Gestão, 2004/2005
19Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
SAVEPOINT <nome do savepoint>
• Guarda as alterações efectuadas até esse ponto da execução da transacção:
– Usado para dividir uma transacção em partes mais pequenas;
– Em caso de engano é possível desfazer as alterações feitas e retomar o estado a partir de um savepoint estabelecido anteriormente;
– Se for criado um segundo savepoint com o mesmo nome de um anterior o savepoint anterior é apagado;
– Há um limite para o número de savepoints por transacção (poucos savepoints, normalmente).
20Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
ROLLBACK [WORK] TO [SAVEPOINT] <nome_savepoint>
• ROLLBACK TO <nome do savepoint>– Desfaz as alterações efectuadas desde o savepoint mencionado;
– Liberta bloqueios estabelecidos depois do savepoint.
• ROLLBACK
– Termina a transacção abortando-a;
– Desfaz todas as alterações efectuadas desde o início da transacção;
– Apaga todos os savepoints;
– Liberta os bloqueios da transacção.
Transacções e controle de concorrência 11
Tópicos Avançados de Bases de DadosInstituto Politécnico da Guarda, Escola Superior de Tecnologia e Gestão, 2004/2005
21Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
Exemplo de utilização de savepoints
INSERT INTO ELEITOR (BI, NOME, END, N_ELEITOR)VALUES (4537687, ‘António Silva’, ‘R. Carlos seixas, 29, 1º, Esq’, 2075);
SAVEPOINT INSERÇÃO_CONCLUIDA;
UPDATE ELEITORSET NOME = ‘António Dias da Silva’, BI = 4537688;
ROLLBACK TO INSERÇÃO_CONCLUIDA (Anula comando de actualização);
UPDATE ELEITOR (Comando de actualização revisto);SET NOME = ‘António Dias da Silva’, BI = 4537688WHERE N_ELEITOR = 2075;
COMMIT;
22Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
Consistência da informação
• Dois tipos de acesso à base de dados:– Operações de leitura (SELECT);– Operações de escrita (INSERT, UPDATE, DELETE).
• Problemas: garantir que
– As operações de leitura não visualizam dados em processo de alteração;
– As operações de escrita são feitas de modo consistente, i.e., as alterações feitas por um utilizador não entram em conflito com as alterações que outro utilizador esteja a fazer.
Transacções e controle de concorrência 12
Tópicos Avançados de Bases de DadosInstituto Politécnico da Guarda, Escola Superior de Tecnologia e Gestão, 2004/2005
23Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
Segmentos de Rollback (Oracle)
• Parte da base de dados onde são registadas as acções de uma transacção que podem vir a ser desfeitas (rolled back) em certas circunstâncias;
• Os segmentos de rollback contêm os valores antigos relativos a todas as alterações efectuadas a dados durante uma transacção;
• Cada base de dados contém um ou mais segmentos de rollback;
• Os segmentos de rollback são uma estrutura interna manipulada pelo SGBD e não pode ser acedida pelos utilizadores nem pelo administrador da base de dados.
24Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
Segmentos de Rollback: utilização
• Os segmentos de rollback são usados para:
– Assegurar a consistência de leituras;
– Efectuar o rollback de transacções;
– Recuperação após falha (em conjunto com outros mecanismos).
Transacções e controle de concorrência 13
Tópicos Avançados de Bases de DadosInstituto Politécnico da Guarda, Escola Superior de Tecnologia e Gestão, 2004/2005
25Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
Consistência da leitura
• Garantir que cada utilizador vê os dados conforme eles existiam no momento da última confirmação (commit).
• Só depois de confirmadas (pelo commit da transacção corrente) é que as últimas alterações se tornam visíveis para todos os utilizadores.
26Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
Uso de segmentos de Rollback
Blocos de dados
Segmentos de rollback
Identificação da alteração e valor antigo do registo
UPDATE ELEITOR (Nome)SET NOME = ‘António Dias Silva’WHERE N_ELEITOR = 2075;
Novo valor do registo
Utilizador ATransacção T1
Transacções e controle de concorrência 14
Tópicos Avançados de Bases de DadosInstituto Politécnico da Guarda, Escola Superior de Tecnologia e Gestão, 2004/2005
27Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
Leituras durante a transacção:o utilizador é o dono da transacção
Blocos de dados
Segmentos de rollback
UPDATE ELEITOR (Nome)SET NOME = ‘António Dias Silva’WHERE N_ELEITOR = 2075;
SELECT * FROM ELEITORWHERE N_ELEITOR < 2000;
Utilizador ATransacção T1
As leituras durante T1 são feitas sobre os
dados alterados
28Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
Leituras durante a transacção:outros utilizadores
Utilizador BTransacção T2 Blocos de
dados
Segmentos de rollback
SELECT * FROM ELEITORWHERE N_ELEITOR < 2000; “Imagem de
consistência de leitura”
Dados não alterados
Dados antigos
Outros utilizadores vêem os dados como no início da tran-sacção T1 do utilizador A
Transacções e controle de concorrência 15
Tópicos Avançados de Bases de DadosInstituto Politécnico da Guarda, Escola Superior de Tecnologia e Gestão, 2004/2005
29Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
Transacções só de leitura
• O SGBD garante, por defeito, que os resultados obtidos por umainstrução SELECT (consulta) são sempre consistentes.
• Para garantir que os resultados obtidos por um dado conjunto de consultas são consistentes é necessário incluir essas instruções numa transacção só de leitura.
• Numa transacção só de leitura todas as instruções vêem os dados no estado (consistente) relativo ao início da transacção (alterações confirmadas antes do início da transacção). Alterações efectuadas a esses dados por outros utilizadores não são visíveis durante a transacção só de leitura.
• Estas transacções usam segmentos de rollback de modo semelhante ao usado na consistência de leitura ao nível da instrução.
30Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
Consistência nas transacções só de leitura
Tempo
COMMIT
Sessão A
Sessão B
Sessão C
COMMIT
COMMIT
COMMIT
COMMIT
COMMIT
Sessão X
Início da transac-ção só de leitura
Fim da transac-ção só de leitura
Transacções e controle de concorrência 16
Tópicos Avançados de Bases de DadosInstituto Politécnico da Guarda, Escola Superior de Tecnologia e Gestão, 2004/2005
31Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
Usar transacções só de leitura
• Começam pelo comando SET TRANSACTION READ ONLY.
• Só admitem consultas (SELECT); comandos DML não são permitidos.
• A transacção só de leitura termina quando for executado um Commit, Rollback ou uma instrução DDL.
32Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
Exemplo de transacção só de leitura
COMMIT;
SET TRANSACTION READ ONLY;
SELECT N_DOCENT, NOME FROM DOCENTES;
SELECT N_ALUNO, NOME FROM ALUNOS;
SELECT *FROM AL_DOC;
COMMIT;
Transacções e controle de concorrência 17
Tópicos Avançados de Bases de DadosInstituto Politécnico da Guarda, Escola Superior de Tecnologia e Gestão, 2004/2005
33Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
Segmentos de rollback: outros aspectos
• Sempre que começa uma transacção é atribuído um segmento de rollback a essa transacção.
• Cada segmento de rollback pode tratar mais do que uma transacção.
• Durante a transacção, por cada alteração efectuada é guardado (entre outras coisas) o valor antigo no segmento de rollback correspondente.
• Durante a transacção, registo correspondente a cada nova alteração é ligado ao registo correspondente à alteração anterior, de molde a facilitar as leituras e/ou o rollback.
• No caso de haver savepoints, as alterações são relacionadas com o savepoint correspondente.
• Em caso de necessidade são atribuídos novos segmentos de rollback à transacção.
34Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
Segmentos de rollback: commit
• Quando uma transacção termina por commit a informação de rollback é libertada;
• Contudo, permanecerá no segmento de rollback de modo a fornecer uma visão consistente dos dados, no caso de haver consultas (de outros utilizadores) sobre esses dados que tenham começado antes do commit;
• Só quando a informação de rollback já não é necessária para garantir a consistência de leituras pendentes é que é destruída.
Transacções e controle de concorrência 18
Tópicos Avançados de Bases de DadosInstituto Politécnico da Guarda, Escola Superior de Tecnologia e Gestão, 2004/2005
35Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
Segmentos de rollback: rollback
• Todas as alterações efectuadas durante a transacção são desfeitas usando a informação de rollback armazenada no(s) segmento(s) correspondente(s);
• No caso de ROLLBACK TO SAVEPOINT só são desfeitas as alterações efectuadas depois do savepoint. A utilização dos segmentos de rollback é semelhante ao caso anterior.
36Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
Concorrência e consistência
Controle da concorrência: objectivos
• Garantir a consistência dos dados;
• Maximizar a concorrência, i.e., permitir que os dados sejam utilizados/manipulados por um grande número de utilizadores.
Transacções e controle de concorrência 19
Tópicos Avançados de Bases de DadosInstituto Politécnico da Guarda, Escola Superior de Tecnologia e Gestão, 2004/2005
37Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
Problemas inerentes à concorrência
• Leituras inconsistentes
• Leituras não reprodutíveis;
• Leituras erróneas;
• Perda de actualizações
Quando os dados devolvidos por uma instrução de consulta reflectem alterações introduzidas e/ou confirmadas na base de dados durante a execução da instrução de consulta;
Quando, numa mesma transacção, duas consultas aos mesmos dados mostram informação diferente, devido a alterações entretanto confirmadas por outras transacções;
Quando, numa transacção, são lidos dados ainda não confirmados por outra transacção;
Quando a actualização de um registo numa transacção é efectuada sobre valores alterados mas ainda não confirmados por outra transacção.
38Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
Bloqueios (locking)
• Mecanismo utilizado para controlar o acesso concorrente aos mesmos dados;
• Impede a actualização simultânea dos mesmos dados por dois ou mais utilizadores;
• Impede alterações na definição de uma tabela ou de uma coluna enquanto estiveram a decorrer transacções que actualizem os dados da tabela ou coluna.
Transacções e controle de concorrência 20
Tópicos Avançados de Bases de DadosInstituto Politécnico da Guarda, Escola Superior de Tecnologia e Gestão, 2004/2005
39Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
Necessidade de bloqueios
• Sempre que um utilizador tenta introduzir alterações na base de dados (acessos de escrita);
• Nunca são necessários bloqueios quando quando o acesso à base de dados é de leitura;
– Os acessos de leitura nunca bloqueiam os acessos de escrita;
– Os os acessos de escrita nunca bloqueiam os acessos de leitura;
– Só acessos de escrita podem bloquear outros acessos de escrita.
40Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
Bloqueios: idéia básica
• Durante uma transacção, todos os registos (tabelas) alterados são automaticamente bloqueados de modo a impedir que outras transacções os possam alterar simultaneamente;
• Se uma transacção tentar alterar um objecto previamente bloqueado por outra transacção ficará suspensa em lista de espera até que esse objecto seja libertado;
• No final de uma transacção todos os objectos bloqueados pelas instruções dessa transacção são libertados.
Transacções e controle de concorrência 21
Tópicos Avançados de Bases de DadosInstituto Politécnico da Guarda, Escola Superior de Tecnologia e Gestão, 2004/2005
41Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
Funcionamento dos bloqueios: idéia base
Nome Num DeptFunc
João 1002 10Ana 986 10
Manuel 1023 40Maria 878 30
Arnaldo 1068 10
COMMIT
UPDATE FUNCSET NOME = ‘Tiago’WHERE NUM = 1002;
UPDATE FUNCSET SAL = SAL * 1.05WHERE DEPT = 10;
COMMIT;
SAL25434512530023468745287398675
42Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
Tipos de bloqueios
• Bloqueio do dicionário de dados:– permite controlar o acesso à definição de objectos na base de dados
(e.g. tabelas através de instruções CREATE TABLE, ALTER TABLE, DROP TABLE);
– é controlado automaticamente pelo SGBD.
• Bloqueio de manipulação de dados:– permite controlar o acesso aos dados nas tabelas;
– o SGBD bloqueia implicitamente as tabelas/registos que estão a ser alterados por um utilizador;
– um utilizador pode adquirir explicitamente um bloqueio numa tabela da base de dados.
Transacções e controle de concorrência 22
Tópicos Avançados de Bases de DadosInstituto Politécnico da Guarda, Escola Superior de Tecnologia e Gestão, 2004/2005
43Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
Níveis de bloqueio (dados)
• Bloqueio de tabela - aplica-se a toda a tabela;
• Bloqueio de registo - aplica-se apenas a um registo de uma dada tabela.
44Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
Tipos de bloqueio implícito(caso do Oracle)
• Exclusivo (X)
• Exclusivo de registos (RX)
Permite consultas ao recurso bloqueado (registo ou tabela) mas não permite qualquer outro acção sobre o recurso;
Permite o acesso concorrente a uma tabela impedindo outros utilizadores de bloquearem toda a tabela para acesso exclusivo;Vários utilizadores podem bloquear registos individuais na tabela e efectuar e confirmar alterações simultaneamente;Registos bloqueados podem ser consultados mas só poderão ser alterados quando os bloqueios forem libertados
Transacções e controle de concorrência 23
Tópicos Avançados de Bases de DadosInstituto Politécnico da Guarda, Escola Superior de Tecnologia e Gestão, 2004/2005
45Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
Aquisição implícita de bloqueio(Oracle)
SELECT
INSERT
UPDATE
DELETE
DDL
X
X
X
—
Acção doutilizador Registo
RX
RX
RX
X
TabelaNível de bloqueio
Sem bloqueio
46Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
Exemplo de bloqueios implícitos
Nome Num DeptFunc
João 1002 10Ana 986 10
Manuel 1023 40Maria 878 30
Arnaldo 1068 10
SAL25434512530023468745287398675
UPDATE FUNCSET NOME = ‘Tiago’WHERE NUM = 986;
UPDATE FUNCSET SAL = SAL * 1.05WHERE NUM = 1068;
Utilizador A Utilizador B
Bloqueio exclusivo
do registo (X)
Bloqueio exclusivodo registo (X)
Ambos utilizadores adquirem bloqueio exclusivo de registos (RX) sobre a tabela
Transacções e controle de concorrência 24
Tópicos Avançados de Bases de DadosInstituto Politécnico da Guarda, Escola Superior de Tecnologia e Gestão, 2004/2005
47Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
Bloqueio explícito
• Um utilizador pode adquirir explicitamente um bloqueio quando:
– Pretende consultar dados em várias tabelas e quer ter a certeza de obter uma visão consistente dos dados nas tabelas;
– Uma transacção necessita alterar dados com base em outros dados que não podem ser alterados até a transacção estar concluída.
48Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
Aquisição de bloqueios explícitos
Através das instruções SQL
SELECT ... FOR UPDATE OF
LOCK TABLE
Transacções e controle de concorrência 25
Tópicos Avançados de Bases de DadosInstituto Politécnico da Guarda, Escola Superior de Tecnologia e Gestão, 2004/2005
49Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
SELECT ... FOR UPDATE OF ...[NOWAIT]
• Utiliza-se quando:– está previsto actualizar um dado conjunto de registos. O
comando efectua uma consulta para identificar todos os registos a actualizar e, de seguida, bloqueia os registos seleccionados;
– é necessário bloquear um registo (ou registos) porque se vai fazer uma actualização para a qual é necessário garantir que esse registo não é entretanto alterado por outro utilizador.
• Os bloqueios adquiridos por SELECT ... FOR UPDATE são libertadosquando for efectuado um COMMIT ou um ROLBACK.
• A opção NOWAIT faz com que o SELECT termine, em vez de esperar, no caso de um dos registos seleccionados já ter sido bloqueado por outro utilizador.
50Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
LOCK Table
• Aquisição explícita de um bloqueio
• LOCK TABLE <nome da tabela> IN <tipo de bloqueio>
• Os tipos de bloqueio são:
– Exclusive
– Row Exclusive
– ...
– ...
Transacções e controle de concorrência 26
Tópicos Avançados de Bases de DadosInstituto Politécnico da Guarda, Escola Superior de Tecnologia e Gestão, 2004/2005
51Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
Impasses (dead locks)
• Podem gerar-se situações de impasse quando dois ou mais utilizadores tentam aceder aos mesmos dados e cada utilizador fica à espera dos objectos detidos pelo outro utilizador.
UPDATE FUNC SET NOME = ‘Tiago’WHERE NUM = 986;
UPDATE FUNC SET NOME = ‘Raul’WHERE NUM = 1002;
Transacção AUPDATE FUNC SET SAL = SAL * 1.05’WHERE NUM = 1002;
UPDATE FUNC SET SAL = SAL * 1.05WHERE NUM = 986;
Transacção B
Não pode continuar porqueo registo do empregado deNUM = 1002 está bloqueado pela transacção B
Não pode continuar porqueo registo do empregado deNUM = 986 está bloqueado pela transacção A
52Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
Como lidar com impasses
• Prevenir os impasses– Use-se em sistemas em que a probabilidade de surgirem
impasses é muito elevada.
• Detectar os impasses e recuperar dessa situação– Use-se em sistemas em que a probabilidade de surgirem
impasses é baixa.
Transacções e controle de concorrência 27
Tópicos Avançados de Bases de DadosInstituto Politécnico da Guarda, Escola Superior de Tecnologia e Gestão, 2004/2005
53Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
Prevenir impasses
• Bloquear explicitamente, no início da transacção, todos os recursos que se pretende vir a alterar:
– Afecta a utilização partilhada dos recursos;
– Pode deixar transacções à espera durante periodos muito longos.
• Impor uma ordem para o bloqueio dos recursos e garantir que todas as transacções seguem essa ordem
– Pode ser de difícil concretização para certas aplicações.
• Há técnicas mais sofisticadas para prevenir impasses baseadas em timestamps (e.g., wait-die e wound-die )
54Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
Detectar impasses
• Grafo de esperas (wait-for graph)
– O SGBD mantém um grafo dirigido que representa as transacções que estão à espera que recursos bloqueados por outras transacções sejam libertados.
• Este grafo é analisado periodicamente pelo sistema para detectar situações de impasse.
Transacções e controle de concorrência 28
Tópicos Avançados de Bases de DadosInstituto Politécnico da Guarda, Escola Superior de Tecnologia e Gestão, 2004/2005
55Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
Grafo de esperas (wait-for graph)
• Cada nó representa uma transacção;
• Cada arco indica que a transacção representada pelo nó de partida está à espera que seja libertado um bloqueio pela transacção representada pelo nó de chegada.
Exemplo:
T1
T2
T3
- A transacção T1 está à espera da transacção T2
- A transacção T1 está à espera da transacção T3
- A transacção T2 está à espera da transacção T4
T4
56Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
Manutenção do grafo de esperas
O SGBD vai mantendo actualizado o estado do grafo:
• Sempre que uma transacção é iniciada o sistema acrescenta um novo nó ao grafo;
• Sempre que uma transacção fica à espera que um recurso seja libertado por outra transacção o sistema acrescenta um arco entre os nós em causa;
• Sempre que um recurso é libertado o grafo é actualizado, se necessário:
– Se o recurso foi libertado porque a transacção que o bloqueava terminou, então o nó correspondente a essa transacção é eliminado e com ele todos os arcos que chegavam a esse nó;
– Se o recurso foi libertado porque a transacção que o bloqueava fez rollback to savepoint, então, se isso implicar o fim da espera de uma transacção, o arco correspondente é retirado do grafo.
Transacções e controle de concorrência 29
Tópicos Avançados de Bases de DadosInstituto Politécnico da Guarda, Escola Superior de Tecnologia e Gestão, 2004/2005
57Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
Detectar impasses através do grafo de esperas
Existe um impasse sempre que o grafo de esperas contém um ciclo.
Exemplo:
T1
T2
T3
T4está à espera de
está
à e
sper
a de está à espera de
58Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
Quando deve o sistema examinar o grafo?
• Sempre que o bloqueio de um recurso não pode ser satisfeito de imediato, se a probabilidade de se gerarem impasses é elevada;
• Periodicamente, se a probabilidade de se gerarem impasses é reduzida. O periodo deve estar relacionado com a probabilidade de surgirem impasses e o número de transacções potencialmente afectadas.
Transacções e controle de concorrência 30
Tópicos Avançados de Bases de DadosInstituto Politécnico da Guarda, Escola Superior de Tecnologia e Gestão, 2004/2005
59Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG
Hen
rique
Mad
eira
, DEI
-FCT
UC
, 200
1
O que acontece quando é detectado um impasse?
• É necessário fazer rollback a um comando para quebrar o impasse.
• Na prática, é normalmente necessário fazer o rollback de uma transacção de modo a recuperar do impasse;
• Critérios na escolha da vítima (minimizar os custos):– Escolher a transacção que tenha alterado menos dados até então;– Escolher a transacção que tenha mais dados ainda a manipular até
terminar;– Escolher a transacção que tenha savepoints de tal modo que o
rollback para um savepoint possa quebrar o impasse e minimize a perda de dados.