Postgresql deadlocks
Martin Tiršel
lk na blackpage.eu
Úterý Březen 6 14:45:28 CET 2012
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?
# nahodne nacitam 3 inzeraty
adverts = list(Advert.objects.all().order_by('?')[0:3])
# zotriedim ich podla id
adverts.sort(key=lambda x: x.id)
# navysujem views stlpec zotriedenych inzeratov
for advert in adverts:
Advert.objects.filter(
id=advert.id
).update(
views=models.F('views') + 1
)
# spracovanie sablony ~50ms
...
# commit
...
--
S pozdravom,
Martin Tiršel
Další informace o konferenci Linux