Задать вопрос
@bodrich

Есть ли смысл для увеличения производительности использовать несколько подключений к одной БД?

Будет ли вариант
db, err := sql.Open("mysql", "root:password@/productdb")

// много потоков дергающие запросы db.Query

аналогичен по производительности такому варианту:
db, err := sql.Open("mysql", "root:password@/productdb")
db1, err := sql.Open("mysql", "root:password@/productdb")

// много потоков, половина которых дергают запросы db, вторая половина db1
  • Вопрос задан
  • 143 просмотра
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Go-разработчик с нуля
    8 месяцев
    Далее
  • Skillfactory
    Профессия Backend-разработчик на Go
    12 месяцев
    Далее
  • Нетология
    Go-разработчик с нуля
    9 месяцев
    Далее
Решения вопроса 1
EvgenyMamonov
@EvgenyMamonov Куратор тега Go
Senior software developer, system architect
Нет, там уже используется пул соединений.

Можно указать количество ожидающих (IDLE) соединений db.SetMaxIdleConns и максимальное количество одновременно открытых соединений через db.SetMaxOpenConns
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Есть ли смысл для увеличения производительности использовать несколько подключений к одной БД?
Обычно СУБД самое медленное звено. Даже так - в подавляющем числе архитектурных решений СУБД самое медленное звено.
Второй случай будет не только не самый производительный, но и не самый безопасный. В нём идёт обращение в двум разным базам данных db и db1. Поэтому встаёт проблема синхронизации данных между базами, а то одна может начать отдавать одни данные, а другая иные на один и тот же запрос. Синхронизация данных процесс не всегда быстрый. И пока данные не синхронизируются, придётся ждать ответа. Иначе вылезет split brain.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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