#java #hikaricp
Вопрос:
Я использую HikariDataSource в своем Java-приложении. Я очень новичок в его использовании.
Это моя конфигурация:
private DataSource buildDataSource(String dataSource, String url, String user, String password) {
HikariDataSource dataSource = new HikariDataSource();
dataSource.setInitializationFailTimeout(0);
dataSource.setMinimumIdle(1);
dataSource.setMaximumPoolSize(1);
dataSource.setIdleTimeout(300000);
dataSource.setMaxLifetime(900000);
dataSource.setConnectionTimeout(60000);
dataSource.setDataSourceClassName(dataSource);
dataSource.addDataSourceProperty("url", url);
dataSource.addDataSourceProperty("user", user);
dataSource.addDataSourceProperty("password", password);
return dataSource;
}
Здесь у меня MaximumPoolSize
как 1. И когда я запускаю приложение, это соединение обычно простаивает:
Я хочу понять
- Сколько запросов может быть обработано одним соединением за секунду.
- Может ли одно соединение принимать и обрабатывать несколько запросов параллельно, или другие запросы должны ждать завершения предыдущего запроса?
Любые предложения будут полезны.
Комментарии:
1. Почему вы ограничиваете размер бассейна всего 1?
2. Привет, akortex, я запускаю это приложение в среде пользовательского интерфейса. и только несколько человек используют его(3 человека).
3. 1) зависит от запросов 2) По одному за раз.
Ответ №1:
Я думаю, что использование пула соединений только с одним соединением немного противоречит интуиции. Вся цель создания пула соединений состоит в том, чтобы в любой момент времени было доступно (или использовалось) несколько подключений, что позволяет вашему приложению быстро получить одно из них без дополнительных затрат на его создание.
Поскольку в вашем случае использования требуется одно соединение, я не вижу смысла использовать пул соединений. Чтобы ответить на ваши вопросы:
- Это зависит от того, сколько времени занимает выполнение ваших запросов (т. е. запросов к вашей базе данных).
- До тех пор, пока соединение выделено потоку, все остальные вызывающие будут зависать, ожидая, пока соединение будет возвращено в пул.
Исходя из вашего варианта использования, я думаю, что нет необходимости использовать пул соединений. Если вы хотите работать с одним соединением, просто создайте его, используйте и, наконец, откажитесь от него. С другой стороны, если вы хотите работать с несколькими подключениями в любой данный момент, то продолжайте и настройте свой пул подключений, чтобы включить больше доступных подключений.