사용자 도구

사이트 도구


java:database:connectionpool

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

다음 판
이전 판
java:database:connectionpool [2015/09/30 09:55]
kwon37xi 만듦
java:database:connectionpool [2018/05/30 18:46] (현재)
kwon37xi [기본 설정]
줄 1: 줄 1:
 ====== Java JDBC Connection Pool / DataSource ====== ====== Java JDBC Connection Pool / DataSource ======
   * [[java:database:dbcp|DBCP - Java Connection Pool]]   * [[java:database:dbcp|DBCP - Java Connection Pool]]
 +  * [[java:database:tomcat_pool|Tomcat JDBC Pool]]
   * [[java:database:hikaricp|HikariCP]]   * [[java:database:hikaricp|HikariCP]]
   * [[java:database:bonecp|BoneCP]] - Deprecated   * [[java:database:bonecp|BoneCP]] - Deprecated
  
 +===== DataSource 초기화 =====
 +  * DataSource 객체를 생성한다 해도 실제 connection을 맺기 전까지는 DB 접속을 하지 않는다.
 +  * [[springframework:bean|SpringFramework Bean]]의 ''BeanPostProcessor#postProcessAfterInitialization''를 사용하여 DataSource Bean이 모두 생성 완료 된 뒤에 Bean의 실제 구현체 클래스 여부(예를들어 DBCP의 경의 ''BasicDataSource'')를 확인하여 ''dataSource.getConnection()''을 맺고 끊어주면 Spring Application이 다 뜨기 전에 미리 최소한의 커넥션이 맺어진 상태의 DataSource가 되어 서비스 오픈 직후 갑작스런 트래픽에 대응할 수 있게 된다.
 +  * 혹은 ''Map<String, DataSource> dataSources''로 모든 ''DataSource''를 Injection 받은 Bean에서 ''@PostConstruct''로 초기화 할 수도 있다.
 +
 +===== 기본 설정 =====
 +  * 커넥션의 최대 생존시간(보통 ''maxAge'')를 항상 설정한다.
 +  * ''maxActive''와 ''maxIdle''을 동일하게 설정해야 할 것 같음. 안 그러면 부하가 몰렸다가 빠질 때 ''maxIdle''이 작을 경우 커넥션을 일괄 반환하는 일이 생길 것으로 예상됨. pool별로 확인 필요.
 +  * validationQuery 는 JDBC 4 구현 드라이버 부터는 지정하지 않는것이 성능에 더 좋다.
 +  * validationQueryTimeout 은 항상 1초 정도로 지정할 것. ''Connection.isValid(int timeout)'' 에서 사용한다.
 ===== 참조 ===== ===== 참조 =====
-  * [[http://static.springsource.com/projects/tc-server/6.0/admin/radmjdbc.html|Configuring the High Concurrency JDBC Connection Pool]]+  * [[http://www.tomcatexpert.com/blog/2010/04/01/configuring-jdbc-pool-high-concurrency|Configuring the High Concurrency JDBC Connection Pool]]
  
java/database/connectionpool.1443576308.txt.gz · 마지막으로 수정됨: 2015/09/30 09:55 저자 kwon37xi