본문 바로가기
프로그래밍/DB & Redis

[mysql] connection pool - 커넥션풀

by 뽀도 2023. 5. 15.

connection pools

 

커넥션풀이란?

  • 필요할때 재사용되기위해 관리되는 데이터 베이스의 캐시
  • 커넥션풀을 사용하면 데이터베이스 연결을 만들고 해제하는데 발생하는 오버헤드를 줄이는데 도움이 됨.

 

Mysql에서 Connection pool

  • 일반적으로 데이터베이스 서버에 대한 미리 설정된 연결 세트로 구성되며, 커넥션풀 관리자가 필요에 따라 연결을 유지하고 재사용함.

  • 작동 원리
    • 응용 프로그램이 풀에서 연결을 요청하면 관리자는 사용 가능한 연결이 있는 경우 풀에서 사용가능한 연결을 반환

    • 사용가능한 연결이 없다면, 관리자는 새 연결을 만들고 풀 구성에서 지정한 최대 연결까지 풀에 추가할 수 있음 

 

 

 

커넥션 풀도 가득 차고, config에서 지정한 최대수 만큼 만들어진 경우 어떻게 작동할까? 

 

  • 일반적인 접근 방법중 하나는 커넥션 풀 관리자가 사용가능한 연결이 있을 때까지 연결 요청을 차단하는것입니다.
    응용 프로그램이 연결을 풀에 반환할 때마다 관리자는 다음 대기 중인 요청에 할당할 수 있습니다.
    이 접근 방법은 연결이 사용 가능한 경우 풀을 활용하면서 최대 연결 수를 초과하지 않도록 보장합니다.
  • 다른 접근 방법중 하나는 커넥션풀 관리자가 최대 연결 수에 도달하면 연결 요청을 거부하는것. 
    • 이 접근 방법은 연결 수를 제한하여 데이터베이스 서버에서 리소스 경합을 방지하는 데 더 적극적 입니다. 
    • 그러나 애플리케이션이 이러한 오류를 우아하게 처리하지 않으면 연결 오류가 증가하고 가용성이 감소할 수 있습니다. 
  • 어떤 연결 풀 관리자는 일정한 한계에 도달하면 연결을 차단하고 이 한계를 초과하면 연결 요청을 거부하는 하이브리드 접근 방식을 구현할 수도 있음.

 

현재 사용중인 커넥션 확인 쿼리

 

▶ SHOW STATUS WHERE `variable_name` = 'Threads_connected';

 

  • 이 쿼리는 현재 서버에 연결된 클라이언트 수를 나타냄
  • 이 변수의 값은 현재 클라이언트 세션에서 사용하는 연결 및 닫히는 중인 연결을 포함한 활성 연결 수를 나타냄 

 

최대 연결수 확인 쿼리

 

▶ SHOW VARIABLES LIKE 'max_connections';

 

  • max_connections 수는 서버가 허용하는 동시 클라이언트 연결 수의 최대 값. 
  • 기본적으로 151개.

 

 

 

출처 : chat gpt 

chat gpt한테 알차게 물어봄 

 

 

 

반응형

댓글