Задать вопрос
@Lazoreth
Душу питона на работе

Умеет ли postgres в асинхронные запросы?

Суть в следующем: Хочу переписать один проект на асинхронщину(Больше из желания потрогать что и как). Нигде не нашёл ответа на вопрос: А умеет ли сама бд асинхронно обрабатывать запросы? То есть - какой смысл к примеру использовать асинхронный фреймворк для бд, если бд всё равно будет обрабатывать запросы в очереди? То есть по сути если каждый веб-запрос это отдельная корутина, то с асинхронным фреймворком мы просто устраняем блокировку фреймворка при обращении к бд, или всё-таки реально увеличивается производительность работы с бд?
  • Вопрос задан
  • 3231 просмотр
Подписаться 2 Простой Комментировать
Решения вопроса 1
Melkij
@Melkij
PostgreSQL DBA
libpq умеет асинхронное выполнение запросов в том смысле, что запрос отправляется на выполнение и возвращает управление приложению не дожидаясь окончания выполнения запроса.
Один коннект к базе в один момент времени может выполнять только один запрос. Вы не можете запустить один запрос и не дождавшись окончания его выполнения запустить другой через это же самое соединение. Через другое соединение - можете.

Будут ли запросы в самой базе сериализоваться в очередь либо выполняться параллельно - вопрос к этим самым запросам. Читающие довольно сложно чем-то заблокировать, пишущие чаще могут конфликтовать за блокировки.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
planc
@planc
async не ускоряет обработку данных, он позволяет сгладить тормоза сети
клиенты медленные и пока от них едут данные, cpu простаивает

бд рядом стоит и от нее буду ответы приходить быстро

мигель на pycon хорошо пример привел, async сервак - это шахматных гроссмейстер, который играет с нубами
он не играет с каждым по очереди, он делает ход и идет дальше

так вот бд в данном случае, это мозги гроссмейстера
они быстро отработают запросы
Ответ написан
Комментировать
@kuftachev
БД держит определенное количество соединений в зависимости от настроек и мощности сервера, а дальше нужно или нормально изучать БД, чтобы понимать как там все устроено, или не париться и знать что там работают умные люди и они разбируться.

А так, естественно, в большинстве современных бд будет и асинхронность, и многопоточность... На сколько позволят уровни изоляции транзакций.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы