@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
  • Вопрос задан
  • 140 просмотров
Решения вопроса 1
EvgenyMamonov
@EvgenyMamonov Куратор тега Go
Senior software developer, system architect
Нет, там уже используется пул соединений.

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

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

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