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