Unidade I - Transações em Banco de Dados

Transações em Banco de Dados

Deinições

Unidade lógica de processamento em um SGBD, composta de uma ou mais operações. De forma abstrata e simplificada, uma transação pode ser encarada como um conjunto de operações de leitura e escrita de dados.

Uma transação é uma unidade da execução de programa que acessa e possivelmente atualiza vários itens de dados. Uma transação precisa ver um banco de dados consistente.

Durante a execução da transação, o banco de dados pode ser temporariamente inconsistente. Quando a transação é completada com sucesso (é confirmada), o banco de dados precisa ser consistente.

Problemas

Durante a execução da transação alguns problemas podem acontecer, é necessário tratar estas situações com o objetivo de manter o BD consistente.

Dois problemas principais para resolver:

Propriedades

Existem requisitos que sempre devem ser atendidos por uma transação.

– Atomicidade

– Consistência

– Isolamento

– Durabilidade ou Persistência

Atomicidade

– ou todas as operações da transação são efetivadas com sucesso no BD ou nenhuma delas se efetiva

– desfazer as ações de transações parcialmente executadas

Consistência

Isolamento

– T1 não deve sofrer interferências de outras transações executadas em forma de corrência.

Durabilidade

Durabilidade

– nenhuma falha posterior ocorrida no BD deve perder essas modificações

– refazer transações que executaram com sucesso em caso de falha no BD

Estados

O estado de uma transação é monitorado constantemente pelo SGBD. Tal estado representa a situação na qual se encontra a transação em um momento específico.

Estados possíveis de uma transação:

Ativa – O estado inicial; a transação permanece nesse estado enquanto está executando.

Parcialmente confirmada – Depois que a instrução final foi executada.

Com Falha – Depois da descoberta de que a execução normal não pode mais prosseguir.

Abortada – Depois que a transação foi revertida e o banco de dados foi restaurado ao seu estado anterior ao início da transação.

Duas opções após ter sido abortada:

- Reiniciar a transação; pode ser feito apenas se não houver qualquer erro lógico interno

- Excluir a transação – erro lógico interno

Confirmada ( Commited )– Após o término bem sucedido.

Execuções simultâneas (Concorrentes)

Várias transações podem ser executadas simultaneamente no sistema.

As vantagens são:

- Melhor utilização do processador e do disco, levando a um melhor throughput de transação: uma transação pode estar usando a CPU enquanto outra está lendo ou escrevendo no disco;

- Tempo de médio de resposta reduzido para transações: as transações curtas não precisam esperar atrás das longas.

Esquemas de controle de concorrência – mecanismos para obter isolamento; ou seja, para controlar a interação entre as transações concorrentes a fim de evitar que elas destruam a consistência do banco de dados.

Throughput: número de transações executadas em determinada quantidade de tempo.

Escalonamento

Sequências de instruções que especificam a ordem cronológica em que as instruções das transações concorrentes são executadas.

- Um escalonamento para um conjunto de transações precisa consistir em todas as instruções dessas transações.

- Precisam preservar a ordem em que as instruções aparecem em cada transação individual.

Uma transação executada com sucesso terá uma instrução commit como a última instrução.

Uma transação não finalizada com sucesso terá a instrução abort como a última instrução.

Serialização

Cada transação preserva a consistência do banco de dados.

Portanto, a execução serial de um conjunto de transações preserva a consistência do banco de dados.

Implementação

Um banco de dados precisa fornecer um mecanismo que garanta que todos os escalonamentos possíveis sejam seriais e recuperáveis.

Transações explícitas

Transações explícitas seguem o conceito formal de transações onde devemos indicar o seu início através do comando BEGIN TRANSACTION e o seu término através dos comandos COMMIT ou ROLLBACK.

Transações automáticas

Modo padrão de muitos SBGD’s. Cada instrução Transact-SQL individual é confirmada na conclusão. Você não precisa especificar nenhuma instrução para controlar transações.

Se uma instrução for concluída com sucesso, será confirmada; se encontrar qualquer erro, será revertida.

Transações implícitas

Transações implícitas são as que ocorrem automaticamente quando enviamos os comandos INSERT,UPDATE e DELETE para o BD. Essas transações são chamadas de implícitas pois não precisamos indicar o início através de um comando BEGIN TRANSACTION ou um térmico através do comando COMMIT ou ROLLBACK.

Comandos:

Insert, Update, Delete, Create, Drop, Alter, entre outros.

Finalizando Transações

COMMIT - A efetivação da transação, garante que a transação seja realizada com sucesso.

ROLLBACK – Falhas ou cancelamento, desfazem todas as modificações feitas na transação retornando os dados ao estado anterior ao início da transação.

CONCLUÍDA: É o estado final de toda e qualquer transação. Nesse estado, a transação deixa de ser executada e as informações armazenadas temporariamente são descartadas.

Classificação das Falhas

- Ações executadas durante a operação normal do sistema

- Ações executadas pos‐falha.

                                                                                                                       Silberschatz (1999).