postgres a lockovanie

Zakkr zakkr na zf.jcu.cz
Čtvrtek Září 16 09:19:01 CEST 1999



On Wed, 15 Sep 1999, Pavel PaJaSoft Janousek wrote:

> > > Jasne, ja si take myslim, ze je to lepsi - napr. chyba v triggeru by poslala
> > > do pr... cely threadovy server u forku pojde jen decko...
> > 
> > Coz zase na druhou stranu muze zpusobit dead-lock tabulky nemylim-li se.
> 
> 	Ovsem ovlivni ten deadlock (pokud neni delano lockovani a IMHO neni pro
> transakce vubec treba, muze mi nekdo rici priklad dotazu~, ktere nelze
> resit pouze pomoci transakci a le potrebuju i LOCK na tabulku, cast
> tabulky, zaznam..?) jine uzivatele? 

Aby tadle konference nebyla je nekonecnej war PQ/MySQL tak k tomu LOCKU:

Je pravda, ze pokud operujete nad jednou tabulko tak v trans. je nejaky LOCK
na nic, ale..
	.. mam deset tabulek, kazda s tabulek patri jednomu uzivateli, ktery
ma prava RW, k tabulkam ostatnich muze jen R. Kazda ta tabulka ma trigger,
ktery zajistuje aby urcite id (napr. rodne cislo) v tabulce, bylo unikatni 
nejen v dane tabulce, ale i v tabulkach ostatnich. Bohuzel neni mozne (nebo
obtizne) zjistit jmena ostatnich deviti tabulek, ale vsech tech deset
tabulek je zdedenych (INHERITS) od jedne - je tedy mozne udelat 
select na tu povodni od ktere se dedi a dostat data ze vsech tabulek.
Bohuzel v soucasnem PQ:  "SELECT FOR UPDATE is not supported for inherit
queries" tak a jak zjistite v tom triggeru neni-li to id v nejake jine
tabulce pouzite ?
	Reseni je udelat nejakou prazdnou jedenactou tabulku a vsechny ty
triggery pokud se spusti a usoudi, ze je to nutne tak tuto tabulku LOCKnou.
Pokud tato tabulka bude zamcena tak trigger ceka a tedy v tomdle systemu se
v dany okamzik prideluje jen jedno unikatni id..

							Zakkr
 



Další informace o konferenci Linux