• Nenhum resultado encontrado

009_Aula_19_Mai_2016 PrgBD

N/A
N/A
Protected

Academic year: 2021

Share "009_Aula_19_Mai_2016 PrgBD"

Copied!
27
0
0

Texto

(1)

Gerenciamento de Transações

Programação em Banco de Dados 19/05/2016 Prof. Mario Assis

Transaçõ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 à transação são confirmadas, ou são todas anuladas e é como se nunca tivessem existido.

INSERT INSERT DELETE UPDATE INSERT UPDATE UPDATE

TRANSAÇÃO TRANSAÇÃO Tempo COMMIT OU ROLLBACK COMMIT OU ROLLBACK

(2)

Gerenciamento de Transações

Propriedade das Transações - ACID

• Atomicidade – Trata o trabalho como parte indivisível (atômico). A transação deve ter todas as suas operações executadas em caso de

sucesso ou nenhum resultado de alguma operação refletido sobre a base de dados em caso de falha. Após o término de uma transação (commit ou

rollback), a base de dados não deve refletir resultados parciais da

transação.

• Consistência – a execução de uma transação leva a base de dados de um estado consistente para um novo estado consistente.

(3)

Gerenciamento de Transações

Programação em Banco de Dados 19/05/2016 Prof. Mario Assis

Propriedade das Transações - ACID

• Isolamento – Tudo se parece como se o trabalho estivesse isolado. O resultado de uma transação executada concorrentemente a outra deve ser o mesmo que o de sua execução de forma isolada. Operações

exteriores a uma dada transação jamais verão esta transação em estados intermediários.

• Durabilidade – Os efeitos de uma transação em caso de sucesso (commit) são permanentes mesmo em presença de falhas.

(4)

Gerenciamento de Transações

Atomicidade - Exemplo

• Transferência de R$ 10.000,00 entre duas contas bancárias: 1. Débito de R$ 10.000,00 da conta de origem,

2. Crédito de R$ 10.000,00 da conta de destino.

(5)

Gerenciamento de Transações

Programação em Banco de Dados 19/05/2016 Prof. Mario Assis

Transações e Instruções DML e DDL

• Transações DML podem conter qualquer número de instruções DML. • Transações DDL podem conter apenas uma instrução DDL.

INSERT INSERT UPDATE INSERT UPDATE UPDATE TRANSAÇÃO DML TRANSAÇÃO DML Tempo CREATE TABLE TRANSAÇÃO DDL Termina a transação corrente e inicia nova transação Termina a transação DDL e inicia nova transação

(6)

Gerenciamento de Transações

Processamento de Transações

• Uma transação começa quando é encontrado o primeiro comando DML logo após a conclusão da transação anterior.

• Uma transação termina quando:

- COMMIT transação é confirmada - ROLLBACK transação é abortada - Comando DDL transação é confirmada - Detecção de Erros transação é abortada - Saída da Seção SQL (exit) transação é confirmada - Saída da Seção SQL (abort) transação é abortada

(7)

Gerenciamento de Transações

Programação em Banco de Dados 19/05/2016 Prof. Mario Assis

Durante a Transação

• Enquanto as alterações introduzidas durante a transação corrente não forem confirmadas (Commit), estas alterações:

– são visíveis para o dono da transação;

– são invisíveis para as outras transações (estes vêem o estado após o último Commit);

(8)

Gerenciamento de Transações

Rollback Automático

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

(9)

Gerenciamento de Transações

Programação em Banco de Dados 19/05/2016 Prof. Mario Assis

Instruções SQL para Controle da Transação

• COMMIT • ROLLBACK

(10)

Gerenciamento de Transações

COMMIT

• Termina explicitamente transação corrente:

– Torna definitivas as alterações efetuadas durante a transação; – Libera os bloqueios da transação.

• Lembrar que a transação também pode terminar de uma maneira implícita (sem o comando Commit) quando:

– Antes de uma instrução DDL; – Depois de uma instrução DDL; – Ao sair da sessão SQL.

(11)

Gerenciamento de Transações

Programação em Banco de Dados 19/05/2016 Prof. Mario Assis

ROLLBACK

• ROLLBACK

– Termina a transação abortando-a;

– Desfaz todas as alterações efetuadas desde o início da transação; – Libera os bloqueios da transação.

(12)

Gerenciamento de Transações

Segmentos de Rollback

• Parte da base de dados onde são registradas as ações de uma transação que podem vir a serem desfeitas (rolled back) em certas circunstâncias; • Os segmentos de rollback contêm os valores antigos relativos a todas as

alterações efetuadas em dados durante uma transaçã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 acessada pelos usuários nem pelo administrador do banco de dados.

(13)

Gerenciamento de Transações

Programação em Banco de Dados 19/05/2016 Prof. Mario Assis

Segmentos de Rollback: utilização

• Os segmentos de rollback são utilizados para: – Assegurar a consistência de leituras;

– Efetuar o rollback de transações;

(14)

Gerenciamento de Transações

Consistência da leitura

• Garantir que cada usuário vê os dados conforme eles existiam no momento da última confirmação (commit).

• Só depois de confirmadas (pelo commit da transação corrente) é que as últimas alterações se tornam visíveis para todos os usuários.

(15)

Gerenciamento de Transações

Programação em Banco de Dados 19/05/2016 Prof. Mario Assis

Blocos de Dados Segmentos de Rollback Usuário A Transação T1 UPDATE MERCADORIA(valor) SET VALOR = 197 WHERE MERC_ID = 104 Novo valor do registro Identificação da alteração e valor antigo do registro

(16)

Gerenciamento de Transações

Blocos de Dados Usuário A Transação T1 UPDATE MERCADORIA(valor) SET VALOR = 197 WHERE MERC_ID = 104;

SELECT * FROM MERCADORIA;

Leituras durante a transação onde o usuário é o dono da transação

As leituras durante T1 são feitas sobre os dados alterados.

(17)

Gerenciamento de Transações

Programação em Banco de Dados 19/05/2016 Prof. Mario Assis

Blocos de Dados Segmentos de Rollback Usuário B Transação T2

SELECT * FROM MERCADORIA;

Leituras de outros usuários durante a transação

Outros usuários vêem os

dados como estavam no início da transação T1 do usuário A

(18)

Gerenciamento de Transações

Outros aspectos dos segmentos de rollback

• Sempre que começa uma transação é atribuído um segmento de rollback a essa transação.

• Cada segmento de rollback pode tratar mais do que uma transação. • Durante a transação, para cada alteração efetuada é guardado (entre

outras coisas) o valor antigo do registro no segmento de rollback correspondente.

• Em caso de necessidade são atribuídos novos segmentos de rollbck à transação.

(19)

Gerenciamento de Transações

Programação em Banco de Dados 19/05/2016 Prof. Mario Assis

Segmentos de rollback: commit

• Quando uma transação se encerra por commit a informação de rollback é liberada;

• Contudo, permanecerá no segmento de rollback de modo a fornecer uma visão consistente dos dados, no caso de haver consultas (de outros

usuários) 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

(20)

Gerenciamento de Transações

Segmentos de rollback: rollback

• Todas as alterações efetuadas durante a transação são desfeitas usando a informação de rollback armazenada no(s) segmento(s) correspondente(s);

(21)

Gerenciamento de Transações

Programação em Banco de Dados 19/05/2016 Prof. Mario Assis

Concorrência e consistência

• Necessidade de bloqueios

• Sempre que um usuário tenta introduzir alterações na base de dados (acessos de escrita);

• Nunca são necessários bloqueios quando o acesso à base de dados é de leitura;

– Os acessos de leitura nunca bloqueiam os acessos de escrita; – Os acessos de escrita nunca bloqueiam os acessos de leitura; • Só acessos de escrita podem bloquear outros acessos de escrita.

(22)

Gerenciamento de Transações

Bloqueios: idéia básica

• Durante uma transação, todos os registros (tabelas) alterados são

automaticamente bloqueados de modo a impedir que outras transações os possam alterar simultaneamente;

• Se uma transação tentar alterar um objeto previamente bloqueado por outra transação ficará suspensa em lista de espera até que esse objeto seja liberado;

• No final de uma transação todos os objetos bloqueados pelas instruções dessa transação são liberados.

(23)

Gerenciamento de Transações

Programação em Banco de Dados 19/05/2016 Prof. Mario Assis

Tipos de Bloqueios

• Bloqueio do dicionário de dados:

– Permite controlar o acesso à definição de objetos na base de dados (ex. 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/registros que estão sendo alterados por um usuário;

• Um usuário pode adquirir explicitamente um bloqueio numa tabela da base de dados.

(24)

Gerenciamento de Transações

Níveis de bloqueio (dados)

• Bloqueio de tabela - aplica-se a toda a tabela;

• Bloqueio de registro - aplica-se apenas a um registro de uma determinada tabela.

(25)

Gerenciamento de Transações

Programação em Banco de Dados 19/05/2016 Prof. Mario Assis

Bloqueio explícito

• Um usuário 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 transação necessita alterar dados com base em outros dados que não podem ser alterados até a transação estar concluída.

(26)

Gerenciamento de Transações

Aquisição de bloqueios explícitos

• Através das instruções SQL SELECT ... FOR UPDATE OF LOCK TABLE

(27)

Gerenciamento de Transações

Programação em Banco de Dados 19/05/2016 Prof. Mario Assis

Impasses (deadlock)

• Podem gerar-se situações de impasse quando dois ou mais usuários tentam acessar aos mesmos dados e cada usuário fica à espera dos objetos detidos pelo outro usuário.

• Para maior compreensão dos alunos, em sala de aula foi reproduzido um deadlock.

Referências

Documentos relacionados

Se a Mangueira expandiu seu domínio na área do samba para ser sinônimo de melhor projeto social do País, citada como exemplo para o mundo pela Organização das Nações Unidas,

Por isso, o objetivo desta comunicação foi mostrar que a inserção dos dois “caminhos para pensar” num contexto predicativo não só não é legitimada pelo texto, como

De fato, a aplicação das propriedades da regra variável aos estudos lingüísticos além da fonologia não constitui assunto tranqüilo, seja porque a variável passa a ser

Arlindo Gomes Pardini Júnior recebeu uma homenagem pelos seus 50 anos de atuação na área de cirurgia da mão, durante o curso anual da Regional de Minas Gerais da SBCM, o IV

Deus não vai perguntar quantas pessoas você atraiu para a igreja.... mas vai perguntar como você influenciou o Mundo à

Se a Espanha e os Estados Unidos começam a dar os pri- meiros passos na legislação es- pecífica para aparelhos voa- dores não tripulados (e em Londres, por exemplo, não é

“E não somente isso, mas também nos regozijamos em Deus por nosso Senhor Jesus Cristo, pelo qual agora recebemos a expiação.” Ó, irmãos e irmãs, a conversão faz

O diretor da Agência Nacional de Energia Elétrica (Aneel), Edvaldo Santana, disse ontem que o atual cenário de turbulências no setor elétrico “está caminhando para