Postgresql deadlocks [VYRIESENE]
Martin Tiršel
lk na blackpage.eu
Neděle Březen 11 23:26:58 CET 2012
On Tue, 06 Mar 2012 15:07:10 +0100, Tomas Vondra <tv na fuzzy.cz> wrote:
> On 6 Březen 2012, 14:45, Martin Tiršel wrote:
>> On Fri, 02 Mar 2012 20:14:26 +0100, Tomas Vondra <tv na fuzzy.cz> wrote:
>>
>>>
>>> Ne, tohle jde vyresit velmi jednoduse setridenim tech dat. Proste si je
>>> po nahodnem vyberu setridte napr. podle ID inzeratu (nebo cehokoliv
>>> dalsiho, dulezite je aby to ve vsech transakcich bylo stejne) a
>>> updatujte je v tomhle poradi. Deadlocky zmizi.
>>>
>>
>> Ak to spravne chapem, takyto postup by mal problem vyriesit?
>
> Ano. Tak nejak by to myslim melo fungovat bez deadlocku.
>
> T.
Vdaka, vyzera, ze zoradenie pomohlo, uz dva dni bezi vsetko v poriadku.
Len som to musel rozseknut na jednotlive updaty, pokial sa robi jeden
update pre viacero zaznamov, zoradenie nema ziadny vyznam:
2012-03-09 20:15:54 CET DETAIL: Process 4393 waits for ShareLock on
transaction 133306237; blocked by process 4339.
Process 4339 waits for ShareLock on transaction 133306289; blocked
by process 4393.
Process 4393: UPDATE "advert_advert" SET "views" =
"advert_advert"."views" + 1 WHERE "advert_advert"."id" IN (710, 812, 1112)
Process 4339: UPDATE "advert_advert" SET "views" =
"advert_advert"."views" + 1 WHERE "advert_advert"."id" IN (710, 812, 1112)
2012-03-09 20:15:54 CET HINT: See server log for query details.
2012-03-09 20:15:54 CET STATEMENT: UPDATE "advert_advert" SET "views" =
"advert_advert"."views" + 1 WHERE "advert_advert"."id" IN (710, 812, 1112)
--
S pozdravom,
Martin Tiršel
Další informace o konferenci Linux