Postgresql deadlocks

Tomas Vondra tv na fuzzy.cz
Sobota Březen 3 01:17:28 CET 2012


On 2.3.2012 22:55, tomas.krbec na gmail.com wrote:
> Zdravím,
> 
> ještě mne napadá, když vidím ten log. Říkáte, že se vyberou 2-3 záznamy
> a ty se potom updatují. Samozřejmě neznám ten kód, ale je nutné to v
> transakci updatovat řádek po řádku?
> Nedal by se použít jeden update?
> Něco jako:
> 
> UPDATE "advert_advert" SET "views" =
> "advert_advert"."views" + 1 WHERE "advert_advert"."id" in (id1, id2, id3)

Ale to bude mít úplně stejný problém protože nedokážete zajistit v jakém
pořadí je databáze skutečně zamkne ... Bude se to lišit podle toho v
jakém pořadí je najde na disku (což se mění právě vlivem UPDATE).

Pokud se chcete vyhnout deadlockům tak to skutečně musíte načíst a
updatovat pěkně jeden po druhém ...

T.


Další informace o konferenci Linux