java - mysql show processlist 显示 11 个永不消失的连接

标签 java mysql spring jdbc

我有一个使用 javax.sql.DataSource 的 Web 服务,如下所示:

public class AccessMysql {

 private static DataSource dataSource=null;

    public  AccessMysql(){
      if (dataSource == null){
        dataSource = DataSourceBuilder
                .create()
                .username("[username]")
                .password("[password]")
                .url("jdbc:mysql://[server]/testdb")
                .driverClassName("com.mysql.jdbc.Driver")
                .build();
      }
    }
...
}

本类(class)第一次运行以下mysql命令:

show processlist

显示 11 个连接。

该服务可以多次访问数据库,而我的连接数(如通过“show processlist”所示)始终保持在 11。

这 11 个连接是否会自行消失?有什么方法可以从 Java 中关闭它们?

最佳答案

如果您检查 DataSourceBuilder 的代码,您会看到,如果它没有收到您的具体指令,它将创建一个池数据源(类型因类路径上的可用类而异):

private static final String[] DATA_SOURCE_TYPE_NAMES = new String[] {
        "org.apache.tomcat.jdbc.pool.DataSource",
        "com.zaxxer.hikari.HikariDataSource",
        "org.apache.commons.dbcp.BasicDataSource" };

这些合并的数据源将保持打开 X(在您的情况下可能是 10)个连接,以节省在需要时打开新连接的时间。这是connection-pooling的概念.

关于java - mysql show processlist 显示 11 个永不消失的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34089364/

相关文章:

java - 如何有效地拆分 ServletRequest .getParameterMap()? [Spring MVC,ServletRequest]

java - Windows通过IIS Url重写在tomcat上单点登录

Java 玩吧! 2.0 eclipse

java - 关闭默认 Play 页面

短代码中的 PHP 代码

Java AngularJS Spring MVC - 将 bean 发送到 Controller 时 $http.post 400 bad request 语法不正确

java - 确定时间是满小时还是半小时

mysql - 添加到数据库时违反完整性约束

mysql - 为什么对行进行排序会减少解释中的行数?

Spring 3.x JSON 状态 406 "characteristics not acceptable according to the request "接受“headers ()”