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