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
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) |