MySQL Enterprise Edition의 성능과 확장성을 보장하는 주요 기능! "MySQL Thread Pool"
MySQL Enterprise Edition은 여러 모로 기업을 위한 솔루션입니다. 여러 이유 중 이번 포스팅에서는 MySQL 스레드 풀 기능을 알아볼까 합니다.
MySQL 스레드 풀 기능의 등장 배경
커뮤니티 버전을 쓰시는 분은 이 기능이 익숙하지 않을 수 있습니다. MySQL에는 "연결당 하나의 스레드"라는 기본 연결 처리 모델이 있습니다. 즉, 클라이언트가 MySQL에 연결하면 MySQL은 연결을 처리하기 위해 새 스레드를 만듭니다. 이 스레드는 연결이 닫힐 때까지 클라이언트가 보낸 모든 SQL 문을 실행하는 역할을 담당합니다. "연결당 하나의 스레드" 방식의 장점은 이해하고 구현하기가 간단하다는 것과 각 클라이언트 연결을 다른 클라이언트 연결로부터 격리하여 보안 측면에서 유리하다는 것을 꼽을 수 있습니다. 하지만 실제 프로덕션 환경에서는 장점보다 단점이 더 크게 다가옵니다.
"연결당 하나의 스레드" 모델은 연결을 많이 하는 애플리케이션의 경우 성능에 부정적인 영향을 미칠 수 있습니다. 클라이언트가 MySQL에 연결하면 연결을 처리하기 위해 새 스레드가 만들어집니다. 이 스레드는 연결이 종료될 때까지 클라이언트가 전송한 모든 SQL 문을 실행합니다. 연결을 많이 만드는 애플리케이션의 경우 MySQL이 지속적으로 스레드를 생성 및 소멸하기 때문에 성능이 저하될 수 있습니다.