• 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

“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

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 é

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

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

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 à