sql: lezione 10 nataliya rassadko rassadko@disi.unitn.it
Post on 01-May-2015
219 Views
Preview:
TRANSCRIPT
SQL: Lezione 10
Nataliya Rassadkorassadko@disi.unitn.it
Agenda
Timestamp based protocolloEsercizi su
Timestamping Conflict-serializability BCNF
Alcuni note su SQL
Timestamping: Problem statement
Ogni transazione è associata con un numero unico – timestamp Counter System clock
Con ogni elemento di DB ci sono associati RT(X), WT(X), C(X)
Ordine delle transazione è serialeProblemi
Read too late: TS(T)<RT(X), T vuole leggere qualcosa con può leggere più
Write too late: WT(X)<TS(T)<RT(X), T vuole scrivere qualcosa nel elemento che già nel uso
Timestamping: Possibilità
Richesta deve essere garantitaKill T, se T vuole cambiare la realtà, e restart
T con nuovo timestamp – rollbackDelay T e dopo decidere se garantire la
richiesta dal T (e.g., si può garantire dirty read)
Timestamping: Algoritmo per Read(X)
Se TS(T)>=WT(X), T può leggere X If C(X)=true e TS(T)>RT(X), RT(X):=TS(T)
Altrimenti, non cambiare RT(X) If C(X)=false, delay T finchè C(X)=true o transazione
che scrive in X finishe
Se TS(T)<WT(X), T non può leggere X Rollback T
Timestamping: Algoritmo per Write(X)
Se TS(T)>=WT(X) e TS(T)>=RT(X), T può scrivere X T scrive in X WT(X):=TS(T) C(X):=false
Se TS(T)<WT(X) e TS(T)>=RT(X), T può scrivere X Ma solo se C(X)=true Altrimenti delay T
TS(T)<RT(X), T non può scrivere X Rollback T
Timestamping: Esempio
st2;st3;st1;r1(B);r2(A);r3(C);w1(B);w1(A);w2(C); w3(A)
r1(B) –> RT(B):=st1r2(A) -> RT(A):=st2r3(C) -> RT(C):=st3w1(B) –> WT(B):=st1w1(A) -> WT(A):=st1w2(C) -> C è in utilizzo da T3 con st3>st2 -> Abort2w3(A) e RT(A)=st2 -> T3 può scrivere in A ma se C(A):=true
C(A)=false ->delay T3
Esercizi
St1;r1(A);st2;w2(B);r2(A);w1(B)St1;st2;st3;r1(A);r1(B);w1(C);r3(B);r3(C);w2(B);w3(
A)St1;st3;st2;r1(A);r1(B);w1(C);r3(B);r3(C);w2(B);w3(
A)
Conflict-serializability: Esercizi
r1(A);w1(B);r2(B);w2(C);r3(C);w3(A)w3(A);r1(A);w1(B);r2(B);w2(C);r3(C)r1(A);r2(A);w1(B);w2(B);r1(B);r2(B);w2(C);w1(D)r1(A);r2(A);r1(B);r2(B);r3(A);r4(B);w1(A);w2(B)
Selezionarte operazioni sullo stesso elemento XSequenza deve essere preservataGuardare ogni coppia di operazioni selezionate in seqSe almeno una operazione è w, arco deve essere
inseritoArco da operazione più recente a meno recente
BCNF: Esercizi
ABCD, AB->C, C->D, D->AABCD, B->C, B->DABCD, AB->C, BC->D, CD->A, AD->BABCD, A->C, B->C, C->D, D->AABCDE, AB->C, DE->C, B->DABCDE, AB->C, C->D, D->B, D->E
SQL
SELECT-FROM-WHERESubquery sono in FROM o WHERE
Attenti al risultato di subquery in WHERE: insieme o valoreJOIN
Natural, INNER, FULL OUTER, LEFT OUTER, RIGHT OUTER NULL
Aggregazione e GROUP BY NULL
HAVING come WHERE ma condizione sul valore aggregato
INTERSECT, UNION, EXCEPT Tutti gli attributi di relazioni-argomenti sono UGUALE
MIN(COUNT) - subquery
Buon Natale
Ci vediamo al esame!
top related