29
Informatika saila Dpto. Informática Datu Baseak 1

08 - Transakzioak

Embed Size (px)

DESCRIPTION

Oracle Euskaraz

Citation preview

Page 1: 08 - Transakzioak

Informatika sailaDpto. InformáticaDatu Baseak

1

Page 2: 08 - Transakzioak

Informatika sailaDpto. InformáticaDatu Baseak

2

Datuak gehitzeko, ezabatzeko, irakurtzeko eta aldarazteko SQL instrukzioen sekuentziak osatutako lanerako Unitate Logikoa da. Egoera trinko batetik amaierako beste egoera trinko batera pasatzen ditu datuak.

COMMIT transakzioa balidatu ROLLBACK transmisioa utzi

Huts eginez gero, egoera trinkora itzuli beharko du sistemak.

Transakzioak

Page 3: 08 - Transakzioak

Informatika sailaDpto. InformáticaDatu Baseak

3

Transakzioak

Adb.: 10.000 euroko (1.663.860) transferentzia A diru-kontutik B diru-kontura.

Urratsak:1. A-ren saldoa irakurri.2. A-ren saldoa: = ASaldoa – 10.0003. Saldo berria aldarazi A diru-kontuan.4. B-ren saldoa irakurri.5. B-ren saldoa = BSaldoa + 10.0006. B diru-kontuaren saldoa aldarazi.Sei urratsak behar bezala burutu badira, COMMIT egingo dut. Bestela, ROLLBACK.

Huts eginez gero, egoera trinkora itzuli beharko du sistemak.

Page 4: 08 - Transakzioak

Informatika sailaDpto. InformáticaDatu Baseak

4

PL/SQL-ren adibidea: Euro-kopurua transferitu 1 diru-kontutik 2 diru-kontura

Honako ekintza hauek dira transakzio hori osatzen dutenak:create or replace procedure transferentzia (idktakendu IN numbere, idktaerantsi IN number, kopurua IN number) is sal NUMBER ;BEGIN SELECT SALDOA into sal FROM KTA WHERE IDKTA=idktakendu; sal:=sal-kopurua; DBMS_OUTPUT.PUT_LINE(to_char(sal)); update KTA set saldoa=sal where idkta=idktakendu; SELECT SALDOA into sal FROM KTA WHERE IDKTA=idktaerantsi; sal:=sal+cantidad; DBMS_OUTPUT.PUT_LINE(to_char(sal)); update CTA set saldoa=sal where idkta=idktaerantsi; commit;EXCEPTION when others then

rollback;end;/

Transakzioak

Page 5: 08 - Transakzioak

Informatika sailaDpto. InformáticaDatu Baseak

5

Adb.: VB.NET: Euro-kopurua transferitu 1 diru-kontutik 2 diru-kontura

Dim trnNew As System.Data.OleDb.OleDbTransactionMe.cn.Open()trnNew=Me.cn.BeginTransaction()Try ...Eguneratu Kta A y la Kta B trnNew.Commit()Catch aka As System.Data.Oledb.OleDbException trnNew.Rollback() Finally Me.cn.Close()End Try

Transakzioak

Page 6: 08 - Transakzioak

Informatika sailaDpto. InformáticaDatu Baseak

6

Transakzioak: Propietateak(ACID)

Atomizitatea: Edo osorik egiten da, edo ez da egiten.

Trinkotasunaren Artapena (Compactness): Egoera trinko batetik beste egoera trinko batera pasako da.

Isolamendua (Isolation): Transakzioek ez dituzte aldaketak ikusgai erakutsiko baliozko ez diren bitartean.

Iraunkortasuna (Durability): Transakzioak aldaketak egin eta baliozko bihurtuta dauzkanean, elkarren segidako hutsak gertaturik ere, datuok ez dira galduko.

Page 7: 08 - Transakzioak

Informatika sailaDpto. InformáticaDatu Baseak

7

Transakzioen aldiberekotasuna

Erabiltze anitzentzako sistemetan beharrezkoa da aldibereko-tasuna kontrolatuko duen mekanismoa izatea.

Aldi berean jardutearen ondoriozko trinkotasun-gabezia garrantzitsuak gerta daitezke.

Hona hemen arazo horietako zenbait:

• Galdutako eragiketa

• Irakurketazikina

• Laburpen okerra

Page 8: 08 - Transakzioak

Informatika sailaDpto. InformáticaDatu Baseak

8

Aldiberekotasuna: Galdutako eragiketa

kopiakop elementua_irakurri eta n1ean gorde

n1:=n1+1

n1-en balioaz eguneratuko du kopiakop

T1

kopiakop elementua_irakurri eta n2an gorde

n2:=n2+1

n2-ren balioaz eguneratuko du kopiakop

T2

Denbora

kopiakop = 2 eta kopiakop = 3 izan beharko luke

Liburutegi-sistemetan, mailegurako erabilgarri dauden kopien kopurua biltzeko eremua izaten da.Liburuaren ale bat itzultzen den bakoitzean gora egingo du, ale bat, eremu horrek, eta ale bat mailegutan uzten den bakoitzean, berriz, ale bat behera egingo du. Liburuzain zenbait izan eta 23456 zenbakidun liburuaren bi ale mailegatuz gero, baliteke une berean ekitea eguneratzeari. Liburuak izeneko taularen kopiakop zutabean dago kopien kopurua, eta hasierako balioa 1 baldin bada eta iliburua, bere aldetik, 23456.

Page 9: 08 - Transakzioak

Informatika sailaDpto. InformáticaDatu Baseak

9

Aldiberekotasuna: Irakurketa zikina

(X) elementua_irakurri

Transakzioak huts egin du eta X antzinako baliora itzuli beharra dago.

X := X - N(X) elementua idatzi

T1

X=80, N = 5, M = 10

(X) elementua_irakurri X := X + M(X) elementua_idatzi

T2

Denbora

X=8590 izan beharko luke

Baliteke transakzio honek Xren balio okerra erabilita eragiketak egin izana.

Page 10: 08 - Transakzioak

Informatika sailaDpto. InformáticaDatu Baseak

10

Aldiberekotasuna: Laburpen Okerra

(X) elementua_irakurri

(Y) elementua_irakurri

(Y) elementua_idatzi

X := X - N

Y := Y + N

(X) elementua_idatzi

T1

(X) elementua_irakurri

batuketa := batuketa + x

(Y) elementua_irakurri

batuketa := batuketa + Y

T2

Denbora

Batuketa :=0(A) elementua_irakurri batuketa := batuketa + a

Beste transakzioa eguneratu ondoren hartu da kontuan X; Y, ordea, eguneratu aurretik hartu da kontuan. Laburpen okerra da.

Page 11: 08 - Transakzioak

Informatika sailaDpto. InformáticaDatu Baseak

11

Aldiberekotasuna kontrolatzeko teknikak

Aldiberekotasuna kontrolatzeko teknikak

Ezkorrak

Baikorrak

Blokeoak

Time Stamping-a

Page 12: 08 - Transakzioak

Informatika sailaDpto. InformáticaDatu Baseak

12

Aldiberekotasuna kontrolatzeko teknikak: Blokeoak

Blokeo-motak:

a) Esklusiboak: Transakzio batek mota honetako blokeoari eusten dionean, beste ezein transakziok ez dauka blokeaturiko objektura iristerik, ez eta blokeatzerik, eutsita zeukan transakzioak askatzen ez duen bitartean. Eguneratu nahi denean erabiltzen da.

b) Partekatua: Transakzio batek era honetako blokeoa gauzatzen duenean, beste transakzio batzuek ere badaukate, partekatutako blokean, eta ez esklusiboan, objektuari eusterik. Datuak eguneratu beharrik izan ez, baina datuei buruzko kontsultak egin bitartean aldarazpenik gauza ez dadin nahi denean erabiliko da mota honetako blokeoa.

Page 13: 08 - Transakzioak

Informatika sailaDpto. InformáticaDatu Baseak

13

Blokeo-teknikek Bi fasetan darabilte algoritmoa:

Bi Fasetako algoritmoak bi izan daitezke:

Bi Fasetako Blokeo Artatzailea: Hasi aurretik, transakzioa saiatuko da beharrezkoak diren elementu guztiak blokeatzen. Hori egiterik ez badauka, ez du bat ere blokeatuko eta zain geratuko da erreserbak noiz egin ahal izango. Dead Lock delakoa saihestuko da teknika honen bidez. Hala ere, ia bideraezina da.

Bi Fasetako Blokeo Zorrotza: Transakzioak ez du elementuetako bat ere askatuko baieztatu edo abortatu arte (Commit edo Rollback). Erabili beharreko elementua baino ez du blokeatuko. Kasu honetan, bi transakzio edo gehiago zain egon daitezke, aurrera egin aurretik, besteak objekturen bat noiz askatuko (deadlock).

Aldiberekotasuna kontrolatzeko teknikak: Blokeoak

Page 14: 08 - Transakzioak

Informatika sailaDpto. InformáticaDatu Baseak

14

Deadlock

*********BESARKADA HILGARRIA

SESION 1: UPDATE KTA SET SALDOA=10000 WHERE IDKTA=1;

SESION 2: UPDATE KTA SET SALDOA=10000 WHERE IDKTA=2;

SESION 1: UPDATE KTA SET SALDOA=20000 WHERE IDKTA=2;

SESION 2: UPDATE KTA SET SALDOA=20000 WHERE IDKTA=1;

****Besarkada hilgarria gertatuko da

1. SAIOA: COMMIT;

2. SAIOA: COMMIT;

Bi transakzio zain daudenean besteak elementu baten gaineko blokeoa noiz askatuko:

Aldiberekotasuna kontrolatzeko teknikak: Blokeoak

Page 15: 08 - Transakzioak

Informatika sailaDpto. InformáticaDatu Baseak

15

Zein irtenbide eman Deadlock bati

Deadlock-a prebenitzeaBehar dituzten elementu guztiak aldez aurretik blokearaziko dizkie transakzioei.

Elementu horiek guztiak lortzerik izan ezean, ez du bat ere blokeatuko eta zain geratuko da berriz saiatu arte.

Deadlock-ari antzemateaAldian-aldian kontrolatuko da ea deadlock-ik izan den. Biktima diren transakzioak aukeratu eta, deadlock-a desagertu arte, transakzio horiek desegitea da irtenbidea. DBKS bakoitzak politika batzuk izango ditu biktimak hautatzeko.

Aldiberekotasuna kontrolatzeko teknikak: Blokeoak

Page 16: 08 - Transakzioak

Informatika sailaDpto. InformáticaDatu Baseak

16

Blokeoaren Ale-egitura

Honakoak blokea ditzakete DBKSek:

• Tuplo bateko zutabe bat • Erregistro bat (tupla) • Taula bat • Guztirako Datu Basea

Horri deritzo blokeoaren ale-egitura.Oso lodia den ale-egitura izanez gero, blokeo-kopuru txikiagoa kudeatuko da, baina transakzio askoren burutzapena atzeratu egingo du. Oso ale-egitura fina izanez gero, berriz, handiagoa izango da aldiberekotasuna, baina blokeo-kopuru handiagoa kudeatu beharra izango da.Nabaria da kontu honek sistemen errendimenduan daukan eragina.Tuplako edo erregistroko ale-egitura maila daukate Oracle-k eta Sql Server-ek.

Aldiberekotasuna kontrolatzeko teknikak: Blokeoak

Page 17: 08 - Transakzioak

Informatika sailaDpto. InformáticaDatu Baseak

17

Transakzio bakoitzari denbora-marka (Time-Stamp) esleitzean datza eta, horrela, T1 T2 baino arinago iritsiko da granulu komunetara. Granulu bat irakurtzean, gazteago den beste batek irakurria edo grabatua izan den egiaztatuko da. Horretarako, bi denbora-marka lotuko zaio elementu edo granulu bakoitzari:

MT_Irakurketa (X): Elementua irakurri duten transakzio guztien denbora-markarik altuena.

MT_Idazketa (X): Elementua idatzi duten transakzio guztien denbora-markarik altuena.

Teknika honen bidez ez da blokeorik izango. Transakzioak ordenatu egingo ditu. Atzeratu egingo dira transakzioak.

Aldiberekotasuna kontrolatzeko teknikak: Denbora-marka

Page 18: 08 - Transakzioak

Informatika sailaDpto. InformáticaDatu Baseak

18

T transakzioari esker idatzi_elementua (X) eragiketa gauzatuko da.• Baldin eta MT_irakurketa (X) > MT (T), T abortatu eta desegin.• Bestela exekutatu idatzi_elementua (X) eta MT_idazketa (X):= MT (T)

T transakzioak irakurri_elementua (X) eragiketa gauzatuko du• Baldin eta MT_idazketa (X) > MT (T), T abortatu eta desegin.• Bestela exekutatu irakurri_elementua (X) eta MT_irakurketa (X):= MT

(T)

T deseginez gero, desegin egingo dira T-ren eguneratzeak erabilitako transakzio guztiak, eta horrela gertatuko da kaskadan.

Aldiberekotasuna kontrolatzeko teknikak: Denbora-marka

Page 19: 08 - Transakzioak

Informatika sailaDpto. InformáticaDatu Baseak

19

Aske iritsiko dira transakzioak elementuetara, eta bukatu aurretik zehaztu ahal izango da interferentziarik izan den.

Transakzioak 3 fasekotzat hartuko dituzte mota honetako teknikek:

• Irakurketa: Transakzioek objektuen kopia pribatuen gaineko eragiketak gauzatuko ditzute (transakzioaren bidez baino ezin euts dakieke).

• Balidatzea: Transakzio batek aldarazitako objektu-multzoa, transakzio horren irakurketa-fasean balidazioa egin duen besteren batek aldarazitako objektuen multzoarekin gainjartzen den egiaztatzeko.

• Grabaketa: Interferentziarik detektatu ezean, aldarazpenak grabatu egingo dira, eta objektuen bertsio pribatuak bertsio eguneratu bilakaraziko.

Aldiberekotasuna kontrolatzeko teknikak: Baikorrak

Page 20: 08 - Transakzioak

Informatika sailaDpto. InformáticaDatu Baseak

20

Huts fisikoa, logikoa edo gizakiak eragindakoa izanez gero, DBKS-k huts horiek prebenitzeko, detektatzeko eta zuzentzeko mekanismoak eman behar ditu.Transakzioak baliogabetu eta berreskuratu ahal izateko, honakoa erabiliko da:

• Bitakora

Berreskuratzea

Page 21: 08 - Transakzioak

Informatika sailaDpto. InformáticaDatu Baseak

21

Bitakora (egunkaria): Transakzioen DB-aren gainean gauzatzen dituzten ekintzak biltzen ditu bere baitara. Hutsa gertatuz gero, DB--aren berreskuratzea burutzeko balio du.

Sarrerak:

• Hasiera, T• Idatzi, T, X, lehenagoko balioa, ondorengo balioa• Irakurri, T, X• Baieztatu, T• Abortatu, T

Berreskuratzea: Bitakora

Page 22: 08 - Transakzioak

Informatika sailaDpto. InformáticaDatu Baseak

22

T1

irakurri (A)

idatzi (A)baieztatu

T2

irakurri (D)irakurri(B)

idatzi (A)baieztatu

Bitakora

Hasiera T1

Irakurri T1, AHasiera T2

irakurri T2, Dirakurri T2, B

idatzi T1, A, x, ybaieztatu T1

idatzi T2, A, x, ybaieztatu T2

Berreskuratzea: Bitakora

Page 23: 08 - Transakzioak

Informatika sailaDpto. InformáticaDatu Baseak

23

Diskoko datuak noiz aldatzen diren kontuan hartuta, ezberdin berreskuratuko dira. Bi motako eguneratzeak daude:

Berehalako Idazketa: Datu bat aldarazten denean, fisikoki idazten da datu hori diskoan.

Idazketa Diferitua: Datuen idazketa fisikoa atzeratu egingo da diskorako irisgarritasuna optimizatzeko. Aldian behin gertatuko da idazketa (CheckPoint).

Berreskuratzea: Berehalako/Diferituriko Idazketa

Page 24: 08 - Transakzioak

Informatika sailaDpto. InformáticaDatu Baseak

24

Hutsa gertatzen denean, honako hauek egin beharko dira:• Balidatu gabeko transakzio guztiek eragindako aldaketa guztiak desegin.

• Ezer ez da Berregin behar, eguneratze guztiak diskoan baitaude.

T1

T2

T3

Sistemaren hutsa

DenboraCommit

Ez berregin

Ez berregin

Desegin

Berreskuratzea: Berehalako Idazketa Desegin/Ez Berregin

Page 25: 08 - Transakzioak

Informatika sailaDpto. InformáticaDatu Baseak

25

Adb.:T3

T3

Sistemaren hutsa

Denbora

Desegin BD

X=3

BD

X=6

BD

X=9

T3 transakzioan gauzatzen den ekintza bakoitzeko, honako hau idatziko da Bitakoran: Hasiera, T3 T3,x,3,6T3,x,6,9Hortaz, hutsa gertatu ondoren, egoera trinkora itzuli beharra dago, datuak balidatu gabe daudelako eta transakzioa oraindik amaitu ez delako. Datuak desegiteko erabiliko da bitakora.

Berreskuratzea: Berehalako Idazketa Desegin/Ez Berregin

Page 26: 08 - Transakzioak

Informatika sailaDpto. InformáticaDatu Baseak

26

Hutsa gertatzen denean, azken checkpoint-az geroztik balidatutako transakzio guztiak berregin beharko dira.Ez da ezer desegin behar, izan ere, ez baita DB-an eguneratu.

T1

T2

T3

Sistemaren hutsa

DenboraCommit

Berregin

Azken Checkpoint-a

Transakzioa baliogabetu

Berreskuratzea: Idazketa Diferitua Desegin/Ez Berregin

Page 27: 08 - Transakzioak

Informatika sailaDpto. InformáticaDatu Baseak

27

Adb.:T3

T3

Sistemaren hutsa

Denbora

(T3 baliogabetu)BD

X=3

Memoria

X=6

Memoria

X=9

Hutsa gertatu ondoren, egoera trinkora itzuli beharra dago; izan ere, datuak balidatu gabe daude eta transakzioa ez da oraindik amaitu. Ez da ezer egin behar T3 baliogabetzeko, Datu Basean (diskoan) ez baita ezer kopiatu.

Berreskuratzea: Idazketa Diferitua Desegin/Ez Berregin

Page 28: 08 - Transakzioak

Informatika sailaDpto. InformáticaDatu Baseak

28

Adb.:T2

T2

Sistemaren hutsa

Denbora

(T2 berregingo du)

BD

X=3

Memoria

X=6

Memoria

X=9

Idazketa diferituan, transakzioan eragiten diren aldaketak bitakoran kopiatuko dira. Horregatik, hutsa gertatzen denean, DB trinkoa izan dadin, T2-ren egoera balidatura joan beharko du, bitakorako informazioa berreskuratuz.

Checkpoint-a Commit T2

BD

X=6

bitakoraHasiera T2

T2,x,3,6

bitakoraHasiera T2

T2,x,3,6T2,x,6,9

T2 balidatuko duT2ren amaiera

Berreskuratzea: Idazketa Diferitua Desegin/Ez Berregin

Page 29: 08 - Transakzioak

Informatika sailaDpto. InformáticaDatu Baseak

29

Aldian behin, DB osoa eta bitakora biltegiratze-bitarteko ekonomiko batean kopiatuko dira.

Huts katastrofikoa gertatuz gero, BD-ren azken kopia osoa berreskura daiteke eta bitakoraren azken transakzio balidatuak berregin.

TT

T

T

T

TT T

T

T

T

Huts katastrofikoa

BD-ren kopia osoa

Checkpoint-a

bitakora bitakora

Berreskuratzea: Huts katastrofikoak