데이터베이스 커넥션 풀

478 단어·1 분·원문(.md)

Connection Pool CP #

일반적인 데이터 연동 과정은 웹 어플리케이션이 필요할 때 마다 데이터베이스에 연결해 작업하는 방식이다.

하지만 이런식으로 필요할 때마다 연동해서 작업할 경우 데이터베이스 연결에 시간이 많이 걸리는 문제가 발생한다.

예를 들어 거래소의 경우, 동시에 몇천명이 동시 거래 및 조회 기능을 사용하는데 매번 데이터베이스와 커넥션을 맺고 푸는 작업을 한다면 굉장히 비효율적이다.

이 문제를 해결하기 위해 현재는 웹 어플리케이션이 실행됨과 동시에 연동할 데이터베이스와의 연결을 미리 설정해두고, 필요할 때마다 미리 연결해 놓은 상태를 이용해 빠르게 데이터베이스와 연동하여 작업하는 방식을 사용한다.

이렇게 미리 데이터베이스와 연결시킨 상태를 유지하는 기술을 커넥션 풀(Connection Pool, CP)라고 한다.

커넥션 풀 사이스 설정 #

이론적으로 필요한 최소한의 커넥션 풀 사이즈를 알아보면
PoolSize = Tn x (Cm - 1) + 1

Tn: 전체 스레드의 갯수
Cm: 하나의 Task에서 동시에 필요한 Connection 수

위와 같은 식으로 설정을 한다면 데드락을 피할 수는 있겠지만 여유 커넥션풀이 하나 뿐이라 성능상 좋지 못하다.

따라서 커넥션풀의 여유를 주기위해 아래와 같은 식을 사용하는 것을 권장한다.

PoolSize - Tn x (Cm - 1) + (Tn / 2)

DataBase/connectionp.md