|
Можно ли узнать какой пользователь заблокировал запись в таблице?
|
|||
---|---|---|---|
#18+
Maxim Boguk, Да, в принципе так и сделал в итоге. А про "невозможно" - в оракле, например, это решается именованными блокировками. Если не ошибаюсь начиная еще с версии 9i. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2020, 15:19 |
|
Можно ли узнать какой пользователь заблокировал запись в таблице?
|
|||
---|---|---|---|
#18+
alex_by_guest, Если у вас возникают такие ситуации, значит у вас однозначно есть долгие сессии в `idle in transaction` состоянии в базе. Вместо того, чтобы городить поиск “кто заблокировал?” напишите скрипт для их отстрела или ограничьте настройками время `idle in transaction` до 5 минут. Как, впрочем, и время обычных `active` сессий надо ограничить, скажем 30 минутами, всякие отчёты запускать от выделенного пользователя и для него сделать лимит больше, 2 часа к примеру. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2020, 16:51 |
|
Можно ли узнать какой пользователь заблокировал запись в таблице?
|
|||
---|---|---|---|
#18+
alex_by_guest А про "невозможно" - в оракле, например, это решается именованными блокировками. Если не ошибаюсь начиная еще с версии 9i. Речь о dbms_lock? Тогда в постгресе это рекомендательные блокировки . ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2020, 17:05 |
|
Можно ли узнать какой пользователь заблокировал запись в таблице?
|
|||
---|---|---|---|
#18+
alex_by_guest, Кстати да как Виктор выше написал - это лечится установкой разумного idle in transaction timeout через крон или настройку базы. Допустимая длина транзакции определяется из бизнес требований. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2020, 23:37 |
|
Можно ли узнать какой пользователь заблокировал запись в таблице?
|
|||
---|---|---|---|
#18+
vyegorov alex_by_guest, Если у вас возникают такие ситуации, значит у вас однозначно есть долгие сессии в `idle in transaction` состоянии в базе. Вместо того, чтобы городить поиск “кто заблокировал?” напишите скрипт для их отстрела или ограничьте настройками время `idle in transaction` до 5 минут. Как, впрочем, и время обычных `active` сессий надо ограничить, скажем 30 минутами, всякие отчёты запускать от выделенного пользователя и для него сделать лимит больше, 2 часа к примеру. Спасибо за совет, но предлагаемое вами решение в нашей ситуации неприемлемо. "значит у вас однозначно есть долгие сессии в `idle in transaction` состоянии в базе." - на самом деле в этом нет ничего страшного или ненормального. Вопрос был в том - как найти пользователя? Как уже написал ранее - мы эту задачу успешно решили через pg_background и locktree.sql. Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2020, 13:19 |
|
Можно ли узнать какой пользователь заблокировал запись в таблице?
|
|||
---|---|---|---|
#18+
Павел Лузанов, Интересная тема. Надо будет почитать. Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2020, 13:20 |
|
Можно ли узнать какой пользователь заблокировал запись в таблице?
|
|||
---|---|---|---|
#18+
alex_by_guest Павел Лузанов, Интересная тема. Надо будет почитать. Спасибо! advisory locks обсуждались со всех сторон в начале этой темы. у них есть свои плюсы и минусы но при аккуратном использовании - работают. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2020, 14:12 |
|
Можно ли узнать какой пользователь заблокировал запись в таблице?
|
|||
---|---|---|---|
#18+
Maxim Boguk, Да, но там указали, что имя пользователя все равно не получится выдернуть - поэтому не стал заострять внимание. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2020, 18:25 |
|
Можно ли узнать какой пользователь заблокировал запись в таблице?
|
|||
---|---|---|---|
#18+
alex_by_guest "значит у вас однозначно есть долгие сессии в `idle in transaction` состоянии в базе." - на самом деле в этом нет ничего страшного или ненормального. это точно ненормально! `idle in transaction` говорит о том, что приложение не даёт базе никакой работы при открытой транзакции. такая ситуация не должна возникать, транзакции не для этого. наличие таких сессий показывает либо проблемы в коде (некорректная работа с транзакциями), либо нехватку ресурсов на стороне приложения (перегрузка по CPU) либо проблемы с третьими сервисами, куда приложение ходит по сети удерживая открытую транзакцию. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2020, 20:13 |
|
Можно ли узнать какой пользователь заблокировал запись в таблице?
|
|||
---|---|---|---|
#18+
vyegorov, Вы слишком категоричны. "наличие таких сессий показывает либо проблемы в коде (некорректная работа с транзакциями), либо нехватку ресурсов на стороне приложения (перегрузка по CPU) либо проблемы с третьими сервисами, куда приложение ходит по сети удерживая открытую транзакцию." - нет. ничего из перечисленного в нашем случае нет. всё в порядке :) Не хочу вдаваться в подробности и в стопицотый раз развязывать по этому поводу холивар - просто поверьте, что это вполне себе рабочая ситуация. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2020, 12:52 |
|
|
start [/forum/topic.php?fid=53&startmsg=40016530&tid=1994357]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
156ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 301ms |
total: | 557ms |
0 / 0 |