Страницы

Поиск по вопросам

пятница, 10 января 2020 г.

Как и сколько соединений открывать из приложения с сервером БД mysql?

#cpp #mysql #сервер #сокет


Есть многопоточный сервер на с++, который работает с mysql базами.
Проблема в том, что открытие одного соединения на одного клиента не подходит из-за
большой нагрузки на сервер, а использование одного соединения с базой на все приложение
чревато большими проблемами. Подскажите как решить эту проблему.    


Ответы

Ответ 1



Обычно в таких случаях используют пул соединений (connection pool). Суть его в том, что к базе открывается ограниченное число соединений (например, 10). Каждый раз, когда клиент пытается подключиться к базе, мы выдаём ему соединение из пула. После оекончания работы с базой (отсоединения клиента) соединение возвращается в пул, но не закрывается, а по приходу нового запроса отдаётся следующему клиенту. Плюсы такого подхода - не нужно тратить время на переоткрытие соединений с базой. Минусы - ограниченное число одновременных подключений к базе, сложности реализации. На вашем месте я бы не стал писать пул самостоятельно, а поискал бы готовые реализации в Интернете (сам я, к сожалению, не пользовался подобным в C++, поэтому ничего конкретного посоветовать не могу).

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

Отправить комментарий