Частичное "зависание" запроса

Доброе время суток!

Делаю запросы к БД (v 9.1) из PHP 5.2.12. Всё работает нормально. Но недавно заметил странность:

если выполняется "тяжёлый" запрос на обновление/вставку данных в таблицу A, то некоторые запросы к таблице B становятся в "очередь" и ожидают завершение "тяжёлого запроса".

Пример запроса к таблице B:

SELECT uid, name_pers AS name, uid_d_status AS STATUS
FROM person 
WHERE ts_del IS NULL AND login = '$log' AND password = '$pass'

Таблицы А и B имеют внешнюю связь:

  CONSTRAINT A_fk FOREIGN KEY (uid_ins)
    REFERENCES public.person(uid)
    ON DELETE NO ACTION
    ON UPDATE CASCADE
    NOT DEFERRABLE, 
  CONSTRAINT A_fk1 FOREIGN KEY (uid_upd)
    REFERENCES public.person(uid)
    ON DELETE NO ACTION
    ON UPDATE CASCADE
    NOT DEFERRABLE, 

особенно странно, что запросы на некоторые значения '$log' и '$pass' отрабатывают нормально, а некоторые "ждут". "Ждут" те, на которые имеется внешняя связь в A.

Подскажите, пожалуйста, куда копать или в чём я не прав.

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Не владею темой достаточно

Не владею темой достаточно хорошо. Могу лишь посоветовать проштудировать вот этот раздел:
http://postgresql.ru.net/manual/mvcc.html
В нём подробно (но к сожалению на английском) расписываются виды блокировок, возникающих при работе PostgreSQL.
Судя по описанной вами ситуации, у вас срабатывает какой-то вид блокировки

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2023