Я создаю фоновую работу, которая обновляет статистику пользователей для веб-приложения. Работа в настоящее время занимает 55-60 секунд, и я обеспокоен тем, что произойдет, если пользователь попытается загрузить свою страницу статистики в то же время, когда выполняется задание.
Из того, что я читал о PostgreSQL и параллелизме, если два клиента пытаются получить доступ к одной и той же строке (одно обновление и одно чтение), и я не запускаю явно какие-либо транзакции, первая просто должна дождаться второй, чтобы закончить.
Так что, если я правильно понимаю, единственный удар по производительности, который я могу понести, это бесконечно малый шанс того, что пользователь попытается загрузить свою страницу статистики в тот же момент, когда обновляется строка. Не похоже, чтобы вся таблица статистики была заблокирована во время 55-60 секундной работы, если только я не должен был явно настроить Postgres для этого, верно?
Это правильная интерпретация? Есть ли другие факторы, по которым я скучаю?
(я упоминаю часть Rails на случай, если она имеет какое-либо отношение к описанному выше сценарию)
(также: версия PostgreSQL - 9.0.4)