Uma transacção pode ser definida como um grupo de tarefas. Uma única tarefa é a unidade mínima de processamento que não pode ser dividida mais.
Vamos tomar um exemplo de uma transacção simples. Suponha-se que um funcionário bancário transfere Rs 500 da conta de A para a conta de B. Esta transacção muito simples e pequena envolve várias tarefas de baixo nível.
Conta de A
Open_Account(A)Old_Balance = A.balanceNew_Balance = Old_Balance - 500A.balance = New_BalanceClose_Account(A)
Conta de B
Open_Account(B)Old_Balance = B.balanceNew_Balance = Old_Balance + 500B.balance = New_BalanceClose_Account(B)
Propriedades de ACID
Uma transacção é uma unidade muito pequena de um programa e pode conter várias tarefas de baixo nível. Uma transacção num sistema de base de dados deve manter Atomicidade, Consistência, Isolamento e Durabilidade – vulgarmente conhecidas como propriedades ACID – a fim de assegurar a exactidão, integridade e integridade dos dados.
- p>Atomicidade – Esta propriedade declara que uma transacção deve ser tratada como uma unidade atómica, ou seja, ou todas as suas operações são executadas ou nenhuma. Não deve haver nenhum estado numa base de dados onde uma transacção seja parcialmente concluída. Os estados devem ser definidos antes da execução da transacção ou após a execução/aborto/falha da transacção.
- p>p>Consistência – A base de dados deve permanecer num estado consistente após qualquer transacção. Nenhuma transacção deve ter qualquer efeito adverso sobre os dados que residem na base de dados. Se a base de dados estava num estado consistente antes da execução de uma transacção, deve permanecer consistente também após a execução da transacção.
-
Durabilidade – A base de dados deve ser suficientemente durável para manter todas as suas últimas actualizações, mesmo que o sistema falhe ou reinicie. Se uma transacção actualiza um pedaço de dados numa base de dados e se compromete, então a base de dados conservará os dados modificados. Se uma transacção se compromete mas o sistema falha antes de os dados poderem ser escritos no disco, então esses dados serão actualizados assim que o sistema voltar a funcionar.
- p>Isolation – Num sistema de base de dados onde mais do que uma transacção está a ser executada simultaneamente e em paralelo, a propriedade de isolamento declara que todas as transacções serão executadas e executadas como se fosse a única transacção no sistema. Nenhuma transacção afectará a existência de qualquer outra transacção.
Serialização
Quando múltiplas transacções estão a ser executadas pelo sistema operativo num ambiente de multiprogramação, há possibilidades de as instruções de uma transacção serem intercaladas com alguma outra transacção.
-
Schedule – Uma sequência cronológica de execução de uma transacção chama-se agendamento. Uma agenda pode ter muitas transacções, cada uma delas compreendendo um número de instruções/tarefas.
-
Serial Schedule – É uma agenda na qual as transacções são alinhadas de tal forma que uma transacção é executada primeiro. Quando a primeira transacção completa o seu ciclo, então a transacção seguinte é executada. As transacções são ordenadas uma após a outra. Este tipo de cronograma é chamado cronograma de série, uma vez que as transacções são executadas em série.
Num ambiente de multi-transacções, os cronogramas de série são considerados como uma referência. A sequência de execução de uma instrução numa transacção não pode ser alterada, mas duas transacções podem ter as suas instruções executadas de forma aleatória. Esta execução não prejudica se duas transacções forem mutuamente independentes e funcionarem em segmentos de dados diferentes; mas no caso destas duas transacções funcionarem com os mesmos dados, então os resultados podem variar. Este resultado sempre variável pode levar a base de dados a um estado inconsistente.
Para resolver este problema, permitimos a execução paralela de um calendário de transacções, se as suas transacções forem serializáveis ou tiverem alguma relação de equivalência entre elas.
Equivalência de horários
Um horário de equivalência pode ser dos seguintes tipos –
Equivalência de resultados
Se dois horários produzirem o mesmo resultado após a execução, diz-se que são equivalentes ao resultado. Podem produzir o mesmo resultado para algum valor e resultados diferentes para outro conjunto de valores. É por isso que esta equivalência não é geralmente considerada significativa.
Ver Equivalência
Duas programações seriam ver a equivalência se as transacções em ambas as programações realizassem acções semelhantes de forma semelhante.
Por exemplo –
-
Se T lê os dados iniciais em S1, então também lê os dados iniciais em S2.
- p> Se T lê o valor escrito por J em S1, então também lê o valor escrito por J em S2.
- p> Se T realiza a escrita final sobre o valor dos dados em S1, então também realiza a escrita final sobre o valor dos dados em S2.
Equivalência de conflitos
dois horários seriam conflitantes se tivessem as seguintes propriedades –
- >li>Bambos pertencem a transacções separadas.
- Bambos acedem ao mesmo item de dados.
- No mínimo um deles é operação de “escrita”.
Duas agendas com múltiplas transacções com operações conflituosas são ditas equivalentes a conflitos se e só se –
- Bambos as agendas contêm o mesmo conjunto de Transacções.
- A ordem de funcionamento dos pares conflituosos é mantida em ambas as agendas.
Nota – Ver as agendas equivalentes são vistas serializáveis e as agendas equivalentes a conflitos são serializáveis. Todos os horários serializáveis de conflito são também visíveis serializáveis.
Estados de Transacções
Uma transacção numa base de dados pode estar num dos seguintes estados –
ul>
Parcialmente comprometida – Quando uma transacção executa a sua operação final, diz-se que está num estado parcialmente comprometida.
Failed – Diz-se que uma transacção está num estado falhado se alguma das verificações feitas pelo sistema de recuperação da base de dados falhar. Uma transacção falhada já não pode prosseguir.
Aborted – Se alguma das verificações falhar e a transacção tiver atingido um estado falhado, então o gestor de recuperação volta a registar todas as suas operações de escrita na base de dados para trazer a base de dados de volta ao seu estado original onde se encontrava antes da execução da transacção. As transacções neste estado são chamadas abortadas. O módulo de recuperação da base de dados pode seleccionar uma das duas operações após uma transacção abortada –
- Reiniciar a transacção
- Mortar a transacção