Banco de dados - transação e concorrência
Introdução
Neste texto serão estudados os conceitos de transações, bloqueios, deadlock e ACID, destacando suas funcionalidades, aplicações, definindo os seus tipos e citando alguns exemplos.
Transações e níveis isolamento.
Em sistemas de banco de dados multiusuários, o processamento de transações e um fato imprescindível para o bom funcionamento do sistema e integridade dos dados, pois ele permite o acesso simultâneo e concorrente de vários usuários. Sistemas multiusuários são fundamentados na capacidade de realização de vários processos ao mesmo tempo. Com essa técnica se houver vários programas rodando, os comandos que eles enviam ao sistema para execução são fragmentados em processo compostos por conjuntos de comandos.
Transação é um conceito fundamental de todo sistema de banco de dados e pode ser definida como uma unidade logica e indivisível de processamento de um banco de dados a qual possui diversas operações como inclusão alteração exclusão etc. O ponto essencial da transação é englobar vários passos em uma única operação de tudo ou nada.
A maneira de especificar o limite de uma transação e por meio de comandos explícitos que indicam início (BEGIN TRANSACTION) e o fim da transação (END TRANSACTION).
Sem gerenciamento de transações muitos problemas podem acabar ocorrendo como perda de atualização de dados, leitura suja de dados e agregação incorreta. O primeiro problema pode acontecer quando duas transações que acessam os mesmos valores incorretos num dos itens
O segundo problema surge em decorrência de alguma falha na transação no momento em que se estava sendo efetuada uma atualização nos dados.
O terceiro problema envolve a execução de comandos/funções de agregação (soma, contagem, media, etc).
Quando o SGBD executa uma transação, devem-se fazer três verificações.
Todas as operações que formam a transação devem ser completadas com sucesso, para que só