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