1 / 48

Profa_samaris@yahoo.br

Administração e Gerenciamento de Banco de Dados Transação. Profa_samaris@yahoo.com.br. Transação. Transação é um bloco composto de uma unidade lógica de trabalho, ou seja, todas as instruções que compõem o bloco são efetivadas ou nenhuma delas é efetivada.

amara
Download Presentation

Profa_samaris@yahoo.br

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Administração e Gerenciamento de Banco de Dados Transação Profa_samaris@yahoo.com.br

  2. Transação Transação é um bloco composto de uma unidade lógica de trabalho, ou seja, todas as instruções que compõem o bloco são efetivadas ou nenhuma delas é efetivada. É um conjunto de procedimentos executados num banco de dados, que para o usuário é visto como uma única ação. Do ponto de vista do SGBD, uma transação é uma sequência de operações que são tratadas como um bloco único e indivisível (atômico) no que se refere à sua recuperação. Esse conceito garante: consistência e integridade dos dados.

  3. CATEGORIA SQL TPL Categoria básica: DML TPL: Linguagem de Processamento de Transações • Permite agrupar diversas operações em uma só. • Se uma operação falhar, as demais são canceladas. Principais Comandos: • BEGIN - início • COMMIT - final • ROLLBACK - desfaz a transação corrente Aumenta a velocidade! Transações se dão sem acesso ao disco para atualizar o banco de dados (update). As mudanças são armazenadas na memória, até o Commit, quando são gravadas. Assim, só há acesso ao disco uma vez.

  4. Código SQL BEGIN TRANSACTION UPDATE CONTA A; UPDATE CONTA B; IF TRANSAÇÃO OK THEN COMMIT; ELSE ROLLBACK; END IF;

  5. Término da Transação É indicado pelos comando: Commit: Termina com sucesso uma a transação. Rollback: Termina uma transação indicando que houve um erro. Se uma transação terminar com commit, todas as modificações realizadas dentro dela, serão efetivadas. Se uma transação terminar com rollback, todas as modificações realizadas dentro dela, serão desfeitas. O banco de dados ficará no mesmo estado que estava antes da transação ser iniciada. O comando rollback pode ser emitido explicitamente pelo programador ou automaticamente pelo SGBD quando ocorre um erro.

  6. Garantia de isolamento por transação COMMIT faz as atualizações efetuadas na transação se tornarem visíveis a outras transações e com garantia de não serem canceladas (durabilidade). Por outro lado, ROLLBACK faz com que todas as atualizações feitas durante a transação sejam canceladas (desfeitas) como se a transação nunca tivesse existido (sido executada).

  7. BEGIN ........ SAVEPOINT P1; ........ ROLLBACK TO SAVEPOINT P1; Transações Ao contrário da instrução COMMIT TRASACTION, a instrução ROLLBACK TRASACTION termina uma transação que por algum motivo não pode ser completada com sucesso. A instrução SAVE TRASACTION estabelece um ponto de salvamento na transação. Este ponto é marcado de forma que todas as atualizações seguintes podem ser canceladas sem o cancelamento de toda a transação.

  8. Propriedade das transações As transações devem ser executadas pelos SGBDs de maneira a evitar que problemas ocorram. As ações que compões uma transação devem possuir um conjunto de propriedades que é normalmente referido como propriedades ACID: • Atomicidade • Consistência • Isolamento • Durabilidade

  9. Atomicidade Também chamado de Princípio do "Tudo ou Nada". Evita que falha ocorridas, possam deixar o banco de dados inconsistentes. Uma transação não pode ser executada pela metade, ou é executada por inteiro ou é cancelada por inteiro, retornando ao estado anterior ao seu início.

  10. Consistência Uma transação só é executada, se o estado do banco de dados permanecer consistente após o seu término. Possui dois aspectos: A consistência do banco dados e a consistência da própria transação. Uma transação deve ser um programa correto e suas ações não devem resultar em violações das restrições de integridade definidas para o banco de dados.

  11. Isolamento • As transações são independentes. • Em execuções concorrentes, uma transação não pode gerar um estado inconsistente, com a intercalação de diversas transações relacionadas. • Significa que, mesmo no caso de transações executadas concorrentemente, o resultado final é igual ao obtido com a execução isolada de cada uma delas. A observância desta propriedade das transações pelos SGBDs impede a ocorrência dos problemas de acesso a dados.

  12. Durabilidade • A durabilidade garante por algum mecanismo a recuperação das informações perdidas. • Significa que os resultados de uma transação, caso ela seja • concluída com sucesso, devem ser persistentes. Mesmo se depois houver uma falha no sistema. Quando em um banco de dados ocorrer falha após a execução com sucesso de uma transação, é garantida a possibilidade de recuperação das informações e da integridade dos dados.

  13. Transações no SQL Server No SQL Server as transações funcionam com as instruções DML e também com as instruções DDL.

  14. Bloqueio • Compartilhado: permite que outras transações possam compartilhar os dados mas não possam ter bloqueio exclusivo. • Exclusivo: nenhuma outra transação poderá obter qualquer tipo de acesso. • Protocolo impõe a serialização: • bloqueio compartilhado sobre tudo que for lido, • bloqueio exclusivo sobre tudo que for atualizado • conservar todos os bloqueios até o fim da transação.

  15. Tipos de Comandos de SQL OS COMANDOS SQL SÃO DIVIDIDOS EM SEIS(6) CATEGORIAS: • DDLLINGUAGEM DE DEFINIÇÃO DE DADOS. CRIAR TABELAS = CREATE REESTRUTURAR = ALTER EXCLUIR TABELA = DROP. • DML  LINGUAGEM DE MANIPULAÇÃO DE DADOS. ACRESCENTA OU REMOVE LINHAS INTEIRAS = INSERT E DELETE. ALTERA O VALOR DE COLUNAS ESPECÍFICAS = UPDATE SELECIONAR LINHAS ESPECÍFICAS = SELECT

  16. Tipos de Comandos de SQL • DCL LINGUAGEM DE CONTROLE DE DADOS. PERMITE O CONTROLE DE ACESSO AO BANCO DE DADOS. GRANT (dá privilégios) e REVOKE (revoga privilégios) • DQL  LINGUAGEM DE CONSULTA DE DADOS. PRINCIPAL FOCO PARA O USUÁRIO DE BD, PARA COMPOR CONSULTAS. SELECT (FROM, WHERE) com operadores lógicos (AND, OR, NOT) com operadores de comparação (<, >, <=, >=, LIKE, BETWEEN) com funções de soma (AVG, COUNT, SUM, MIN, MAX)

  17. Tipos de Comandos de SQL • DTL - Linguagem de Transação de Dados (TPL da DML) • CCL LINGUAGEM DE CONTROLE DE CURSOR. PERMITE SELECIONAR UMA ÚNICA LINHA DE UM RECORDSET PARA PROCESSAMENTO. UPDATE WHERE CURRENT.

  18. Serialização Exigência que qualquer escala produzida pelo processamento concorrente de um conjunto de transações tenha um efeito equivalente a uma escala produzida quando essas transações são executadas sequencialmente em alguma ordem, garantindo a serialização.

  19. Exemplo de transação Um cliente, em um PC ligado por modem, faz transferência de fundos de uma conta bancária para outra, em dois passos: (1) Saque(quantia, conta1) (2) Deposite(quantia, conta2) Se a ligação telefônica cair entre os passos (1) e (2) o dinheiro desaparece! Solução: passos (1) e (2) devem ocorrer como uma transação atômica (como se fosse um único passo); se a ligação telefonia cair entre os passos (1) e (2), os efeitos do passo (1) devem ser cancelados.

  20. Exemplo de Log x = 0; y = 0; BEGIN_TRANSACION x = x + 1; y = y + 2; x = y * y; END_TRANSACION Log x = 0/1 y = 0/2 x = 1/4

  21. Problema dos Leitores e Escritores Courtois et al., 1971 Problema/Exemplo Sistema de reserva de linhas aéreas com muitos acessos (processos) em competição, querendo ler e escrever. É aceitável que múltiplos acessos consigam ler a base de dados ao mesmo tempo, mas, se um acesso for atualizar (escrever) na base de dados, nenhum outro processo pode ter acesso ao dado da base de dados que será alterado, mesmo que seja somente para leitura.

  22. Leitores e Escritores Prever: . Consulta . Inclusão . Alteração . Exclusão

  23. Barbeiro Sonolento

  24. Barbeiro Sonolento comunicação interprocessos (IPC) Numa barbearia, há um barbeiro, uma cadeira de barbeiro e n cadeiras para eventuais clientes esperarem a vez. Quando não há clientes, o barbeiro senta-se na cadeira de barbeiro e cai no sono. Quando chega um cliente, ele se sentará (se houver cadeiras vazias) ou sairá da barbearia (se todas as cadeiras estiverem ocupadas). O problema é programar o barbeiro e os clientes sem cair em condições de disputa.

  25. Barbeiro Sonolento Exemplo Situações com várias filas, com uma mesa de atendimento, com diversos atendentes e um sistema computadorizado de chamadas em espera, atendendo a um número limitado de chamadas que chegam.

  26. Algoritmo dos Filósofos Famintos Dijkstra, 1965

  27. Filósofos Famintos Estados Espera Espera Pensa Filósofos Come Garfos Espera

  28. Filósofos Famintos (com 7 filósofos e 7 garfos) 1. Filósofos e garfos irão jantar. 2. Cada filósofo necessita de 2 garfos para comer. 3. Os filósofos podem estar em um destes três 3 estados: . PENSANDO, . ESPERANDO ou . COMENDO. 4. Se um filósofo está PENSANDO e quer passar para o estado COMENDO, ele tenta pegar 2 garfos. 5. Se ele não consegue, passa o estado ESPERANDO. 6. Se ele consegue passa para o estado COMENDO. 7. No estado FAMINTO, o filósofo permanece tentando pegar os garfos. Problemas? Pode ocorrer eterna espera ou um impasse.

  29. Filósofos Famintos Solução 1 1. Filósofo com fome pega o garfo da direita. 2. Pega o garfo da esquerda. 3. Come. 4. Libera garfo da direita e da esquerda. Problemas: Suponha que os filósofos vizinhos ao que resolveu comer estejam comendo. O filósofo não consegue executar o passo e fica em um impasse.

  30. Filósofos Famintos Impasse Impasse, Disputa ou Deadlock Estado em que um programa não pode executar a próxima instrução.

  31. Filósofos Famintos Solução 2 1. Filósofo com fome tenta pegar o garfo da direita. 2. Se está livre pega, senão aguarda por x tempo e repete o passo 2. 3. Tenta pegar o garfo da esquerda. 4. Se está livre pega, senão, libera o garfo da direita, aguarda por x tempo e repete o passo 2. 5. Come. 6. Libera garfo da direita e da esquerda. Problemas: Suponha que os 7 filósofos resolvam comer simultaneamente, haverá uma eterna espera de todos pelo garfo da esquerda.

  32. Filósofos Famintos Eterna Espera Inanição ou Starvation Estado em que um programa continuará a ser executado indefinidamente, sem conseguir progredir em seus passos.

  33. Filósofos Famintos Solução 3 1. Filósofo com fome tenta pegar o garfo da direita. 2. Se está livre pega, senão aguarda por um tempo aleatório e repete o passo 2. 3. Tenta pegar o garfo da esquerda. 4. Se está livre pega, senão, libera o garfo da direita, aguarda por um tempo aleatório e repete o passo 2. 5. Come. 6. Libera garfo da direita e da esquerda. Problemas: Probabilidade do processo continuar intertravado é muito pequena. Utilizado na prática na rede local Ethernet quando há colisão de pacotes. Contudo, não funcionaria, por exemplo, no controle de segurança de uma usina nuclear.

  34. Filósofos Famintos Solução 4 Utilização de semáforos: Filósofo i só come se semáforo i-1 e i+1 estiverem liberados. Exercício: Elabore o algoritmo desta solução.

  35. Problemas Clássicos de IPC Filósofos Famintos acesso exclusivo a um número limitado de recursos Leitores e Escritores acesso a base de dados Barbeiro Sonolento comunicação interprocessos (IPC)

  36. Exercício Deadlock. • Considere o seguinte conjunto de transações e suas respectivas instruções. Estas transações • entram em deadlock? Justifique. Usuário X e S. Transação T1 e T2. Registro A e B.

  37. Exercício Deadlock. • Considere o seguinte conjunto de transações e suas respectivas instruções. Estas transações • entram em deadlock? Justifique. Usuário X e S. Transação T1 e T2. Registro A e B. Sim, pois T1 solicita bloqueio exclusivo sobre o item B (que já está bloqueado em modo conflitante por T2) e precisa esperar; e T2 solicita bloqueio exclusivo sobre o item A (que já está bloqueado em modo conflitante por T1) e precisa esperar.

  38. GRAUS DE ISOLAMENTO SERIALIZABLE: PERMITE APENAS ESCALAS SERIALIZAVEIS SEREM EXECUTADAS. BLOQUEIA OS DADOS ATÉ O FINAL DA TRANSAÇÃO E IMPEDE A INSERÇÃO DE NOVAS TUPLAS NAS TABELAS EM USO. MODO MAIS RESTRITO, QUE RESULTA EM MENOR CONCORRÊNCIA. REPEATABLE READ: BLOQUEIA OS DADOS ATÉ O FINAL DA TRANSAÇÃO. GARANTE QUE OS VALORES DOS DADOS ACESSADOS NÃO SEJAM MODIFICADOS POR OUTRAS TRANSAÇÕES, MAS PERMITE INSERIR TUPLAS. READ COMMITED: OS VALORES DOS DADOS ACESSADOS NÃO PODEM SER MODIFICADOS POR OUTRAS TRANSAÇÕES. OPCAO DEFAULT. READ UNCOMMITED (outro usuário vai ler sem levar em conta a transação): NÃO USA BLOQUEIO. É O MODO MENOS RESTRITO. TEM MAIOR CONCORRÊNCIA E DEVE SER USADO QUANDO NÃO SE TEM NENHUM COMPROMISSO COM A CONSISTÊNCIA DO RESULTADO.

  39. Criar exemplo de uma ou mais transações com: • Ponto de salvamento • Bloqueio compartilhado • Bloqueio exclusivo • Timeout • Bloqueio de tabela • Bloqueio de registro • Commit e Rollback • Leitura multi-usuária sem bloqueio • Processamento simultâneo de duas transações • Não esqueça de marcar os desbloqueios!

More Related