| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PostgreSQL > Ошибка canceling statement due to statement timeou |
| Автор: polin11 5.6.2022, 16:02 | ||||||||
| Использую PGSQL. Есть таблица записей ~ 1000 000 записей
При авторизации пользователя в аккаунт идет пересчет поля salary в целом по аккаунту для всех пользователей
Перед обновление делаю блокировку по аккаунту с таймаутом 5 секунд.
В процессе обновления могут выполнятся обновления по конкретному сотруднику из этого аккаунта, я также ставлю блокировку по аккаунту.
Когда общий запрос обновления по аккаунту (большой аккаунт) выполняется долго > 5 секунд, то падает ошибка на второй запрос обновления по сотруднику ошибка canceling statement due to statement timeout. Понятно, что оптимальное решение ускорить запрос расчета целиком по аккаунту. Плохо разбираюсь в тебе блокировок в PGSQL, просьба подсказать как исправить ситуацию с точки зрения блокировок, в какую сторону смотреть? |
| Автор: Akina 5.6.2022, 22:52 | ||
Гм... а зачем? |
| Автор: polin11 6.6.2022, 13:35 |
| После автозир. пользователя идет пересчет для всех пользователей, т.к. нужно пользователю показать salary из аккаунта всех пользователей из аккаунта. А изменять конкретный пользователь может менять только свой salary |