Когда надо использовать goroutines?

Я только начал изучать Golang и узнал про goroutines. Я уже имел опыт работы с асинхронным кодом, поэтому знаю, что везде пихать асинхронность не стоит. Поэтому я обращаюсь к вам.
Когда стоит использовать goroutines для повышения производительности и стоит ли использовать goroutines для работы с БД?
  • Вопрос задан
  • 416 просмотров
Решения вопроса 2
@deliro
Когда нужно (а главное можно) выполнить CPU или IO bound задачи конкурентно. Вернёт ли БД ответы на, к примеру, два запроса быстрее, если их отправить в одно время, чем если их отправить последовательно — неизвестно, т.к. очень сильно зависит от контекста. В большинстве случаев — да.

Горутины — это как если бы в асинхронщине можно было выполнять CPU bound задачи и без дурацких await.
Ответ написан
Комментировать
uvelichitel
@uvelichitel Куратор тега Go
habrahabr.ru/users/uvelichitel
Отправлять запросы к БД будет, по всей видимости, интернет сервер/сервис обслуживающий большое количество клиентов. (Или зачем вообще производительность?) Каждого клиента будет обслуживать отдельная goroutine. Эта же рутина и будет в процессе работы делать запросы к БД. Это удобно, это так само получается, так спроектирована стандартная библиотека. При этом определенная оптимизация проводится на уровне стандартной библиотеки https://pkg.go.dev/database/sql. Например, вы можете пре-подготавливать стейтменты и транзакции и выполнять их многократно и потокобезопасно из разных горутин/хендлеров своего сервера. Go драйвер sql обычно поддерживает пулл соединений с движком и переиспользует эти соединения для обслуживания хендлеров. Тут, как бы, разработчика не ставят перед выбором. Всё за нас решили архитекторы стандартной библиотеки Go)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы