Escolar Documentos
Profissional Documentos
Cultura Documentos
CONTEDO PROGRAMTICO
RECAPITULANDO CONCEITOS;
RECAPITULANDO CONCEITOS...
TRANSAO: uma seqncia de operaes
RECAPITULANDO CONCEITOS...
CONCORRNCIA:
quando dois ou mais processos so executados simultaneamente e disputam o acesso a recursos compartilhados.
RECAPITULANDO CONCEITOS...
CONCORRNCIA + BANCO DE DADOS
Recursos:
Registros; Tabelas; Itens de dados.
RECAPITULANDO CONCEITOS...
CONCORRNCIA + BANCO DE DADOS
RECAPITULANDO CONCEITOS...
Quando
inmeras transaes so executadas simultaneamente, a propriedade de isolamento pode no ser mais preservada.
RECAPITULANDO CONCEITOS...
Protocolos baseados em:
Bloqueios,
publicado em 1981: "Concurrency Control in Distributed Database Systems, escrito por Philip Bernstein and Nathan Goodman; Dissertao sobre MVCC original public. em 1971 por David P. Reed. Primeiro SGBD: VAX da Digital Rdb/ELN. Segundo: InterBase (Ainda ativo).
Em um SGBD que usa multiverso, cada write() em um item de dados Q, por exemplo, produz uma nova cpia (ou verso) de Q. Quando uma transao emite uma operao de read() em Q, o SGBD seleciona uma das verses de Q para ser lida.
Comando a ser Executado: UPDATE FROM Clientes SET Saldo = Saldo - 2500 WHERE cod = 2;
Valor da verso Xi
read_TS(Xi) :
O timestamp de leitura de Xi o maior entre todos os timestamp de transaes que tenham lido com sucesso a verso Xi de X write_TS(Xi) : O timestamp de escrita de Xi o timestamp da transao que gravou o valor da verso Xi
read_TS(Xk+1)= TS(T3)
Seno
(H uma transao mais recente que j leu Xi) Obs.: A verso i de X tem o mais elevado write_TS(Xi) de todas as verses de X, sendo que write_TS(Xi) menor ou igual a TS(T1). Cria uma nova verso Xj de X com:
Encontre a verso i de X que tem o mais elevado write_TS(Xi) entre todas as verses de X que seja menor ou igual a TS(T3)
T1
read(A); A=A500; write(A);
T2
T3
T_TS
T1 = 1;
A = 2000
R_TS(A) = 0; W_TS(A) = 0;
B = 3000
R_TS(B) = 0; W_TS(B) = 0;
T2 = 2; *R_TS(A1) = 2; T3 = 3;
*R_TS(B) = 2;
Combina as vantagens do controle de concorrncia em multiverso com as vantagens do protocolo de bloqueio em 2 fases.
Transaes de escrita realizam um bloqueio rigoroso em duas fases; T Ou seja, mantm todos lock-X(A) os bloqueios at o final.
1
nico timestamp, baseado em um contador, chamado ts-counter, o qual incrementado durante o processo.
leitura por meio do valor corrente do contador (lendo o valor de ts-counter antes de comear a execuo).
Quando uma transao
read(Q), o valor recebido o contedo da verso cujo timestamp o inferior a TS(Ti) mais prximo.
Quando uma transao de atualizao deseja escrever um item de dados, ela primeiro consegue o bloqueio exclusivo sobre esse item, e ento, cria uma nova verso do item de dado. A escrita realizada a partir da nova verso e o timestamp da nova verso recebe ;
que comearem depois de Ti incrementar o ts-counter acessaro o valor atualizado por Ti, enquanto aquelas que comearem antes do incremento de ts_counter, feito por Ti, vero o valor anterior atualizao de Ti. Neste caso, as transaes somente de leitura jamais precisaro esperar por bloqueios.
T1
T2
T1 = ts_counter = 1; l A = 1000;
cria(A1)= 500; T2 = ts_counter = 1; l B = 1500;
DEADLOCK
O que deadlock
Deadlock ou impasse o ciclo de transaes esperando por locks serem liberados de outras transaes do mesmo ciclo. Seja um conjunto de transaes {T0,T1,T2}. Um impasse acontece quando T0 est esperando T1 liberar um lock que por sua vez est esperando T2 liberar um lock que est esperando T0 liberar um lock.
Preveno
Abordagem 1: Bloqueia todos os itens de dados antes da transao Ordena os bloqueios usando protocolo em rvore
Preveno
Abordagem 2: Usa preempo e reverso Utiliza timestamp para decidir se transao espera ou revertida Bloqueio continua sendo usado para controlar concorrncia
Esquemas de preveno
Esperar-morrer(wait-die)
Ferir-esperar(wound-die)
Cada transao possui um tempo limite depois que pede um bloqueio. Caso esse tempo seja atingido (tempo esgotado), ela revertida e depois reiniciada. Se ocorrer um deadlock, a(s) transao(es) ter(o) seus tempos esgotados, revertendo-as e permitindo que as outras transaes possam ser completadas.
Deteco e recuperao
alocados atualmente para transaes, assim como qualquer solicitao de itens de dados pendentes; Determinar se o sistema entrou em estado de deadlock atravs de um algoritmo; Recuperar-se do impasse em caso afirmativo de deadlock
Deteco
Seja um grafo G=(V,E). Em E, cada par ordenado do tipo Ti Tj quer dizer que a transao Ti est esperando um item de dado bloqueado por Tj. Quando Tj liberar o dado que Ti precisa, o par ordenado Ti Tj retirado de E.
Deteco
Sem impasse
Com impasse
T2
T1
T3
Recuperao
BEGIN TRANSACTION
UPDATE Customer SET LastName = 'John' WHERE CustomerId=111 WAITFOR DELAY '00:00:05' -- Wait for 5 ms UPDATE Orders SET CustomerId = 1 WHERE OrderId = 221 COMMIT TRANSACTION Transao B BEGIN TRANSACTION UPDATE Orders SET ShippingId = 12 WHERE OrderId = 221 WAITFOR DELAY '00:00:05' -- Wait for 5 ms UPDATE Customer SET FirstName = 'Mike' WHERE CustomerId=111
COMMIT TRANSACTION
Alm de read(Q) e write(Q), devemos tomar cuidado tambm com algumas operaes adicionais que afetam no controle de concorrncia: () utilizada para inserir um novo item de dado Q em um banco de dados e lhe designa um valor inicial. () remove o item de dado Q do banco de dados.
Resultar em um erro lgico em transao se: Uma transao que queira operar um read(Q) depois da excluso de Q. Uma transao que pretenda realizar uma operao de read(Q) antes da insero de Q. Ao tentar remover um item de dado inexistente.
Excluso
As instrues de excluso afeta o controle de concorrncia. Essa operao de excluso entra em conflito com outra instruo. Veremos a seguir como a operao de excluso entra em conflito com as demais:
Excluso
As instrues de excluso afeta o controle de concorrncia. Essa operao de excluso entra em conflito com outra instruo. Veremos a seguir como a operao de excluso entra em conflito com as demais: Considere que Ii e Ij como sendo as instrues das transaes de Ti e Tj. Nesse caso, = e sendo vrias outras instrues.
Excluso
= (). e entram em conflito. Se vier
antes de , ter um erro lgico. Se vier antes de , poder executar a operao com sucesso. = (). e entram em conflito. Se vier antes de , ter um erro lgico. Se vier antes de , poder executar a operao com sucesso.
Excluso
= (). e entram em conflito. Se vier
antes de , ter um erro lgico. Se vier antes de , ter um erro lgico. = (). e entram em conflito. Suponha que o item de dados Q no existisse antes da execuo de e . Ento, se vier antes de , um erro lgico resultado para . Se vier antes de , ento nenhum erro lgico resultar. De modo semelhante, se Q existisse antes da execuo de e , ento um erro lgico resultante se vier antes de , mas no de outra forma.
Excluso
? Quando uma operao de excluso entra em conflito com outras? Se uma transao quiser ler o item que a outra removeu; Se uma transao quiser escrever o que a outra removeu;
Excluso
? Quando uma operao de excluso entra em conflito com outras? Se uma transao quiser remover o que a outra removeu; Se uma transao quer remover e outra inserir: A remoo s pode ser feita se a insero j ocorreu ou se o dado j existia. A insero s deve ocorrer se o dado no existe.
Excluso
Se o bloqueio em duas fases for usado, preciso
um bloqueio exclusivo sobre o item de dados antes que ele possa ser removido. Para o protocolo timestamp preciso um controle similar ao usado para o write.
Insero
O que voc j viu e aprendeu anteriormente? Que a operao de () entra em conflito com as seguintes operaes: (); ; ();
Insero
O que voc j viu e aprendeu anteriormente? Que a operao de () entra em conflito com as seguintes operaes: (); ; (); Nenhum item de dado pode ser removido, lido ou alterado antes de existir no sistema. Por existirem esses conflitos, a operao () tratada como uma operao de () dentro do sistema.
Insero
O que voc j viu e aprendeu anteriormente? Por existirem esses conflitos, a operao () tratada como uma operao de () dentro do sistema. Para fins de controle de concorrncia temos que: No protocolo de bloqueio, insert(Q) impe bloqueio exclusivo sobre o tem Q. No protocolo de ordenao por Timestamp, se insert(Q) for executada, R-timestamp e Wtimestamp do tem Q so atualizados.