powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Мониторинг ожиданий
6 сообщений из 6, страница 1 из 1
Мониторинг ожиданий
    #39715013
rinace
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Версия сервера - PostgreSQL 9.6.2 on x86_64-pc-linux-gnu

Регулярно возникают блокировки.
Запрос
SELECT bl.pid AS blocked_pid,
a.usename AS blocked_user,
ka.query AS blocking_statement,
now() - ka.query_start AS blocking_duration,
kl.pid AS blocking_pid,
ka.usename AS blocking_user,
a.query AS blocked_statement,
now() - a.query_start AS blocked_duration
FROM pg_catalog.pg_locks bl
JOIN pg_catalog.pg_stat_activity a ON a.pid = bl.pid
JOIN pg_catalog.pg_locks kl ON kl.transactionid = bl.transactionid AND kl.pid != bl.pid
JOIN pg_catalog.pg_stat_activity ka ON ka.pid = kl.pid
WHERE NOT bl.granted;
Выдает строки вида (Обрезано для просторы восприятия )
Код: plaintext
1.
2.
3.
4.
5.
blocked_pid	blocking_statement	            blocking_pid	blocked_statement
13747	insert into partpriem.entity_lock 13586	insert into partpriem.entity_lock (classifier, 
13586	insert into partpriem.entity_lock 13747	insert into partpriem.entity_lock (classifier, 
13747	insert into partpriem.entity_lock 13554	insert into partpriem.entity_lock (classifier, 
13586	insert into partpriem.entity_lock 13554	insert into partpriem.entity_lock (classifier, 
Т.е. цикличная блокировка или deadlock
13747->13586->13747

Запрос SELECT pid,
usename,
application_name,
wait_event_type,
wait_event,
state,
query_start,
substring(query FROM 1 FOR 40)
FROM pg_stat_activity
ORDER BY 1;

выдает следующий результат (усечено для простоты чтения) :
Код: plaintext
1.
2.
3.
4.
pid	 application_name	  wait_event_type	   wait_event	state	                |                substring
13554 PostgreSQL JDBC Driver                                                        idle in transaction| insert into partpriem.entity_lock (cl
13586 PostgreSQL JDBC Driver  Lock	                   transactionid	active	        | insert into partpriem.entity_lock (cl
13747 PostgreSQL JDBC Driver  Lock	                   transactionid	active	        | insert into partpriem.entity_lock (cl

Вопросы
1) какую еще дополнительно информацию можно получить по ситуации ?
2) что может быть причиной возникновения блокировок кроме логики приложения ?
...
Рейтинг: 0 / 0
Мониторинг ожиданий
    #39715074
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rinaceВопросы
1) какую еще дополнительно информацию можно получить по ситуации ?
2) что может быть причиной возникновения блокировок кроме логики приложения ?

И опять вы. Может вы все таки возьмете специалиста в штат или консалтинг? ;)

1)включить лог запросов и посмотреть какие именно значения вставляются... и нет ли там попыток вставить дубликаты строк (по уникальному индексу)
2)учитывая что там лок на транзакцию а не что то внутреннее - ничего, это проблема работы приложения с базой.
3)вообще посмотреть у вас там именно долговременный лок или все таки deadlock возникает?

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru [/quot]
...
Рейтинг: 0 / 0
Мониторинг ожиданий
    #39715087
Фотография mefman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim BogukИ опять вы. Может вы все таки возьмете специалиста в штат или консалтинг? ;)

не в этой жизни )
...
Рейтинг: 0 / 0
Мониторинг ожиданий
    #39715096
rinace
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim BogukrinaceВопросы
1) какую еще дополнительно информацию можно получить по ситуации ?
2) что может быть причиной возникновения блокировок кроме логики приложения ?

И опять вы. Может вы все таки возьмете специалиста в штат или консалтинг? ;)

1)включить лог запросов и посмотреть какие именно значения вставляются... и нет ли там попыток вставить дубликаты строк (по уникальному индексу)
2)учитывая что там лок на транзакцию а не что то внутреннее - ничего, это проблема работы приложения с базой.
3)вообще посмотреть у вас там именно долговременный лок или все таки deadlock возникает?

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru [/quote]
В реальной жизни все ведь несколько иначе происходит
Что бы получить результаты этих запросов прошло 3 дня. Какой уж тут лог запросов ;-)
1) разумеется это будет сделано, как только заказчик решит вопрос с владельцем сервера по поводу получения лога базы и изменение параметров детализации. Вот как раз на попытки вставит дубликаты строк очень большое подозрения. Я ведь пока не знаю как генерится у них первичный ключ. А фантазия разработчиков она границ не знает.
2)именно к такому выводу и прихожу. Оказывается, мысль идет в правильном направлении. Задал вопросы по архитектуре приложения, жду ответа.
3)вот когда почитаю лог, тогда и ясно будет.

В общем, спасибо за обсуждение.
...
Рейтинг: 0 / 0
Мониторинг ожиданий
    #39715411
rinace
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может кому будет интересно.

Проблема оказалась классическая и примитивная
Банальный deadlock вызываемый странной логикой приложения ,
последовательность :
delete from Таблица ...
insert into Таблица ...
вызываемая одновременно с нескольких сессий ( в общемто особо сильной загрузки и не надо) приводит к deadlock

Зачем так делать, пока не понятно

Но как говориться - нет такой базы которую не сможет повесить простимулированный апликушник
;-)
...
Рейтинг: 0 / 0
Мониторинг ожиданий
    #39715470
Gold_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rinaceМожет кому будет интересно.

Проблема оказалась классическая и примитивная
Банальный deadlock вызываемый странной логикой приложения ,
последовательность :
delete from Таблица ...
insert into Таблица ...
вызываемая одновременно с нескольких сессий ( в общемто особо сильной загрузки и не надо) приводит к deadlock

Зачем так делать, пока не понятно

Но как говориться - нет такой базы которую не сможет повесить простимулированный апликушник
;-)

нормальная последовательность - update делают - бывает, что так быстрее.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Мониторинг ожиданий
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]