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

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

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

아니요. 연결 풀에서 connection을 반환하는 시간 초과입니다.

connectionTimeout
이 속성은 클라이언트(즉, 사용자)가 풀에서 연결을 기다리는 최대 밀리초 수를 제어합니다. 연결이 가능해지면 SQLException이 발생합니다. 허용되는 최저 연결 시간 초과는 250ms입니다. 기본값: 30000(30초)
위는 공식 설명입니다.

SQL 실행 시간 제한
JDBCStatement.setQueryTimeout을 직접 사용할 수 있습니다.
Spring@Transactional(timeout=10)

을 사용할 수 있습니다.
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿