From: | Миша Тюрин <tmihail(at)bk(dot)ru> |
---|---|
To: | Dmitry E(dot) Oboukhov <unera(at)debian(dot)org> |
Cc: | pgsql-ru-general(at)postgresql(dot)org |
Subject: | Re: [pgsql-ru-general] борьба с дедлоками |
Date: | 2013-04-29 03:54:55 |
Message-ID: | 1367207695.61267644@f224.mail.ru |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-ru-general |
Сортировка поможет.
Понедельник, 29 апреля 2013, 2:07 +04:00 от "Dmitry E. Oboukhov" <unera(at)debian(dot)org>:
>
имеется табличка
objects: uuid - status - x - y - ...
далее по двум путям в эту табличку приходят статусы объектов (один
путь), а по другому пути приходят координаты объектов (второй путь)
соответственно поскольку оба потока довольно большие, то оба процесса
обновляют (они и получают) табличку пакетами.
то есть формируется некий запрос вида
WITH "list" AS (
SELECT
"column1" AS "uuid",
"column2" AS "status"
FROM (
VALUES
( 'uuid1', 'status1' ),
( 'uuid2', 'status2' ),
...
) t
)
UPDATE
"objects"
SET
"status" = "list"."status"
FROM
"list"
WHERE
"list"."uuid" = "objects"."uuid"
аналогичный запрос составляется и по приходящим координатам (x, y).
Далее. Периодически возникают дедлоки. и оно понятно почему:
один процесс идет и меняет стасусы объектам 1 - 2 - 3 - 4
а второй процесс меняет координаты объектам 4 - 3 - 2 - 1
и когда оба доходят до третьего шага у обоих получаются залочены те
объекты на которые соседнему процессу надо получить блокировку.
вопрос: как избавиться от дедлока но сохранить пакетные запросы?
по идее если бы все процессы всегда обновляли бы записи строго в
одинаковом порядке (всегда 1-2-3-4) то, очевидно, дедлока бы не было.
но можно ли обеспечить это при групповом запросе?
поможет ли тут сортировка в [псевдо]таблице "list"?
--
. ''`. 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 | Dmitry E. Oboukhov | 2013-05-07 22:34:43 | Re: Re: [pgsql-ru-general] борьба с дедлоками |
Previous Message | Dmitry E. Oboukhov | 2013-04-28 22:07:18 | борьба с дедлоками |