Você está na página 1de 5

Aula 04 – Transações

1) Conceito de Transações

Transações (unidades lógicas de trabalho) é um programa em execução ou um processo que


inclui um ou mais acessos ao banco de dados, como fazer a leitura de dados ou inserir, excluir e
atualizar dados do banco.

2) Propriedades ACID

a) Atomicidade: significa que uma transação é uma unidade de processamento atômica que deve
ser executada integralmente até o fim ou não deve ser executada de maneira alguma.

Se tudo ocorrer bem, as operações de gravação de uma transação devem ser confirmadas
(COMMIT); caso ocorra alguma falha, as operações de gravação de uma transação devem ser
desfeitas (ROLLBACK)

Responsável: Subsistema de Recuperação

b) Consistência: significa que a execução de uma transação deve levar o banco de dados de um
estado consistente a outro estado consistente.

Responsável: Programador ou Módulo de Restrição de Integridade

c) Isolamento: significa que uma transação deve parecer executar de forma independente das
demais, mesmo que diversas transações estejam sendo executadas concorrentemente.

Responsável: Subsistema de Controle de Concorrência

d) Durabilidade: significa que os efeitos de uma transação devem persistir no banco de dados
mesmo em caso de quedas de energia, travamentos ou erros.

Responsável: Subsistema de Recuperação + Backup + Log de Transação.

3) Gerenciamento de Transações (Fluxo)

Operações:
Begin_Transaction: é o início da execução de uma transação (limite inicial)

Read/Write: especifica operações de leitura ou escrita de itens do BD.

End_Transaction: é o termino da operação (limite final)

Commit_Transaction: sinaliza o final com sucesso de uma transação de modo que as


atualizações executadas possam ser efetivadas pelo BD.

Rollback (Abort): sinaliza que a transação terminou sem sucesso e o que foi executado deve ser
desfeito.

Estados de uma Transação:

Ativa: poderá emitir operações de read e write.

Parcialmente efetivada: alguns protocolos de restauração precisam garantir que uma falha de
sistema não impossibilite a gravação permanente nos log.

Efetivada (comitted state): atendeu todas as verificações

Falha: se uma das verificações falhar ou a transação for interrompida no estado ativo, a ela
deverá ser revertida e desfazer as operações de write.

Encerrada: quando a transação deixa o sistema.

O Log no Sistema (Journal):

É utilizado para permitir recuperação de falhas de transações.

Registra todas as operações que afetam valores de itens do BD.

É guardado em disco e periodicamente sofre backup em fita.

O log só pode ser afetado no caso de falhas de disco ou catastrófica.

Undo (desfazer): similar ao rollback, mas aplicada a uma única operação.

Redo (refazer): certas operações de uma transação têm que ser refeitas para garantir que todas as
operações efetivadas foram aplicadas ao BD.

Ponto de Efetivação: (COMMIT POINT)

Uma transação alcança seu ponto de efetivação quando:


- todas as operações que acessam o banco de dados estão sendo executadas com sucesso e;

- o efeito de todas elas estiverem sendo gravados no log.

Após o ponto de efetivação, a transação é dita “efetivada” e seu efeito será gravada de modo
permanente no banco de dados.

Checkpoints no Log do Sistema:

Escritos no log periodicamente quando o sistema grava no disco todas as operações de WRITE
de transações efetivadas.

São estabelecidos por unidade de tempo ou número de transações feitas.

Ações de um CheckPoint:

Suspender temporariamente a execução das transações.

Forçar a escrita de todas as operações de modificação das transações efetivadas no buffer no


disco.

Escrever um registro (checkpoint) no log e forçar a escrita do log no disco.

Voltar à execução das transações.

Plano de Execução das Transações (escalonamento)

É a ordem de execução das operações de várias transações executando concorrentemente na


forma intercalada.

Definição formal de plano de execução: um plano (ou histórico) S de N transações T1, T2, ...,
Tn é a ordenação das operações das transações sujeitas a uma restrição

Para cada Ti que participe S, as operações de Ti em S deverão aparecer na mesma ordem que
elas ocorrem em Ti

Podem ser baseadas em Seriabilidade ou Restaurabilidade

Operações em Conflito:

Duas operações são ditas em conflitos se elas satisfazem 3 condições:

• Pertencem a transações diferentes

• Acessarem o mesmo item X


• Pelo menos uma das operações deve ser um escrever_item(X)

Um plano será denominado como “completo” se satisfazer 3 condições:

• as operações no plano são exatamente as operações de T1, T2, ... Tn, tendo um commit ou um
abort como última operação de cada transação.

• para quaisquer pares de operações da mesma operação Ti, sua ordem de aparecimento em S
será a mesma de Ti.

• Para quaisquer duas operações conflitantes, uma das duas precisa aparecer antes da outra no
plano.

Em síntese, abrange todas as operações, na mesma ordem e trata conflitos.

Planos Restauráveis: é aquele que para cada par de transação, uma T2 leia itens de dados
previamente escritos por T1, ou seja, a operação de efetivação de T1 aparece antes da operação
de efetivação de T2

Reversão em cascata: uma transação não efetivada tem de ser revertida porque leu um item de
uma transação que falhou.

Plano Estrito: as transações não poderão nem ler nem gravar um item X até a última transação
que grave X tenha sido efetivada.

Plano Serial: (não aceito) - as operações de cada transação são executadas consecutivamente,
sem intercalação das operações de outra transação.

Plano não serial é aquele em que as operações das transações são executadas de forma
intercalada no plano de execução.

4) Importância do Controle de Concorrência

Resolve problemas de atualização perdida por meio do subsistema de controle de concorrência.

Melhora a eficiência global do computador e do sistema, dado que uma maior quantidade de
trabalho é executada em menos tempo.
Evita que a interação entre transações concorrentes destrua a consistência do banco de dados e
mantenham o isolamento das transações.

Técnicas de Bloqueio para garantir o controle de concorrência:

Lock é o mecanismo utilizado para controlar o acesso simultâneo a recursos compartilhados,


como variáveis ou dados, por múltiplos threads ou processos.

LOCK BINÁRIO: possui dois estados de valores possíveis para cada item de dado: locked (1) e
unlocked (0).

LOCK Múltiplo: possui três operações: read_lock(x), write_lock(x) e unlock(x).

Obs: esses dois tipos de lock não garantem a serializibilidade de escalonamento nos quais as
transações participam, sendo necessário um protocolo (de bloqueio) adicional que contempla o
locks e unlocks.

Obs2: two-phase lock é a técnica que garante a propriedade do isolamento.

Obs3: Protocolo de bloqueio pode ser em todas as tabelas, apenas na afetada ou apenas os dados
que são manipulados durante a transação.

Bloqueio compartilhado: é utilizado para leitura de dados, permitindo que mais de uma
transação leia o mesmo dado.

Bloqueio exclusivo: é utilizado para escrita dos dados, permitindo que apenas uma única
transação leia e modifique os dados.

Problemas que podem ser causados pelo protocolo rigoroso de locks.

Deadlock: é a situação em que 2 transações estão em estado simultâneo de espera, cada uma
aguardando que uma das demais libere o block.

Starvation: ocorre se o algoritmo seleciona a mesma transação como vítima repetidamente,


causando abort repetidos e nunca acabando a execução.

Obs: os protocolos want-die e wound-wait evitam o starvation.

Você também pode gostar