Ako krenes tom uproscenom logikom onda optimisticki concurrency ni ne postoji jer ce se na kraju sve svesti na U, IX, X sekvencu lockova tokom update/insert komande i njihovu propagaciju tokom serijalizovane transakcije.
Problem nije u postojanju X lockova, problem je u pristupu resavanju svih mogucih concurrency problema na aplikativnom nivou kroz pesimisticne lokove i bahatom ponasanju i drzanju lockova proizvoljno vreme kao da je trenutna skripta jedina na svetu uz jos bahatije objasnjenje da nema toliko korisnika na sistemu. I ne znam zasto ocekujes drugacije obrazlozenje? Postoje aspekti u kojima nije moguce zaobici pesimitcne lokove (kao npr u two-way distributed transakcijama), ali za sve otalo postoji adekvatnije i skalabilnije resenje. Zasto je to vazno procitaj u drugoj poruci koju si otvorio, da se ne ponavljam na dva mesta.
Nisu samo klijenti koji aktivno azuriraju bazu smetnja, zapravo oni su retko kad smetnja jedni drugima jer obicno manjaju razlicite redove u tabelama i ne-eskalirani RID lock je sasvim dovoljan da ih razgranici i da im omoguci konkurentan rad.
Ono sto je mnogo veci problem su svi ostali korisnici sistema koji imaju potrebu da cesto citaju te tabele i redove, a citanje (SELECT) nije potpuno pasivna operacija narocito kad je SERIALIZABLE izolacija u pitanju. Da bi select vratio redove mora da uspostavi IS, S (intended share pa share) lock nad SVIM redovima koje vraca, i ako neki drugi proces(i) drze U, IX, X (update, intended exclusive, exclusive) lockove nad tim redovima select mora da ode u WAIT za SVAKI od njih (ili da eskalira lock u PAGE/TAB i opet da ceka na WAITu) i za svaki mora da se izlakta drzeci IS lock nad njima tako zaustavljajuci IU, U, IX, X pokusaje iz nadolazecih update operacija koje sad moraju da cekaju na U locku da se select kompletira. Ako usput naidju i drugi select-i i oni se ubace u zajednicko cekanje na S lock. Dakle sad ne govorimo o 100 korisnika koji rade paraleleni update, vec o 100 korisnika koji rade select nad opsegom u kome se nalaze X lockovi koje drze drugi procesi, a ti korisnici vise nisu samo pera, mika i zika, to su i automatski servisi i procesi koji rade pozadinske poslove, stampu, validaciju, itd, itd.
Jel sad jasnije zasto ne treba produzavati X lock duze nego sto je apsolutno neophodno i zasto se pesimistic lockovanje ne skalira lepo i zasto ga ne treba koristiti bez preke potrebe?
[mod: konsolidovao dve poruke u jednu]
[Ovu poruku je menjao mmix dana 12.02.2009. u 13:57 GMT+1]
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić