HikariDataSource 配置
HikariDataSource configuration
我在 Java 应用程序中使用 HikariDataSource。我刚开始使用它。
这是我的配置:
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。当我运行应用程序时,这个连接通常是空闲的:
我想了解
- 一个连接每秒可以处理多少个请求。
- 一个连接是否可以并行接受和处理多个请求,或者其他请求必须等到前一个请求完成?
任何建议都会有所帮助。
我认为使用只有一个连接的连接池有点违反直觉。拥有连接池的全部目的是在任何给定时间有多个连接可用(或正在使用),从而允许您的应用程序快速获得一个连接而无需额外的创建它的成本。
由于您的用例需要单个连接,所以我看不出使用连接池有什么意义。回答您的问题:
- 这取决于您的请求多长时间(即针对您的数据库执行查询所需的时间)。
- 只要连接被分配给一个线程,那么所有其他调用者都会挂起等待连接返回到池中。
根据你的用例,我认为没有必要使用连接池。如果您想使用单个连接进行操作,只需创建它,使用它,最后丢弃它。另一方面,如果您想在任何给定时刻使用多个连接进行操作,请继续配置您的连接池以包含更多可用连接。
我在 Java 应用程序中使用 HikariDataSource。我刚开始使用它。
这是我的配置:
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。当我运行应用程序时,这个连接通常是空闲的:
我想了解
- 一个连接每秒可以处理多少个请求。
- 一个连接是否可以并行接受和处理多个请求,或者其他请求必须等到前一个请求完成?
任何建议都会有所帮助。
我认为使用只有一个连接的连接池有点违反直觉。拥有连接池的全部目的是在任何给定时间有多个连接可用(或正在使用),从而允许您的应用程序快速获得一个连接而无需额外的创建它的成本。
由于您的用例需要单个连接,所以我看不出使用连接池有什么意义。回答您的问题:
- 这取决于您的请求多长时间(即针对您的数据库执行查询所需的时间)。
- 只要连接被分配给一个线程,那么所有其他调用者都会挂起等待连接返回到池中。
根据你的用例,我认为没有必要使用连接池。如果您想使用单个连接进行操作,只需创建它,使用它,最后丢弃它。另一方面,如果您想在任何给定时刻使用多个连接进行操作,请继续配置您的连接池以包含更多可用连接。