tópicos avançados de bases de dadosjosefonseca/tabd/transaccoes e... · – revisão e...

30
Transacções e controle de concorrência 1 Tópicos Avançados de Bases de Dados Instituto Politécnico da Guarda, Escola Superior de Tecnologia e Gestão, 2004/2005 1 Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG Henrique Madeira, DEI-FCTUC, 2001 Tópicos Avançados de Bases de Dados Henrique Madeira 2004/2005 2 Tópicos Avançados de Bases de Dados, Henrique Madeira, 2004/2005 Instituto Politécnico da Guarda, ESTG Henrique Madeira, DEI-FCTUC, 2001 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

Upload: others

Post on 18-Jul-2020

0 views

Category:

Documents


0 download

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.