Postgresql deadlocks

tomas.krbec na gmail.com tomas.krbec na gmail.com
Pátek Březen 2 22:55:46 CET 2012


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)

Tom


Dne uživatel Martin Tiršel <lk na blackpage.eu> napsal:
> > Vie ma niekto nasmerovat, na co by som sa mal zamerat, pripadne skusit

> upravit? Logy vyzeraju nejako takto:



> 2012-03-01 14:52:27 CET ERROR: deadlock detected

> 2012-03-01 14:52:27 CET DETAIL: Process 10372 waits for ShareLock on

> transaction 130251607; blocked by process 10370.

> Process 10370 waits for ShareLock on transaction 130251610; blocked

> by process 10372.

> Process 10372: UPDATE "advert_advert" SET "views" =

> "advert_advert"."views" + 1 WHERE "advert_advert"."id" = 1152

> Process 10370: UPDATE "advert_advert" SET "views" =

> "advert_advert"."views" + 1 WHERE "advert_advert"."id" = 1153

> 2012-03-01 14:52:27 CET HINT: See server log for query details.

> 2012-03-01 14:52:27 CET STATEMENT: UPDATE "advert_advert" SET "views" =

> "advert_advert"."views" + 1 WHERE "advert_advert"."id" = 1152





Další informace o konferenci Linux