Проблема производительности запросов на обновление PostgreSQL

#postgresql

Вопрос:

Я не знаком с PostgreSQL. Я нашел этот запрос

 UPDATE theater_visitor
SET viewer_total_count = viewer_total_count   1
WHERE movie_id = $1
 

Давайте рассмотрим это. 100 пользователей начнут смотреть одновременно, 100 запросов поступят одновременно, как поведет себя сервер postgresql?

Я лично думаю, что этот дизайн можно улучшить, учитывая некоторый механизм организации очередей для снижения скорости записи, какой еще вопрос меня должен беспокоить?

Комментарии:

1. 100 пользователей-это ничто, и с опубликованным вами кодом не будет проблем с производительностью. Увеличьте это число до 100 000, которые начинаются точно в одно и то же время, и это может стать проблемой. Не работайте над преждевременной оптимизацией. Позвольте СУБД выполнять свою работу, и когда у вас начнутся проблемы с производительностью, вы можете использовать план выполнения запроса, чтобы выяснить, где находится узкое место, и поработать над его устранением.

2. @KenWhite, спасибо за ответ.

Ответ №1:

Если 100 пользователей смотрят разные фильмы, они будут обновляться параллельно. Если все они смотрят один и тот же фильм, обновления будут автоматически сериализованы. Поскольку блокировки сохраняются до конца транзакции базы данных, важно, чтобы эта транзакция была как можно более короткой.

Комментарии:

1. Спасибо, точка беспокойства-это вход в один и тот же фильм. 100 — плохой пример. Ожидание, 10000 активности в одном потоке. Ваш вклад полезен.

2. «Поток»? Не совсем понимаю, что ты имеешь в виду.