Transcript
Page 1: Tópicos Avançados de Bases de Dadosjosefonseca/TABD/Transaccoes e... · – Revisão e complemento de conceitos básicos de bases de dados – Data Warehousing e OLAP Conceitos

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

Page 2: Tópicos Avançados de Bases de Dadosjosefonseca/TABD/Transaccoes e... · – Revisão e complemento de conceitos básicos de bases de dados – Data Warehousing e OLAP Conceitos

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?

Page 3: Tópicos Avançados de Bases de Dadosjosefonseca/TABD/Transaccoes e... · – Revisão e complemento de conceitos básicos de bases de dados – Data Warehousing e OLAP Conceitos

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

Page 4: Tópicos Avançados de Bases de Dadosjosefonseca/TABD/Transaccoes e... · – Revisão e complemento de conceitos básicos de bases de dados – Data Warehousing e OLAP Conceitos

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)

Page 5: Tópicos Avançados de Bases de Dadosjosefonseca/TABD/Transaccoes e... · – Revisão e complemento de conceitos básicos de bases de dados – Data Warehousing e OLAP Conceitos

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).

Page 6: Tópicos Avançados de Bases de Dadosjosefonseca/TABD/Transaccoes e... · – Revisão e complemento de conceitos básicos de bases de dados – Data Warehousing e OLAP Conceitos

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.

Page 7: Tópicos Avançados de Bases de Dadosjosefonseca/TABD/Transaccoes e... · – Revisão e complemento de conceitos básicos de bases de dados – Data Warehousing e OLAP Conceitos

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

Page 8: Tópicos Avançados de Bases de Dadosjosefonseca/TABD/Transaccoes e... · – Revisão e complemento de conceitos básicos de bases de dados – Data Warehousing e OLAP Conceitos

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.

Page 9: Tópicos Avançados de Bases de Dadosjosefonseca/TABD/Transaccoes e... · – Revisão e complemento de conceitos básicos de bases de dados – Data Warehousing e OLAP Conceitos

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.

Page 10: Tópicos Avançados de Bases de Dadosjosefonseca/TABD/Transaccoes e... · – Revisão e complemento de conceitos básicos de bases de dados – Data Warehousing e OLAP Conceitos

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.

Page 11: Tópicos Avançados de Bases de Dadosjosefonseca/TABD/Transaccoes e... · – Revisão e complemento de conceitos básicos de bases de dados – Data Warehousing e OLAP Conceitos

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.

Page 12: Tópicos Avançados de Bases de Dadosjosefonseca/TABD/Transaccoes e... · – Revisão e complemento de conceitos básicos de bases de dados – Data Warehousing e OLAP Conceitos

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).

Page 13: Tópicos Avançados de Bases de Dadosjosefonseca/TABD/Transaccoes e... · – Revisão e complemento de conceitos básicos de bases de dados – Data Warehousing e OLAP Conceitos

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

Page 14: Tópicos Avançados de Bases de Dadosjosefonseca/TABD/Transaccoes e... · – Revisão e complemento de conceitos básicos de bases de dados – Data Warehousing e OLAP Conceitos

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

Page 15: Tópicos Avançados de Bases de Dadosjosefonseca/TABD/Transaccoes e... · – Revisão e complemento de conceitos básicos de bases de dados – Data Warehousing e OLAP Conceitos

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

Page 16: Tópicos Avançados de Bases de Dadosjosefonseca/TABD/Transaccoes e... · – Revisão e complemento de conceitos básicos de bases de dados – Data Warehousing e OLAP Conceitos

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;

Page 17: Tópicos Avançados de Bases de Dadosjosefonseca/TABD/Transaccoes e... · – Revisão e complemento de conceitos básicos de bases de dados – Data Warehousing e OLAP Conceitos

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.

Page 18: Tópicos Avançados de Bases de Dadosjosefonseca/TABD/Transaccoes e... · – Revisão e complemento de conceitos básicos de bases de dados – Data Warehousing e OLAP Conceitos

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.

Page 19: Tópicos Avançados de Bases de Dadosjosefonseca/TABD/Transaccoes e... · – Revisão e complemento de conceitos básicos de bases de dados – Data Warehousing e OLAP Conceitos

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.

Page 20: Tópicos Avançados de Bases de Dadosjosefonseca/TABD/Transaccoes e... · – Revisão e complemento de conceitos básicos de bases de dados – Data Warehousing e OLAP Conceitos

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.

Page 21: Tópicos Avançados de Bases de Dadosjosefonseca/TABD/Transaccoes e... · – Revisão e complemento de conceitos básicos de bases de dados – Data Warehousing e OLAP Conceitos

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.

Page 22: Tópicos Avançados de Bases de Dadosjosefonseca/TABD/Transaccoes e... · – Revisão e complemento de conceitos básicos de bases de dados – Data Warehousing e OLAP Conceitos

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

Page 23: Tópicos Avançados de Bases de Dadosjosefonseca/TABD/Transaccoes e... · – Revisão e complemento de conceitos básicos de bases de dados – Data Warehousing e OLAP Conceitos

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

Page 24: Tópicos Avançados de Bases de Dadosjosefonseca/TABD/Transaccoes e... · – Revisão e complemento de conceitos básicos de bases de dados – Data Warehousing e OLAP Conceitos

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

Page 25: Tópicos Avançados de Bases de Dadosjosefonseca/TABD/Transaccoes e... · – Revisão e complemento de conceitos básicos de bases de dados – Data Warehousing e OLAP Conceitos

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

– ...

– ...

Page 26: Tópicos Avançados de Bases de Dadosjosefonseca/TABD/Transaccoes e... · – Revisão e complemento de conceitos básicos de bases de dados – Data Warehousing e OLAP Conceitos

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.

Page 27: Tópicos Avançados de Bases de Dadosjosefonseca/TABD/Transaccoes e... · – Revisão e complemento de conceitos básicos de bases de dados – Data Warehousing e OLAP Conceitos

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.

Page 28: Tópicos Avançados de Bases de Dadosjosefonseca/TABD/Transaccoes e... · – Revisão e complemento de conceitos básicos de bases de dados – Data Warehousing e OLAP Conceitos

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.

Page 29: Tópicos Avançados de Bases de Dadosjosefonseca/TABD/Transaccoes e... · – Revisão e complemento de conceitos básicos de bases de dados – Data Warehousing e OLAP Conceitos

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.

Page 30: Tópicos Avançados de Bases de Dadosjosefonseca/TABD/Transaccoes e... · – Revisão e complemento de conceitos básicos de bases de dados – Data Warehousing e OLAP Conceitos

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.


Top Related