E6 Concorre
-
Upload
majong-devjfu -
Category
Documents
-
view
1.025 -
download
3
description
Transcript of E6 Concorre
BasidiDa(‐Controllodiconcorrenza2
C)ModelloRelazionale,Algebrarelazionale,SQL
1 2 3 4 5 6 7
E)TecnologiadiunDBMS
1 2 3 4 5 6
A)Introduzione
1 2
B)Prog.ConceGuale(ER)
1 2 3 4 5 6 7
D)Prog.LogicaeNormalizzazione
1 2 3 4
F)ProgrammazioneDB
1 2
Ivantaggidellaconcorrenza
BasidiDa(‐Controllodiconcorrenza3
sulserver(1cpu,1disco,1sistemaditrasmissione)èpossibileilparallelismotra: elaborazione:cpu(c) operazionidiI/O:disco(d) operazioniditrasmissione(t) aGesadaiclient(a)
a
a
d
a
d
d
dt
t
tcc
c
c
c
c
c
U3
U2
U1
BasidiDa(‐Controllodiconcorrenza4
T1
T2
T3
T4
T5t
BCE
B A
BCE
BCE
BRE
B:begin,E:endC:commit,A:abortR:rollback
Ivantaggidellaconcorrenza
ProblemidovuUallaconcorrenza
BasidiDa(‐Controllodiconcorrenza5
Lostupdate (dipendenzawritewrite)perditadimodifichedapartediunatransazioneacausadiunaggiornamentoeffeGuatodaun’altratransazione
Dirtyread (dipendenzawriteread)dipendenzadiunatransazionedaun’altranoncompletataconsuccessoeleGuradidaUinconsistenU
Unrepeatableread (dipendenzareadwrite)
analisiinconsistentedidaUdapartediunatransazionecausatadaaggiornamenUprodo\daun’altra
Esempi
BasidiDa(‐Controllodiconcorrenza6
T1:UPDATECCSETSALDO=SALDO+3
WHERECLIENTE=Tiberio
T2:UPDATECC
SETSALDO=SALDO+6
WHERECLIENTE=Tiberio
Esecuzioneconperditadiupdate(lostupdateproblem)
BasidiDa(‐Controllodiconcorrenza7
S(Ub)=100
1R(T1):S(Ub)‐>B12B1=B1+3
3R(T2):S(Ub)‐>B24B2=B2+65W(T1):B1‐>S(Ub)S(Ub)=103
6W(T2):B2‐>S(Ub)S(Ub)=106(finale),oppure:5’W(T2):B1‐>S(Ub)S(Ub)=1066’W(T1):B2‐>S(Ub)S(Ub)=103(finale)
Lostupdate:Sequenzacheproducel'errore
BasidiDa(‐Controllodiconcorrenza8
R(T1)R(T2)W(T1)W(T2)
R(T1)R(T2)W(T2)W(T1)
oppure
Lostupdate:altroesempio
BasidiDa(‐Controllodiconcorrenza9
TRANSAZIONEA TRANSAZIONEB
UPDATEPARTS UPDATEPARTSSETCOLOR='VERDE’ SETCOLOR='ROSSO'WHEREPNO=3824 WHEREPNO=3824
LeGura“sporca”(dirtyread)
BasidiDa(‐Controllodiconcorrenza10
S(Ub)=100
1R(T1):S(Ub)‐>B12B1=B1+3
3W(T1):B1‐>S(Ub)S(Ub)=1034R(T2):S(Ub)‐>B25ROLLBACK(T1)
6B2=B2+67W(T2):B2‐>S(Ub)S(Ub)=109
Unrepeatableread
BasidiDa(‐Controllodiconcorrenza11
S(Ub)=100
1R(T1): S(Ub)=1002R(T2): S(Ub)‐>B2
3B2=B2+1004W(T2): B2‐>S(Ub)S(Ub)=2005R(T1): S(Ub)=200
Controllodiconcorrenza
BasidiDa(‐Controllodiconcorrenza12
SivuolegaranUreunaesecuzioneconcorrenteequivalenteallaesecuzioneseriale:
serializzabilità
TECNOLOGIAPREVALENTE:
LOCKINGPerevitareilproblema,TAacquisisceun"lock"sulrecordPNO=3824(oppuresullapaginacheconUeneilrecord,oppuresullarelazionecheconUeneilrecord).TBentrain"statodiwait".QuandoTArilasciaillockTBpuòvisitareildato.
Locking
BasidiDa(‐Controllodiconcorrenza13
PrimiUvedilock
BasidiDa(‐Controllodiconcorrenza14
r‐lock:lockinleGura(shared)
w‐lock:lockinscriGura(exclusive)unlock
STATODIUNOGGETTO:liberor‐locked(bloccatodaunleGore)
w‐locked(bloccatodaunoscriGore)
Transazionibenformate
BasidiDa(‐Controllodiconcorrenza15
• ognireaddiunoggeGoèprecedutodar‐lockedèseguitodaunlock
• ogniwritediunoggeGoèprecedutodaw‐lockedèseguitodaunlock Unr‐lockentrainconfliGoconunw‐lock(eviceversa),
mentrenonentrainconfliGoconunaltror‐lock(cioèduetransazionidileGuranoninterferiscono)Unw‐lockentrainconfliGoconunw‐lock(eviceversa)
Tabelladeiconfli\
BasidiDa(‐Controllodiconcorrenza16
OK:bloccodellarisorsa,
ilprogrammaprocede
NO:ilprogramma
vainaGesache
larisorsavengasbloccata
r‐lockedw‐locked
OKNO
NONO
r‐lock
w‐lock
contatoredeileGori
r‐lock
r‐counter<‐r‐counter+1
unlock
r‐counter<‐r‐counter‐1
BasidiDa(‐Controllodiconcorrenza17
PerunatransazioneTunaazionediunlocknonpuòprecedereunaazionedilock
numerodirisorsebloccate
daT t
fasecrescente
fasecalante
Lockingaduefasi
Conseguenze
BasidiDa(‐Controllodiconcorrenza18
atransazionibenformate
bpoliUcadeiconfli\comedatabella
clockingaduefasi
serializzabilità
Granularitàdellocking
BasidiDa(‐Controllodiconcorrenza19
lock
alivellodi:
relazione
pagina
tupla
valorediun
aGributo
diunatupla
relazione
pagina
tupla
valore
(piùla
granularità
èridoGa
piùè
elevatala
concorrenza)
Sistemadilocking
BasidiDa(‐Controllodiconcorrenza20
ILOCKvengonoacquisiUincasodimodificadeidaU,oppurequandosivoglionoleggeredaU"consisten,".
Adesempio,supponiamocheAvoglialeggerelarelazioneEMPsenzacheavvenganomodifichedurantelaleGuraecheBvogliamodificarealcunen‐plediEMP.
QuandounutentevuoleoperareinmodoesclusivosuunoggeGo,acquisisceunINTENTIONLOCK;potràoGenereunW‐LOCKsoloquandoilprecedenteW‐LOCKverràrilasciatoeverràilsuoturnotracolorochehannopostoINTENTIONLOCK
BasidiDa(‐Controllodiconcorrenza21
DEFINIZIONEdiUNCOMMITTEDDATA(daUnondefiniUvi):daUsogge\amodifica,daUchesonostaUmodificaUdaunatransazioneancorainfunzione(echepotrebbe"ABORTIRE").
REGOLAPERLAMODIFICA:NessunatransazionepuòmodificaredaUuncommiGed.
AltrimenU,sipotrebbeverificarelaperditadellemodifiche,seunatransazionechestavamodificandoglistessidaUaborUsce.sievitailproblemadelLOSTUPDATE
Sistemadilocking
BasidiDa(‐Controllodiconcorrenza22
QuandounatransazionevuolemodificareidaUdeveacquisireW‐LOCK(exclusive).
QuandounatransazionevuolesololeggeredaUconsisten,deveacquisireR‐LOCK(shared).
Neisistemicommercialisonopossibili3livellidiisolamentoperlaleGura:
LIVELLO1UnatransazioneTvuoleleggerequalsiasidato,ancheuncommiGed,quindinonchieder‐lock.Rileggendoduevoltelostessodato,Tpuòtrovarlocambiatoperché:
1 un'altratransazioneT3,cheloavevacambiatoinprecedenza,aborUsce(DIRTYREAD).
2 un'altratransazioneT2lohacambiato(UNREPEATABLEREAD)
Sistemadilocking
BasidiDa(‐Controllodiconcorrenza23
LIVELLO2
UnatransazioneTchiedeunlocksulrecorddaleggere,quindinonleggemaidaUuncommiGed.RilasciaillockdopolaleGuraeprimadiconcluderelapropriaoperazionesulDB.Peròinunsecondotempopuòtrovareilrecordcambiatoperlacausa2),mentrenonsipuòverificarela1).
LIVELLO3
Unatransazioneponelocksutu\irecordcheleggeelirilasciasolodopoaverterminato.Nonsiverificanomainè1),nè2).
Sistemadilocking
Livellidiisolamento
BasidiDa(‐Controllodiconcorrenza24
Riassumendo…
Tipidiproblemi:• Lostupdate• Dirtyread• UnrepeatablereadLivellidiisolamento:• 0(Chaos) sipresentanotu\itreproblemi• 1(Browse) nonsihannolostupdate• 2(Cursorstability) nonsihannolostupdateedirtyread
• 3(Repeatablereads) nessunproblema(isolaUon“pura”)
Problemadeldeadlock
BasidiDa(‐Controllodiconcorrenza25
T1:
W‐LOCK(D1)W‐LOCK(D2)
D1<‐D1‐100D2<‐D2+100
UNLOCK(D1)
UNLOCK(D2)
T2:
W‐LOCK(D2)W‐LOCK(D1)
D1<‐D1+30D2<‐D2‐50
UNLOCK(D2)
UNLOCK(D1)
Situazionechesiverificaquandodueopiùtransazionisonoinstatodiwait(aGesa)peraGendereilrilasciodiogge\dapartedialtretransazioniinstatodiwait.
Insorgenzadeldeadlock
BasidiDa(‐Controllodiconcorrenza26
T1esegueW‐LOCK(D1)T2esegueW‐LOCK(D2)
T1aGendeunarisorsacontrollatadaT2T2aGendeunarisorsacontrollatadaT1
T1 T2
Esempidideadlock
BasidiDa(‐Controllodiconcorrenza27
T1 T2 T1 T2 T3
TecnicadelTime‐out
BasidiDa(‐Controllodiconcorrenza28
LatecnicadirisoluzionepiùusataèquelladelTIME‐OUT.Quandounatransazioneentrainstatodiwaitsia\vaunTIME‐OUT:un'aGesaeccessivaèinterpretatacomedeadlock,dopouncertotempoinaGesa(scadenzadelUmeout)latransazione
vieneaborUta.
LaprobabilitàdiavereDEADLOCKèinfluenzatadallagranularitàdelLOCK(RELAZIONE,PAGINA,TUPLA).