Re: Re: [pgsql-ru-general] Дедлоки и FOREIGN (pg9.1.2)

From: "Dmitry E(dot) Oboukhov" <unera(at)debian(dot)org>
To: pgsql-ru-general(at)postgresql(dot)org
Subject: Re: Re: [pgsql-ru-general] Дедлоки и FOREIGN (pg9.1.2)
Date: 2012-12-21 10:20:44
Message-ID: 20121221102044.GA8447@vdsl.uvw.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-ru-general

>> orders_logs - имеет FOREIGN на users и orders соответственно (uid,
>> oid)
>>
>> Кронскрипт иногда юзерам обновляет статусы
>>
>> UPDATE
>> users
>> SET
>> status = что-то там,
>> time = NOW()
>> WHERE
>> id = что-то там
>>
>> а в orders_logs иногда пишутся события:
>>
>> INSERT INTO
>> "orders_logs"
>>
>> ("uid", "oid", "time", "event")
>> VALUES
>> (123, 2345, NOW(), что-то там)
>>
>> и вот обновление статуса у юзера изредка встает в дедлок с инсертом в
>> orders_logs.
>>
>> как такой дедлок можно вылечить?

> Судя по всему инсерты идут пачками в транзакции, так?

> Можно ли отказаться от транзакции, делая отдельные инсерты?

инсерты идут по одному.

но вот дедлочится тот (первый) инсерт который идет в одной транзакции
с вставкой в ордер.

собственно вставка выглядит так:

BEGIN TRANSACTION;

INSERT INTO orders ... RETURNING "id"
INSERT INTO orders_logs
oid = вставленый_выше id,
uid = определенный вне транзакции uid,
comment = 'Заказ такой-то создан'

COMMIT

таблица orders не имеет ссылок ни на какие другие таблицы.
таблица orders_logs имеет ссылки на users и orders

дедлочится это с запросом (вне транзакции)

UPDATE
users
SET
status = что-то
WHERE
id = тот же юзер что и выше

связь я улавливаю, но природу дедлока понять не могу :)

--

. ''`. Dmitry E. Oboukhov
: :’ : email: unera(at)debian(dot)org jabber://UNera(at)uvw(dot)ru
`. `~’ GPGKey: 1024D / F8E26537 2006-11-21
`- 1B23 D4F8 8EC0 D902 0555 E438 AB8C 00CF F8E2 6537

In response to

Responses

Browse pgsql-ru-general by date

  From Date Subject
Next Message Alexey Klyukin 2012-12-21 14:31:02 Re: [pgsql-ru-general] [pgsql-ru-general] Дедлоки и FOREIGN (pg9.1.2)
Previous Message Sergey Konoplev 2012-12-21 00:31:10 Re: [pgsql-ru-general] Дедлоки и FOREIGN (pg9.1.2)