Конфигурация HikariDataSource

#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. Сколько запросов может быть обработано одним соединением за секунду.
  2. Может ли одно соединение принимать и обрабатывать несколько запросов параллельно, или другие запросы должны ждать завершения предыдущего запроса?

Любые предложения будут полезны.

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

1. Почему вы ограничиваете размер бассейна всего 1?

2. Привет, akortex, я запускаю это приложение в среде пользовательского интерфейса. и только несколько человек используют его(3 человека).

3. 1) зависит от запросов 2) По одному за раз.

Ответ №1:

Я думаю, что использование пула соединений только с одним соединением немного противоречит интуиции. Вся цель создания пула соединений состоит в том, чтобы в любой момент времени было доступно (или использовалось) несколько подключений, что позволяет вашему приложению быстро получить одно из них без дополнительных затрат на его создание.

Поскольку в вашем случае использования требуется одно соединение, я не вижу смысла использовать пул соединений. Чтобы ответить на ваши вопросы:

  1. Это зависит от того, сколько времени занимает выполнение ваших запросов (т. е. запросов к вашей базе данных).
  2. До тех пор, пока соединение выделено потоку, все остальные вызывающие будут зависать, ожидая, пока соединение будет возвращено в пул.

Исходя из вашего варианта использования, я думаю, что нет необходимости использовать пул соединений. Если вы хотите работать с одним соединением, просто создайте его, используйте и, наконец, откажитесь от него. С другой стороны, если вы хотите работать с несколькими подключениями в любой данный момент, то продолжайте и настройте свой пул подключений, чтобы включить больше доступных подключений.