Oracle a zamky a transakce

Honza Pazdziora adelton na informatics.muni.cz
Čtvrtek Říjen 7 14:17:24 CEST 1999


> 
> Kdyz vim, ze budu menit opravdu celou tabulku tak proc ne. Klidne si ji
> zamknu celou. Pokud to neni cela tabulka a umim napsat
> DECLARE CURSOR c AS SELECT ... FOR UPDATE tak je to taky v pohode. A vy
> navrhujete jeste obecneji to udelat tak:
> zamknu celou tabulku;
> prochazim vse a do pomocne struktury si ukladam ty, ktere budu menit;
> pak to muzu odemnkout;
> jeden po druhem je menim.
> 
> Dosahl jste teda toho, ze prideleni vasich specialnich zamku je
> serializovane a nedojde ke kolizi ruznych session. Z tohoto pohledu vam to
> pomuze. Eliminoval jste jisty zdroj problemu (deadlocku). Prakticky takovou
> techniku muzete pouzit v Oraclu i v mySQL. 

No, mne spis jde o to, ze v case, nez si udelam ten seznam zamku (resp.
na Oraclu, kde je ten zamek primo na datech, tak nez ty zamky vytvorim),
tak to stejne musim mit serializovane pres cely ten objekt (tabulku),
protoze nevim, kam sahnu. Nebo-li: on to ten Oracle dela jinak? Jakoze
se vyhne zamknuti cele tabulky? Na tu dobu, kdy to zamyka?

> Spousta problemu kvuli kterych se transakce pouzivaji vam ale zustala k
> naprogramovani. 

Jo, to samozrejme. Ja to ani programovat neminim ;-))

[...]

> > 					update table set neco = ? where id =
> > 2
> > 				/* vysledek je deadlock a spadena transakce
> > 				v session 1 (alespon v Oraclu) */
> > 
> > Tohle Vam u MySQL nenastane protoze po provedeni kazdeho prikazu je
> > "transakce" commitnuta. Cili bylo by tam na neco zamykani po
> > zaznamech? Kdyz by to byl zamek pouze na dobu provedeni toho SQL
> > prikazu (ktera ano, muze byt dlouha), nikoli na dobu mezi SQL
> > prikazy?
> > 
> Predpokladam, ze posledni prikaz mel byt ...id = 1

Jo, jiste, mea culpa.

> Pak opravdu dojde k deadlocku, ale jeste ne k padu transakce. I kdyz
> rollback pravdepodobne bude dalsi prikaz.

Ano. Tohle je spadeny prikaz, ktery nemuze svevolne rollbacknout
transakci, ale semantika te transakce uz je porusena takovym zpusobem,
ze asi nebude nic jineho, nez ji rollbacknout.

------------------------------------------------------------------------
 Honza Pazdziora | adelton na fi.muni.cz | http://www.fi.muni.cz/~adelton/
 .project: Perl, DBI, Oracle, MySQL, auth. WWW servers, MTB, Spain, ...
------------------------------------------------------------------------


Další informace o konferenci Databases