Professional Documents
Culture Documents
Transaes
Introduo a Transaes Propriedades ACID Controle de Concorrncia e Restaurao Recuperao da Transao COMMIT de duas fases Estado da Transao O LOG Execues Simultneas Shedules (Escalonamento) Seriao Seriao de Conflito Seriao de Viso Testando a seriao Facilidade de recuperao Shedules recuperveis Shedules no em cascata
Transao
Os SGBDs, em geral, so Multiusurios
processam simultaneamente operaes disparadas por vrios usurios.
Concorrentemente
deseja-se alta disponibilidade e tempo de resposta pequeno execuo intercalada de conjuntos de operaes
Transao
O uso concorrente possvel devido ao conceito de Multiprogramao;
C CPU1 B B
D CPU2
t2
t3
t4
Tempo
Transao
Uma transao uma unidade da execuo de programa que acessa e possivelmente atualiza vrios itens de dados. Korth (2006)
Transao
Normalmente a transao iniciada por um programa do usurio escrito em uma DML ou em linguagem de programao de alto nvel.
Begin Transaction .... Operaes ... End Transaction
Transao
Uma transao precisa ver um banco de dados consistente. Durante a execuo da transao, o banco de dados pode ser temporariamente inconsistente.
Quando a transao completada com sucesso ( confirmada), o banco de dados precisa ser consistente.
Profa. Kssia Marchi
Transao
Aps a confirmao da transao, as mudanas que ele faz no banco de dados persistem. Vrias transaes podem ser executadas em paralelo. Dois problemas principais para resolver:
Falhas de vrios tipos, como falhas de hardware e falhas de sistema Execuo simultnea de mltiplas transaes
Transaes
Transao
Propriedades ACID
Atomicidade. Ou todas as operaes da transao so refletidas corretamente no banco de dados ou nenhuma delas .
Transao
Propriedades ACID
Consistncia. A execuo de uma transao isolada preserva a consistncia do banco de dados.
Transao
Propriedades ACID
Isolamento. Embora vrias transaes possam ser executadas simultaneamente, cada transao precisa estar desinformada das outras transaes que esto sendo executadas ao mesmo tempo. Os resultados da transao intermediria precisam estar ocultos das outras transaes sendo executadas simultaneamente.
Transao
Propriedades ACID
Exemplificando o Isolamento:
para cada par de transaes, Ti e Tj, parece para Ti que Tj, terminou a execuo antes que Ti comeasse ou Tj iniciou a execuo depois que Ti terminou.
Transao
Propriedades ACID
Durabilidade. Depois que uma transao for completada com sucesso, as mudanas que ela fez ao banco de dados persistem.
T2
Ler_item(X); X:=X+M
Escrever_item(X); Ler_item(Y); Escrever_item(X)
Y:=Y+N Escrever_item(Y)
T2
Tempo
Recuperao de Transaes
Incio da transao
Execuo bem-sucedida de BEGIN TRANSACTION;
Trmino da transao
Execuo bem-sucedida de uma instruo COMMIT ou ROLLBACK
Recuperao de Transaes
COMMIT
Ponto de Commit ou validao Corresponde ao fim de uma unidade lgica de trabalho; O banco est, ou deveria estar, consistente;
ROLLBACK
Devolve o banco de dados no estado em que ele se encontrava em BEGIN TRANSACTION;
Profa. Kssia Marchi
Recuperao de Transaes
Quando um ponto COMMIT estabelecido:
Todas as atualizaes anteriores ao ponto COMMIT se tornam permanentes. Os posicionamentos do banco de dados so perdidos. (Tambm no ROLLBACK) Todos os bloqueios de tuplas so liberados. (Tambm no ROLLBACK)
Estado da Transao
Encerramento com sucesso Reads e writes Finaliza a transao
Inicia a Transao
Estado da Transao
Reads e writes Finaliza a transao
Inicia a Transao
inicial; A transao permanece nesse estado enquanto est executando; enquanto ativa, uma transao executa uma ou mais operaes read e write
A transao deve ser desfeita (Em processo de aborto)
Estado da Transao
Encerramento com sucesso Reads e writes Finaliza a transao
Inicia a Transao
Estado da Transao
Encerramento com sucesso Reads e writes Finaliza a transao
Inicia a Transao
transao Aps o trminoAbem deve ser desfeita sucedido (Em processo de aborto)
Estado da Transao
Encerramento com sucesso Reads e writes Finaliza a transao
Inicia a Transao
Depois da descoberta de que a execuo A transao deve ser desfeita normal no pode mais (Em processo de prosseguir aborto)
Estado da Transao
Encerramento com sucesso
Depois Reads ea transao foi revertida e o que writes banco de dados foi restaurado ao seu estado anterior ao incio da transao. Finaliza a transao Duas opes aps ter sido abortada:
Inicia a Transao
Reiniciar a transao; pode ser feito apenas se no houver qualquerdeve A transao erro ser desfeita lgico interno Excluir a transao
A transao deve ser desfeita (Em processo de aborto)
Encerramento sem sucesso
O Log
O log (dirio do SGBD) permite recuperar falhas que afetam uma transao. Os logs so mantidos para controlar todas as operaes de uma transao que afetem valores dos itens dos bancos de dados. Mantido em disco. Periodicamente copiado para um sistema de armazenamento.
Profa. Kssia Marchi
O Log
Registros de Log
[start-transactio T] Indica o incio da transao T; [escrever_item, T, X, valor_antigo, novo valor] Indica que a transao T mudou o valor do item X no BD; [ler_item, T,X] Indica que a transao T leu o valor X na BD.
O Log
Registros de Log
[commit, T] Indica que a transao T foi completada com sucesso; [abort, T] Indica que a transao T foi interrompuda;
O Log
Os protocolos para restaurao que tiverem reverses (ROLLBACK) no exigem que os READS sejam escritos no LOG; Com o registro de LOG, possvel restaurar o BD para o estado consistente, mesmo aps ter ocorrido um colapso, utilizando tcnicas de recuperao.
Ponto de Efetivao
Ponto de efetivao (commit point) alcanado quando todas as operaes que acessam o BD esto sendo executadas com sucesso e o efeito de todas elas estiverem sendo gravado no log.
Execues Simultneas
Vrias transaes podem ser executadas simultaneamente no sistema.
necessrio manter a consistncia.
Uma forma de garantir a consistncia garantir que as transaes sejam executadas serialmente.
Execues Simultneas
As vantagens so:
Melhor utilizao do processador e do disco, levando a um melhor throughput (taxa de transferncia) de transao: uma transao pode estar usando a CPU enquanto outra est lendo ou escrevendo no disco Tempo de mdio de resposta reduzido para transaes: as transaes curtas no precisam esperar atrs das longas
Execues Simultneas
Preocupao da execuo simultnea:
Manter a consistncia dos dados. Necessidade de controlar a interao entre as transaes simultneas para impedir que destruam a consistncia do BD.
Shedules
Seqncias de instrues que especificam a ordem cronolgica em que as instrues das transaes simultneas so executadas
Shedules
Um schedule para um conjunto de transaes precisa consistir em todas as instrues dessas transaes Precisam preservar a ordem em que as instrues aparecem em cada transao individual
Profa. Kssia Marchi
Shedules
Uma transao que completa com sucesso sua execuo ter uma instruo commit como a ltima instruo (ser omitida se for bvia) Uma transao que no completa com sucesso sua execuo ter instruo abort como a ltima instruo (ser omitida se for bvia)
Profa. Kssia Marchi
Shedule Serial
Cada schedule serial consiste em uma seqncia de instrues de vrias transaes, em que as instrues pertencentes a uma nica transao aparecem juntas nessa schedule. Para um conjunto de N transaes, existem n! diferentes shedules seriais vlidos.
Shedules
Suponha que T1 transfere US$ 50 de A para B e T2 transfere 10% do saldo de A para B. A seguir est um schedule serial em que T1 seguido de T2.
Shedules
Shedule Serial 1
Profa. Kssia Marchi
Shedules
Em transaes simultnes, os shedules no precisam ser seriais. No possvel prever quantas instrues de uma transao sero executadas antes que a CPU passe para outra transao. O conjunto de n transaes muito maior n!.
Shedules
Shedule No Serial
Shedules
Se deixarmos o controle da execuo concorrente inteiramente para o S.O. pode acontecer que nem todas as execues concorrentes, resultam em um estado correto.
Shedules
Shedules
O componente de controle de concorrncia deve garantir a consistncia do BD. Uma forma de garantir a consistncia em execuo simultnea cuidar para que qualquer Shedule executado seja, de certa forma, equivalente a um Shedule Serial.
Seriao
Suposio bsica Cada transao preserva a consistncia do banco de dados
Portanto, a execuo serial de um conjunto de transaes preserva a consistncia do banco de dados
Seriao
Um schedule (possivelmente simultneo) serializvel se for equivalente a um schedule serial. Diferentes formas de equivalncia de schedule ensejam as noes de:
1. Seriao de conflito 2. Seriao de view
Seriao
Ignoramos as operaes exceto read e write, e consideramos que as transaes podem realizar clculos arbitrrios sobre dados em buffers locais entre reads e writes. Nossos schedules simplificados consistem apenas em instrues read e write.
Seriao de conflito
As instrues li e lj das transaes Ti e Tj respectivamente, esto em conflito se e somente se algum item Q acessado por li e por lj e pelo menos uma destas instrues escreveram Q.
1. 2. 3. 4. li = read(Q), lj = read(Q). li e lj no esto em conflito li = read(Q), lj = write(Q). Esto em conflito li = write(Q), lj = read(Q). Esto em conflito li = write(Q), lj = write(Q). Esto em conflito
Seriao de Conflito
Se um schedule S puder ser transformado em um schedule S por uma srie de trocas de instrues no conflitantes, dizemos que S e S so equivalentes em conflito. Dizemos que um schedule S serial de conflito se ele for equivalente em conflito a um schedule serial
Seriao de Conflito
Conflito
Invertendo instrues no conflitantes: 1. Troque a instruo read(B) de T1 pela instruo write(A) de T2 2. Troque a instruo read(B) de T1 pela instruo read(A) de T2. 3. Troque a instruo write(B) de T1 pela instruo write(A) de T2 4. Troque a instruo write(B) de T1 pela instruo read(A) de T2
Seriao de Conflito
O resultado final dessas trocas um shedule serial, logo, mostramos que o shedule em questo um Shedule Serial. Isso nos permite dizer que Shedule (S) e o Shedule Gerado (S) so equivalentes em conflito. O que nos leva a afirmar que S Serial de Conflito.
Profa. Kssia Marchi
Seriao de Conflito
Exemplo de um schedule que no serial de conflito:
No podemos trocar instrues no schedule acima para obter o schedule serial < T3, T4 >, ou o schedule serial < T4, T3 >.
Profa. Kssia Marchi
Seriao de Conflito
Concluso:
H definies menos rigorosas da equivalncia em shedule do que a equivalncia em conflito. Em geral, essa anlise difcil de implementar e computacionalmente dispendiosa.
Seriao de Viso
Seriao de viso so menos rigorosas que a equivalente em conflito. Sejam S e S dois schedules com o mesmo conjunto de transaes. S e S so equivalentes em view se as trs condies a seguir forem satisfeitas:
Profa. Kssia Marchi
Seriao de Viso
1. Para cada item de dados Q, se a transao Ti ler o valor inicial de Q no schedule S, ento, Ti precisa, no schedule S, tambm ler o valor inicial de Q.
Seriao de Viso
2. Para cada item de dados Q, se a transao Ti executar read(Q) no schedule S, e se esse valor pela transao Tj (se houver), ento a transao Ti, no schedule S, tambm precisa ler o valor de Q que foi produzido pela transao Tj.
Seriao de Viso
3. Para cada item de dados Q, a transao (se houver) que realiza a operao write(Q) final no schedule S precisa realizar a operao write(Q) final no schedule S.
Seriao de Viso
Como podemos ver, a equivalncia em view tambm baseada unicamente em reads e writes isolados.
Seriao de Viso
Um schedule S serial de view se ele for equivalente em view a um schedule serial Todo schedule serial de conflito tambm serial de view
Seriao de Viso
A seguir est um schedule que serial de view mas no serial de conflito
Todo schedule serial de view que no serial de conflito possui escritas cegas (realizam as escritas sem ter realizado a leitura).
Profa. Kssia Marchi
Testando a Seriao
Ao projetar esquemas de controle de concorrncia, temos que mostrar que os shedules gerados so passveis de seriao. Mtodo que determina a seriao de conflito de um Shedule.
Testando a Seriao
Considere um schedule de um conjunto de transaes T1, T2, ..., Tn Constri-se o Grfico de Precedncia
Testando a Seriao
Grfico de Precedncia
Um grfico direcionado onde os vrtices so as transaes (nomes) Consiste em um par G=(V,E) V vrtices, E arestas O conjunto de vrtices consiste de todas as transaes participantes do shedule.
Testando a Seriao
Grfico de Precedncia
O conjunto de arestas consiste de todas as arestas TiTj para as quais uma das tres condies sejam verdadeiras.
1. Ti executa write(Q) antes que Tj execute read(Q) 2. Ti executa read(Q) antes que Tj execute write(Q) 3. Ti executa write(Q) antes que Tj execute write(Q)
Testando a Seriao
Se uma aresta Ti Tj existir no grfico de precedncia, ento, em qualquer shedule serial S equivalente a S, Ti precisa aparecer antes de Tj.
Testando a Seriao
Exemplo:
Desenhamos um arco de Ti at Tj se a transao entra em conflito e Ti acessou o item de dados no qual surgiu o conflito anteriormente
Testando a Seriao
T1
T2
T3
Shedule A
T4
Referncias Bibliogrficas
Silberschatz, Abraham; Korth, Henry F. e Sudarshan, S. Sistema de Banco de Dados. So Paulo: MAKRON Books, 2006. Date, C. J., 1941 Instroduo a sistemas de banco de dados. Rio de Janeiro: CAMPUS, 2000 Elmasri, Ramez; Sistemas de Banco de Dados; Addison Wesley, 2005.
Profa. Kssia Marchi