요청 스레드
DB 작업이 필요할 때 풀에 연결을 요청한다. 빈 슬롯이 없으면 새 소켓을 무한히 만들지 않고 대기한다.
- request Aidle 슬롯을 빌림
- request B반환될 때까지 대기
borrowidle -> active
close()active -> idle
핵심은 연결을 많이 열어두는 것이 아니라, 정해진 슬롯 안에서 빌림·점유·반환을 관리해 DB 연결 수를 통제하는 것이다.
DB 작업이 필요할 때 풀에 연결을 요청한다. 빈 슬롯이 없으면 새 소켓을 무한히 만들지 않고 대기한다.
애플리케이션의 close()는 보통 물리 소켓 종료가 아니라 풀에 반환하라는 신호다.
풀 크기는 DB가 감당할 수 있는 동시 세션 수 안에서 정한다. 앱 인스턴스가 늘면 전체 연결 수도 같이 늘어난다.
| 상태 | 의미 | 나빠지는 신호 |
|---|---|---|
| Idle | 즉시 빌릴 수 있는 연결 | 항상 0이면 대기 요청이 늘 수 있다 |
| Active | 요청이 점유 중인 연결 | 오래 높으면 느린 쿼리나 긴 트랜잭션을 의심한다 |
| Pending | 빌리기를 기다리는 요청 | connectionTimeout 위험이 커진다 |