2009-05-02 2 views
3

현재, 각 쿼리에 대해 Prepared Statement가 만들어지고 재사용됩니다. 연결 풀을 사용하고 있지 않습니다. C3P0은이를 위해 널리 권장되는 라이브러리입니다.미리 준비된 문과 연결 풀링을 함께 사용하기

그러나 PreparedStatement는 연결에 연결되어 있습니다. 풀링 된 환경에서는 연결이 풀로 반환되므로 효과적으로 PreparedStatement를 사용할 수 없게됩니다. 이 결론에 대해 나는 맞습니까? Prepared Statement와 연결 풀링을 함께 사용할 수있는 방법이 있습니까?

업데이트 : 이것은 독립 실행 형 응용 프로그램입니다. 따라서 연결 풀링을 올바르게 수행하기 위해 프레임 워크를 사용할 수는 없습니다.

+1

잘못된 결론 - 준비된 문이 연결 당 풀링되므로 연결이 포화 상태가 될 때까지 기다려야하지만 캐시를 사용할 수 없게 될 때까지 기다려야하기 때문에 캐시에서 이익을 얻을 때까지는 더 오래 걸립니다. . – wwadge

답변

0

나는 연결을 닫으면 PreparedStatement가 "손실"되지만 동일한 연결이 열려있는 한 동일한 PreparedStatement를 사용할 수 있어야한다고 생각합니다. JdbcTemplate을 사용하여 이것을 수행하기 위해 Spring을 살펴보아야한다. 모든 것을 추상화하여 걱정할 필요가 없습니다. DataSource를 전달하기 만하면됩니다. DAO가 사용중인 객체 무엇에 JdbcTemplate을 주입 한 후 http://forum.springframework.org/showthread.php?t=13078

당신은 다음 JdbcTemplate을 콩을하고 생성자 인수로 데이터 소스를 전달할 수 있으며, 다음은

는 데이터 소스 개체로 C3P0를 사용할 수있는 방법 .

1

사용하는 풀링 메커니즘에 따라 다릅니다. 대부분의 Java EE 어플리케이션 서버에는 풀의 각 연결과 함께 준비된 명령문 캐시가있는 연결 풀 구현이 있습니다. 따라서 준비된 명령문은 연결뿐만 아니라 재사용됩니다. 나는 어떤 독립형 풀링 메커니즘을 알고 있지만이 기능을 가지고 있습니다.

0

"고성능 MySQL"에서 this material을 보았을 때, 당신은 당신이 MySQL에서 설정 한 것 이상으로 MySQL 구성에 뭔가를해야한다고 생각하게 만들었습니다. my.cnf 파일을 편집 했습니까?

또한 주제에 관해서 other SO questions을 보았습니까?

EDIT : Spring은 독립 실행 형 응용 프로그램에 완벽하게 적합한 풀링을 도울 수있는 하나의 프레임 워크입니다.

+0

귀하가 참조한 질문을 확인했습니다. 일반적인 솔루션 (예 : 연결 풀링, 준비된 명령문)의 모든 옵션을 모두 사용한 후 DB 특정 매개 변수를 조정하고 싶습니다. –

관련 문제