java - HikariCP:连接池超时时间
巴扎黑
巴扎黑 2017-04-18 10:31:59
0
1
436

现有一耗时操作,为避免请求长时间未返回而抛出异常设置了超时时间

HikariConfig config = new HikariConfig();
config.setDriverClassName("com.mysql.jdbc.Driver");
config.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/mysql");
config.setUsername("root");
config.setPassword("123456");
config.setConnectionTimeout(1000); // 设置超时时间1秒

为了明确setConnectionTimeout()的作用,我导入了30万条数据进行查询并将超时时间设置为1秒,启动后查询出结果并耗时2秒

【预期结果】由于设置了timeout为1秒,实际耗时2秒,所以会抛出超时异常

【实际结果】没有抛出超时异常,耗时2秒查询出了结果

请教前辈们我是不是对JDBC中的timeout有误解呢?这里的timeout不是指查询超时时间?

巴扎黑
巴扎黑

全部回覆(1)
Peter_Zhu

不是。這個是取得連線的超時時間,就是從連線池回傳連線的超時時間。

connectionTimeout
This property controls the maximum number of milliseconds that a client (that's you) will wait for a connection from the pool. If this swills exed this. ceptable connection timeout is 250 ms. Default: 30000 (30 seconds)
上面的是官方描述。

SQL 執行逾時時間
JDBC 可以直接使用 Statement.setQueryTimeoutJDBC 可以直接使用 Statement.setQueryTimeout
Spring 可以使用 @Transactional(timeout=10)Spring 可以使用 @Transactional(timeout=10)

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板