DBMS - Transação

Uma transação pode ser definida como um grupo de tarefas. Uma única tarefa é a unidade mínima de processamento que não pode ser mais dividida.

Vamos dar um exemplo de uma transação simples. Suponha que um funcionário do banco transfira Rs 500 da conta de A para a conta de B. Essa transação muito simples e pequena envolve várias tarefas de baixo nível.

A’s Account

Open_Account(A)
Old_Balance = A.balance
New_Balance = Old_Balance - 500
A.balance = New_Balance
Close_Account(A)

B’s Account

Open_Account(B)
Old_Balance = B.balance
New_Balance = Old_Balance + 500
B.balance = New_Balance
Close_Account(B)

Propriedades ACID

Uma transação é uma unidade muito pequena de um programa e pode conter várias tarefas de baixo nível. Uma transação em um sistema de banco de dados deve manterAtomicidade, Consistência, Isolação, e Durabilidade - comumente conhecida como propriedades ACID - para garantir a precisão, integridade e integridade dos dados.

  • Atomicity- Esta propriedade indica que uma transação deve ser tratada como uma unidade atômica, ou seja, todas as suas operações são executadas ou nenhuma. Não deve haver nenhum estado em um banco de dados em que uma transação seja deixada parcialmente concluída. Os estados devem ser definidos antes da execução da transação ou após a execução / aborto / falha da transação.

  • Consistency- O banco de dados deve permanecer em um estado consistente após qualquer transação. Nenhuma transação deve ter qualquer efeito adverso sobre os dados residentes no banco de dados. Se o banco de dados estava em um estado consistente antes da execução de uma transação, ele também deve permanecer consistente após a execução da transação.

  • Durability- O banco de dados deve ser durável o suficiente para conter todas as atualizações mais recentes, mesmo se o sistema falhar ou reiniciar. Se uma transação atualiza um bloco de dados em um banco de dados e confirma, o banco de dados manterá os dados modificados. Se uma transação for confirmada, mas o sistema falhar antes que os dados pudessem ser gravados no disco, esses dados serão atualizados assim que o sistema voltar a funcionar.

  • Isolation- Em um sistema de banco de dados onde mais de uma transação estão sendo executadas simultaneamente e em paralelo, a propriedade de isolamento afirma que todas as transações serão realizadas e executadas como se fosse a única transação no sistema. Nenhuma transação afetará a existência de qualquer outra transação.

Serializabilidade

Quando várias transações estão sendo executadas pelo sistema operacional em um ambiente de multiprogramação, há possibilidades de que as instruções de uma transação sejam intercaladas com alguma outra transação.

  • Schedule- Uma sequência de execução cronológica de uma transação é chamada de programação. Uma programação pode conter várias transações, cada uma composta por uma série de instruções / tarefas.

  • Serial Schedule- É uma programação em que as transações são alinhadas de forma que uma transação seja executada primeiro. Quando a primeira transação completa seu ciclo, a próxima transação é executada. As transações são ordenadas uma após a outra. Esse tipo de programação é chamado de programação serial, pois as transações são executadas de maneira serial.

Em um ambiente com várias transações, as programações em série são consideradas uma referência. A seqüência de execução de uma instrução em uma transação não pode ser alterada, mas duas transações podem ter suas instruções executadas de forma aleatória. Essa execução não causa danos se duas transações forem mutuamente independentes e trabalharem em diferentes segmentos de dados; mas, no caso de essas duas transações trabalharem nos mesmos dados, os resultados podem variar. Esse resultado sempre variável pode levar o banco de dados a um estado inconsistente.

Para resolver este problema, permitimos a execução paralela de uma programação de transações, se suas transações forem serializáveis ​​ou tiverem alguma relação de equivalência entre elas.

Cronogramas de equivalência

Um cronograma de equivalência pode ser dos seguintes tipos -

Equivalência de resultados

Se dois cronogramas produzem o mesmo resultado após a execução, eles são considerados equivalentes de resultado. Eles podem produzir o mesmo resultado para algum valor e resultados diferentes para outro conjunto de valores. É por isso que essa equivalência geralmente não é considerada significativa.

Ver Equivalência

Duas programações seriam vistas como equivalência se as transações em ambas as programações executassem ações semelhantes de maneira semelhante.

Por exemplo -

  • Se T lê os dados iniciais em S1, então também lê os dados iniciais em S2.

  • Se T lê o valor escrito por J em S1, então também lê o valor escrito por J em S2.

  • Se T realizar a gravação final no valor dos dados em S1, ele também realizará a gravação final no valor dos dados em S2.

Equivalência de conflito

Duas programações seriam conflitantes se tivessem as seguintes propriedades -

  • Ambos pertencem a transações separadas.
  • Ambos acessam o mesmo item de dados.
  • Pelo menos um deles é a operação de "gravação".

Duas programações com várias transações com operações conflitantes são consideradas conflitantes equivalentes se e somente se -

  • Ambas as programações contêm o mesmo conjunto de transações.
  • A ordem dos pares conflitantes de operação é mantida em ambas as programações.

Note- Exibir programações equivalentes são serializáveis ​​por exibição e programações equivalentes em conflito são serializáveis ​​por conflito. Todas as programações serializáveis ​​por conflito também podem ser visualizadas em série.

Estados de transações

Uma transação em um banco de dados pode estar em um dos seguintes estados -

  • Active- Neste estado, a transação está sendo executada. Este é o estado inicial de cada transação.

  • Partially Committed - Quando uma transação executa sua operação final, ela é considerada em um estado parcialmente confirmado.

  • Failed- Diz-se que uma transação está em um estado de falha se qualquer uma das verificações feitas pelo sistema de recuperação de banco de dados falhar. Uma transação com falha não pode mais prosseguir.

  • Aborted- Se alguma das verificações falhar e a transação atingir um estado de falha, o gerenciador de recuperação reverterá todas as suas operações de gravação no banco de dados para trazer o banco de dados de volta ao seu estado original onde estava antes da execução da transação. As transações nesse estado são chamadas de abortadas. O módulo de recuperação de banco de dados pode selecionar uma das duas operações após o cancelamento de uma transação -

    • Reinicie a transação
    • Mate a transação
  • Committed- Se uma transação executa todas as suas operações com sucesso, diz-se que foi confirmada. Todos os seus efeitos agora estão permanentemente estabelecidos no sistema de banco de dados.