1. 연결 풀 크기의 오해와 진실
- 많은 개발자들이 데이터베이스 연결 풀을 설정할 때 직관과 다른 몇 가지 원칙들을 이해해야 합니다.
- 특히 연결 풀의 크기를 결정할 때 "더 많은 것이 더 좋다"는 일반적인 오해가 있습니다.
1.1 흔한 오해: 대규모 동시 사용자
- 예를 들어, Facebook 규모는 아니지만 동시에 10,000명의 사용자가 초당 20,000건의 트랜잭션을 발생시키는 웹사이트가 있다고 가정해보겠습니다.
- 이런 경우 연결 풀의 크기는 얼마나 되어야 할까요?
- 놀랍게도, 이 질문의 핵심은 "얼마나 크게"가 아니라 "얼마나 작게" 설정할 수 있느냐입니다.
- Oracle의 Real-World Performance 그룹의 테스트에 따르면, 연결 풀 크기를 2048개에서 96개로 줄이는 것만으로도 응답 시간이 100ms에서 2ms로 약 50배 개선되었습니다.
2. 왜 더 적은 연결이 더 나은가?
2.1 컴퓨터 과학의 기본 원리
- 최근 컴퓨팅의 여러 영역에서 "적은 것이 더 낫다"는 원칙이 입증되고 있습니다.
- 예를 들어, nginx가 4개의 스레드로 100개의 프로세스를 가진 Apache 웹서버보다 더 나은 성능을 보이는 이유는 무엇일까요?
- 컴퓨터 과학의 기본 원리로 돌아가 보면:
- 단일 CPU 코어는 실제로 한 번에 하나의 스레드만 실행할 수 있습니다
- 운영체제의 시분할(time-slicing) 방식으로 여러 스레드를 "동시에" 실행하는 것처럼 보이게 합니다
- 기본적인 컴퓨팅 법칙: 단일 CPU에서 A와 B를 순차적으로 실행하는 것이 시분할을 통해 "동시에" 실행하는 것보다 항상 빠릅니다
2.2 제한된 리소스의 영향