1) 커넥션 풀(Connection pool)이란?
- 커넥션 풀링(Connection Pooling)은 여러 개의 커넥션을 미리 생성하고
이를 관리하는 기술로, 필요할 때마다 어떤 스레드에서든 사용할 수 있도록 합니다.
커넥션 풀링은 Java 애플리케이션의 성능을 크게 향상시킬 수 있으며,
전체 자원 사용량을 줄이는 데 도움이 됩니다.
2) 커넥션 풀링의 작동 원리
- 대부분의 애플리케이션은 트랜잭션을 처리할 때만 JDBC 커넥션에 접근할 필요가 있습니다.
트랜잭션을 처리하는 데 걸리는 시간은 보통 몇 밀리초에 불과합니다.
트랜잭션을 처리하지 않는 동안, 커넥션은 유휴 상태로 남습니다.
커넥션 풀링은 이러한 유휴 커넥션을 다른 스레드가 유용한 작업을 하는 데 사용할 수 있게 합니다.
- 실제로, 스레드가 MySQL 또는 다른 데이터베이스에 대해 작업을 수행하려면
커넥션 풀에서 커넥션을 요청합니다.
작업이 끝나면 커넥션을 풀에 반납하여 다른 스레드가 사용할 수 있도록 합니다.
- 풀에서 커넥션을 대여할 때, 해당 커넥션은 요청한 스레드만 독점적으로 사용합니다.
프로그래밍 관점에서, 커넥션 풀을 사용할 때는
스레드가 매번 DriverManager.getConnection()을 호출하는 것과 동일하게 작동하지만,
커넥션 풀링에서는 새로운 커넥션 또는 기존의 커넥션을 사용할 수 있습니다.
3) 커넥션 풀링의 장점
커넥션 풀링의 주요 장점은 다음과 같습니다:
- 커넥션 생성 시간 단축. MySQL은 다른 데이터베이스와 비교했을 때 빠른 커넥션 설정을 제공하지만,
새로운 JDBC 커넥션을 생성하는 데는 여전히 네트워크와 JDBC 드라이버 오버헤드가
발생합니다.
커넥션 풀링을 사용하면 이러한 오버헤드를 피할 수 있습니다. - 프로그래밍 모델 단순화. 커넥션 풀링을 사용하면 각 스레드가 마치 자신의 JDBC 커넥션을 생성한 것처럼
동작할 수 있어,
직관적인 JDBC 프로그래밍 기법을 사용할 수 있습니다. - 자원 사용의 제어. 매번 새로운 커넥션을 생성하는 대신 커넥션 풀링을 사용하면
애플리케이션의 자원 사용이 낭비되지 않으며,
부하가 많은 상황에서 애플리케이션의 예측할 수 없는 동작을 방지할 수 있습니다.
'Mysql Reference Manual' 카테고리의 다른 글
[Mysql Reference Manual] 공유 락 & 배타 락 (0) | 2024.12.15 |
---|