«« ( Date ) »» // «« ( Thread ) »» // nastava - 2003

Re: evo roka iz baza

by Milan Stanojevic
subota, 22. februar 2003 - 12:03.

Mislim da se nismo najbolje razumeli.
Ovo sto sad pisem je otprilike kako sam ja shvatio da to profesor radi, a cini mi se da i ti slicno radis u onim rokovima.

U pratecoj tabeli (PT) se inicijalizuje pointer tek po prvom citanju i to na trenutni blok za odgovarajuci podatak. Tekuca tabela (TT) je na pocetku ista kao PT.

U slucaju koji si naveo kada T2 uradi read, pokazivaci ce se postaviti na novu vrednost A.

Ali ako imas sledeci slucaj: T1:Read(A), T2:Read(A), ....., T1:Write(A), T2:Write(A), TT1 i TT2 ce pokazivati na razlicite blokove.

Milan

----- Original Message -----
From: Damjan S. Vujnovic
To: NASTAVA
Sent: Saturday, February 22, 2003 11:00 AM
Subject: Re: [nastava] evo roka iz baza


Damjan:
Posle svakog Write(X,xi). I ažuriraš ne samo teku?u tabelu trenutne
transakcije, ve? i svih ostalih transakcija koje koriste blok na koji se
odnosi Write(X,xi).

Milan:
E vidis Bojovic je danas na zalbama rekao da se azurira blok samo tekuce
transakcije. Meni je to nekako logicnije, jer kako ce inace jedna
transakcija da menja pointere drugih, odnosno malo bi bilo komplikovano sve
to izvesti.

Damjan:
Molim!? Ovaj primer ti je online i iz glave, ali koliko sada vidim,
poslužiće svrsi. Podaci A i B su u istom bloku, evo ti i redosled
izvršavanja (ekvivalentan je sa T1->T2), a ti vidi šta će biti ako posle
T1:Write(A), ne ažuriraš i TT1 i TT2 (šta će pročitati, a šta treba da
pročita T2:Read(A))...

|--------|--------|
| T1 | T2 |
|--------|--------|
| |Read(B) |
| |B:=B+3 |
| |Write(B)|
|Read(A) | |
|A:=A+1 | |
|Write(A)| |
| |Read(A) |
| |A:=A*2 |
| |Write(A)|
|Commit | |
| |Commit |
|--------|--------|

Jedino što meni pada na pamet je da se ja i ti nismo razumeli. Ja kažem da
se ažuriraju TT od svih transakcija, a ti govoriš o blokovima (i ja isto
kažem da se ažurira samo jedan blok: jedan blok, ali sve TT koje imaju
pokazivač na taj blok).

Poz,
DSV