E6 Concorre
-
Upload
majong-devjfu -
Category
Documents
-
view
1.033 -
download
3
description
Transcript of E6 Concorre
![Page 1: E6 Concorre](https://reader033.fdocuments.net/reader033/viewer/2022050808/5489737fb47959ce0c8b5990/html5/thumbnails/1.jpg)
![Page 2: E6 Concorre](https://reader033.fdocuments.net/reader033/viewer/2022050808/5489737fb47959ce0c8b5990/html5/thumbnails/2.jpg)
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
![Page 3: E6 Concorre](https://reader033.fdocuments.net/reader033/viewer/2022050808/5489737fb47959ce0c8b5990/html5/thumbnails/3.jpg)
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
![Page 4: E6 Concorre](https://reader033.fdocuments.net/reader033/viewer/2022050808/5489737fb47959ce0c8b5990/html5/thumbnails/4.jpg)
BasidiDa(‐Controllodiconcorrenza4
T1
T2
T3
T4
T5t
BCE
B A
BCE
BCE
BRE
B:begin,E:endC:commit,A:abortR:rollback
Ivantaggidellaconcorrenza
![Page 5: E6 Concorre](https://reader033.fdocuments.net/reader033/viewer/2022050808/5489737fb47959ce0c8b5990/html5/thumbnails/5.jpg)
ProblemidovuUallaconcorrenza
BasidiDa(‐Controllodiconcorrenza5
Lostupdate (dipendenzawritewrite)perditadimodifichedapartediunatransazioneacausadiunaggiornamentoeffeGuatodaun’altratransazione
Dirtyread (dipendenzawriteread)dipendenzadiunatransazionedaun’altranoncompletataconsuccessoeleGuradidaUinconsistenU
Unrepeatableread (dipendenzareadwrite)
analisiinconsistentedidaUdapartediunatransazionecausatadaaggiornamenUprodo\daun’altra
![Page 6: E6 Concorre](https://reader033.fdocuments.net/reader033/viewer/2022050808/5489737fb47959ce0c8b5990/html5/thumbnails/6.jpg)
Esempi
BasidiDa(‐Controllodiconcorrenza6
T1:UPDATECCSETSALDO=SALDO+3
WHERECLIENTE=Tiberio
T2:UPDATECC
SETSALDO=SALDO+6
WHERECLIENTE=Tiberio
![Page 7: E6 Concorre](https://reader033.fdocuments.net/reader033/viewer/2022050808/5489737fb47959ce0c8b5990/html5/thumbnails/7.jpg)
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)
![Page 8: E6 Concorre](https://reader033.fdocuments.net/reader033/viewer/2022050808/5489737fb47959ce0c8b5990/html5/thumbnails/8.jpg)
Lostupdate:Sequenzacheproducel'errore
BasidiDa(‐Controllodiconcorrenza8
R(T1)R(T2)W(T1)W(T2)
R(T1)R(T2)W(T2)W(T1)
oppure
![Page 9: E6 Concorre](https://reader033.fdocuments.net/reader033/viewer/2022050808/5489737fb47959ce0c8b5990/html5/thumbnails/9.jpg)
Lostupdate:altroesempio
BasidiDa(‐Controllodiconcorrenza9
TRANSAZIONEA TRANSAZIONEB
UPDATEPARTS UPDATEPARTSSETCOLOR='VERDE’ SETCOLOR='ROSSO'WHEREPNO=3824 WHEREPNO=3824
![Page 10: E6 Concorre](https://reader033.fdocuments.net/reader033/viewer/2022050808/5489737fb47959ce0c8b5990/html5/thumbnails/10.jpg)
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
![Page 11: E6 Concorre](https://reader033.fdocuments.net/reader033/viewer/2022050808/5489737fb47959ce0c8b5990/html5/thumbnails/11.jpg)
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
![Page 12: E6 Concorre](https://reader033.fdocuments.net/reader033/viewer/2022050808/5489737fb47959ce0c8b5990/html5/thumbnails/12.jpg)
Controllodiconcorrenza
BasidiDa(‐Controllodiconcorrenza12
SivuolegaranUreunaesecuzioneconcorrenteequivalenteallaesecuzioneseriale:
serializzabilità
TECNOLOGIAPREVALENTE:
LOCKINGPerevitareilproblema,TAacquisisceun"lock"sulrecordPNO=3824(oppuresullapaginacheconUeneilrecord,oppuresullarelazionecheconUeneilrecord).TBentrain"statodiwait".QuandoTArilasciaillockTBpuòvisitareildato.
![Page 13: E6 Concorre](https://reader033.fdocuments.net/reader033/viewer/2022050808/5489737fb47959ce0c8b5990/html5/thumbnails/13.jpg)
Locking
BasidiDa(‐Controllodiconcorrenza13
![Page 14: E6 Concorre](https://reader033.fdocuments.net/reader033/viewer/2022050808/5489737fb47959ce0c8b5990/html5/thumbnails/14.jpg)
PrimiUvedilock
BasidiDa(‐Controllodiconcorrenza14
r‐lock:lockinleGura(shared)
w‐lock:lockinscriGura(exclusive)unlock
STATODIUNOGGETTO:liberor‐locked(bloccatodaunleGore)
w‐locked(bloccatodaunoscriGore)
![Page 15: E6 Concorre](https://reader033.fdocuments.net/reader033/viewer/2022050808/5489737fb47959ce0c8b5990/html5/thumbnails/15.jpg)
Transazionibenformate
BasidiDa(‐Controllodiconcorrenza15
• ognireaddiunoggeGoèprecedutodar‐lockedèseguitodaunlock
• ogniwritediunoggeGoèprecedutodaw‐lockedèseguitodaunlock Unr‐lockentrainconfliGoconunw‐lock(eviceversa),
mentrenonentrainconfliGoconunaltror‐lock(cioèduetransazionidileGuranoninterferiscono)Unw‐lockentrainconfliGoconunw‐lock(eviceversa)
![Page 16: E6 Concorre](https://reader033.fdocuments.net/reader033/viewer/2022050808/5489737fb47959ce0c8b5990/html5/thumbnails/16.jpg)
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
![Page 17: E6 Concorre](https://reader033.fdocuments.net/reader033/viewer/2022050808/5489737fb47959ce0c8b5990/html5/thumbnails/17.jpg)
BasidiDa(‐Controllodiconcorrenza17
PerunatransazioneTunaazionediunlocknonpuòprecedereunaazionedilock
numerodirisorsebloccate
daT t
fasecrescente
fasecalante
Lockingaduefasi
![Page 18: E6 Concorre](https://reader033.fdocuments.net/reader033/viewer/2022050808/5489737fb47959ce0c8b5990/html5/thumbnails/18.jpg)
Conseguenze
BasidiDa(‐Controllodiconcorrenza18
atransazionibenformate
bpoliUcadeiconfli\comedatabella
clockingaduefasi
serializzabilità
![Page 19: E6 Concorre](https://reader033.fdocuments.net/reader033/viewer/2022050808/5489737fb47959ce0c8b5990/html5/thumbnails/19.jpg)
Granularitàdellocking
BasidiDa(‐Controllodiconcorrenza19
lock
alivellodi:
relazione
pagina
tupla
valorediun
aGributo
diunatupla
relazione
pagina
tupla
valore
(piùla
granularità
èridoGa
piùè
elevatala
concorrenza)
![Page 20: E6 Concorre](https://reader033.fdocuments.net/reader033/viewer/2022050808/5489737fb47959ce0c8b5990/html5/thumbnails/20.jpg)
Sistemadilocking
BasidiDa(‐Controllodiconcorrenza20
ILOCKvengonoacquisiUincasodimodificadeidaU,oppurequandosivoglionoleggeredaU"consisten,".
Adesempio,supponiamocheAvoglialeggerelarelazioneEMPsenzacheavvenganomodifichedurantelaleGuraecheBvogliamodificarealcunen‐plediEMP.
QuandounutentevuoleoperareinmodoesclusivosuunoggeGo,acquisisceunINTENTIONLOCK;potràoGenereunW‐LOCKsoloquandoilprecedenteW‐LOCKverràrilasciatoeverràilsuoturnotracolorochehannopostoINTENTIONLOCK
![Page 21: E6 Concorre](https://reader033.fdocuments.net/reader033/viewer/2022050808/5489737fb47959ce0c8b5990/html5/thumbnails/21.jpg)
BasidiDa(‐Controllodiconcorrenza21
DEFINIZIONEdiUNCOMMITTEDDATA(daUnondefiniUvi):daUsogge\amodifica,daUchesonostaUmodificaUdaunatransazioneancorainfunzione(echepotrebbe"ABORTIRE").
REGOLAPERLAMODIFICA:NessunatransazionepuòmodificaredaUuncommiGed.
AltrimenU,sipotrebbeverificarelaperditadellemodifiche,seunatransazionechestavamodificandoglistessidaUaborUsce.sievitailproblemadelLOSTUPDATE
Sistemadilocking
![Page 22: E6 Concorre](https://reader033.fdocuments.net/reader033/viewer/2022050808/5489737fb47959ce0c8b5990/html5/thumbnails/22.jpg)
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
![Page 23: E6 Concorre](https://reader033.fdocuments.net/reader033/viewer/2022050808/5489737fb47959ce0c8b5990/html5/thumbnails/23.jpg)
BasidiDa(‐Controllodiconcorrenza23
LIVELLO2
UnatransazioneTchiedeunlocksulrecorddaleggere,quindinonleggemaidaUuncommiGed.RilasciaillockdopolaleGuraeprimadiconcluderelapropriaoperazionesulDB.Peròinunsecondotempopuòtrovareilrecordcambiatoperlacausa2),mentrenonsipuòverificarela1).
LIVELLO3
Unatransazioneponelocksutu\irecordcheleggeelirilasciasolodopoaverterminato.Nonsiverificanomainè1),nè2).
Sistemadilocking
![Page 24: E6 Concorre](https://reader033.fdocuments.net/reader033/viewer/2022050808/5489737fb47959ce0c8b5990/html5/thumbnails/24.jpg)
Livellidiisolamento
BasidiDa(‐Controllodiconcorrenza24
Riassumendo…
Tipidiproblemi:• Lostupdate• Dirtyread• UnrepeatablereadLivellidiisolamento:• 0(Chaos) sipresentanotu\itreproblemi• 1(Browse) nonsihannolostupdate• 2(Cursorstability) nonsihannolostupdateedirtyread
• 3(Repeatablereads) nessunproblema(isolaUon“pura”)
![Page 25: E6 Concorre](https://reader033.fdocuments.net/reader033/viewer/2022050808/5489737fb47959ce0c8b5990/html5/thumbnails/25.jpg)
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.
![Page 26: E6 Concorre](https://reader033.fdocuments.net/reader033/viewer/2022050808/5489737fb47959ce0c8b5990/html5/thumbnails/26.jpg)
Insorgenzadeldeadlock
BasidiDa(‐Controllodiconcorrenza26
T1esegueW‐LOCK(D1)T2esegueW‐LOCK(D2)
T1aGendeunarisorsacontrollatadaT2T2aGendeunarisorsacontrollatadaT1
T1 T2
![Page 27: E6 Concorre](https://reader033.fdocuments.net/reader033/viewer/2022050808/5489737fb47959ce0c8b5990/html5/thumbnails/27.jpg)
Esempidideadlock
BasidiDa(‐Controllodiconcorrenza27
T1 T2 T1 T2 T3
![Page 28: E6 Concorre](https://reader033.fdocuments.net/reader033/viewer/2022050808/5489737fb47959ce0c8b5990/html5/thumbnails/28.jpg)
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).