现在的位置: 首页 > 数据库 > 正文

MyBaits连接超时问题怎么解决

2020年06月30日 数据库 ⁄ 共 2134字 ⁄ 字号 评论关闭

  对于数据库连接超时问题,是一个经典问题,不外乎两种解决办法。一种是配置数据库本身的连接时长。一种是通过软件自身来解决。下面学步园小编来讲解下MyBaits连接超时问题怎么解决?

  MyBaits连接超时问题怎么解决

  点击(此处)折叠或打开

  environments default="product">

  environment id="development">

  transactionManager type="JDBC" />

  dataSource type="POOLED">

  property name="driver" value="com.mysql.jdbc.Driver"/>

  property name="url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&" />

  property name="username" value="root"/>

  property name="password" value="zhiyisoft"/>

  /dataSource>

  /environment>

  environment id="product">

  transactionManager type="JDBC" />

  dataSource type="POOLED">

  property name="driver" value="com.mysql.jdbc.Driver"/>

  property name="url" value="jdbc:mysql://localhost:3306/prometheus?useUnicode=true&characterEncoding=utf8" />

  property name="username" value="root"/>

  property name="password" value="zhiyisoft"/>

  /dataSource>

  /environment>

  /environments>

  MyBaits连接超时问题怎么解决

  这里需要重点关注的是product这个环境,通常我们都使用POOLED这个自带的DataSource,但上面的这种简单配置,不会对连接超时做检查。再配置上以下属性即可:

  点击(此处)折叠或打开

  property name="poolPingEnabled" value="true"/>

  property name="poolPingQuery" value="select 10000 as salary"/>

  property name="poolPingConnectionsNotUsedFor" value="14400000"/>

  当然最重要的是poolPingEnabled这个属性,它们的含义如下:

  poolPingEnabled

  是否开启连接状态检测功能

  poolPingQuery

  检查连接状态的SQL语句

  多久检查一次

  poolPingConnectionsNotUsedFor

  POOLED这个DataSource别名实际上对应的是这个类:org.apache.ibatis.datasource.pooled.PooledDataSource

  下面列出该类的属性声明:

  点击(此处)折叠或打开

  private final PoolState state = new PoolState(this);

  private final UnpooledDataSource dataSource;

  // OPTIONAL CONFIGURATION FIELDS

  protected int poolMaximumActiveConnections = 10;

  protected int poolMaximumIdleConnections = 5;

  protected int poolMaximumCheckoutTime = 20000;

  protected int poolTimeToWait = 20000;

  protected String poolPingQuery = "NO PING QUERY SET";

  protected boolean poolPingEnabled = false;

  protected int poolPingConnectionsNotUsedFor = 0;

  private int expectedConnectionTypeCode;

  不 过,有些参数也需要数据库服务器配合,以mysql为例,其中max_connections和max_user_connections是到至关重要 的。分别代表整个服务器的最大连接数和单数据库允许的最大用户连接数。在mysql中可以在my.cnf中的[mysqld]下,以这样的格式来配置:

  set-variable=max_user_connections=300

  以上就是关于“MyBaits连接超时问题怎么解决”的内容,希望对大家有用。更多资讯请关注学步园。学步园,您学习IT技术的优质平台!

抱歉!评论已关闭.