E6 Concorre

28

description

 

Transcript of E6 Concorre

Page 1: E6 Concorre
Page 2: 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

Page 3: E6 Concorre

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

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

ProblemidovuUallaconcorrenza

BasidiDa(‐Controllodiconcorrenza5

Lostupdate (dipendenzawritewrite)perditadimodifichedapartediunatransazioneacausadiunaggiornamentoeffeGuatodaun’altratransazione

Dirtyread (dipendenzawriteread)dipendenzadiunatransazionedaun’altranoncompletataconsuccessoeleGuradidaUinconsistenU

Unrepeatableread (dipendenzareadwrite)

analisiinconsistentedidaUdapartediunatransazionecausatadaaggiornamenUprodo\daun’altra

Page 6: E6 Concorre

Esempi

BasidiDa(‐Controllodiconcorrenza6

T1:UPDATECCSETSALDO=SALDO+3

WHERECLIENTE=Tiberio

T2:UPDATECC

SETSALDO=SALDO+6

WHERECLIENTE=Tiberio

Page 7: E6 Concorre

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

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

Lostupdate:altroesempio

BasidiDa(‐Controllodiconcorrenza9

TRANSAZIONEA TRANSAZIONEB

UPDATEPARTS UPDATEPARTSSETCOLOR='VERDE’ SETCOLOR='ROSSO'WHEREPNO=3824 WHEREPNO=3824

Page 10: E6 Concorre

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

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

Controllodiconcorrenza

BasidiDa(‐Controllodiconcorrenza12

SivuolegaranUreunaesecuzioneconcorrenteequivalenteallaesecuzioneseriale:

serializzabilità

TECNOLOGIAPREVALENTE:

LOCKINGPerevitareilproblema,TAacquisisceun"lock"sulrecordPNO=3824(oppuresullapaginacheconUeneilrecord,oppuresullarelazionecheconUeneilrecord).TBentrain"statodiwait".QuandoTArilasciaillockTBpuòvisitareildato.

Page 13: E6 Concorre

Locking

BasidiDa(‐Controllodiconcorrenza13

Page 14: E6 Concorre

PrimiUvedilock

BasidiDa(‐Controllodiconcorrenza14

r‐lock:lockinleGura(shared)

w‐lock:lockinscriGura(exclusive)unlock

STATODIUNOGGETTO:liberor‐locked(bloccatodaunleGore)

w‐locked(bloccatodaunoscriGore)

Page 15: E6 Concorre

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

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

BasidiDa(‐Controllodiconcorrenza17

PerunatransazioneTunaazionediunlocknonpuòprecedereunaazionedilock

numerodirisorsebloccate

daT t

fasecrescente

fasecalante

Lockingaduefasi

Page 18: E6 Concorre

Conseguenze

BasidiDa(‐Controllodiconcorrenza18

atransazionibenformate

bpoliUcadeiconfli\comedatabella

clockingaduefasi

serializzabilità

Page 19: E6 Concorre

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

Sistemadilocking

BasidiDa(‐Controllodiconcorrenza20

ILOCKvengonoacquisiUincasodimodificadeidaU,oppurequandosivoglionoleggeredaU"consisten,".

Adesempio,supponiamocheAvoglialeggerelarelazioneEMPsenzacheavvenganomodifichedurantelaleGuraecheBvogliamodificarealcunen‐plediEMP.

QuandounutentevuoleoperareinmodoesclusivosuunoggeGo,acquisisceunINTENTIONLOCK;potràoGenereunW‐LOCKsoloquandoilprecedenteW‐LOCKverràrilasciatoeverràilsuoturnotracolorochehannopostoINTENTIONLOCK

Page 21: E6 Concorre

BasidiDa(‐Controllodiconcorrenza21

DEFINIZIONEdiUNCOMMITTEDDATA(daUnondefiniUvi):daUsogge\amodifica,daUchesonostaUmodificaUdaunatransazioneancorainfunzione(echepotrebbe"ABORTIRE").

REGOLAPERLAMODIFICA:NessunatransazionepuòmodificaredaUuncommiGed.

AltrimenU,sipotrebbeverificarelaperditadellemodifiche,seunatransazionechestavamodificandoglistessidaUaborUsce.sievitailproblemadelLOSTUPDATE

Sistemadilocking

Page 22: E6 Concorre

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

BasidiDa(‐Controllodiconcorrenza23

LIVELLO2

UnatransazioneTchiedeunlocksulrecorddaleggere,quindinonleggemaidaUuncommiGed.RilasciaillockdopolaleGuraeprimadiconcluderelapropriaoperazionesulDB.Peròinunsecondotempopuòtrovareilrecordcambiatoperlacausa2),mentrenonsipuòverificarela1).

LIVELLO3

Unatransazioneponelocksutu\irecordcheleggeelirilasciasolodopoaverterminato.Nonsiverificanomainè1),nè2).

Sistemadilocking

Page 24: E6 Concorre

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

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

Insorgenzadeldeadlock

BasidiDa(‐Controllodiconcorrenza26

T1esegueW‐LOCK(D1)T2esegueW‐LOCK(D2)

T1aGendeunarisorsacontrollatadaT2T2aGendeunarisorsacontrollatadaT1

T1 T2

Page 27: E6 Concorre

Esempidideadlock

BasidiDa(‐Controllodiconcorrenza27

T1 T2 T1 T2 T3

Page 28: E6 Concorre

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).