데이터베이스의 연결 풀링

개발자로서 데이터베이스 연결에 대해 생각하는 데 많은 시간을 할애하지 않았을 수 있습니다. 단일 데이터베이스 연결은 비용이 많이 들지 않지만 규모가 커지면 문제가 발생할 수 있습니다. 이제 연결 풀링의 세계에 대해 알아보고 이것이 어떻게 더 성능이 뛰어난 애플리케이션을 구축하는 데 도움이 되는지 살펴보겠습니다.

일반적인 데이터베이스 연결 방식



풀링을 시작하기 전에 애플리케이션이 데이터베이스 작업을 수행하기 위해 데이터베이스에 연결할 때 어떤 일이 발생하는지 빠르게 검토해 보겠습니다.
  • 응용 프로그램은 데이터베이스 드라이버를 사용하여 연결을 엽니다.
  • 애플리케이션과 데이터베이스를 연결하기 위해 네트워크 소켓이 열립니다.
  • 사용자가 인증되었습니다(데이터베이스 사용자를 의미).
  • 작업이 완료되고 연결이 닫힐 수 있습니다.

  • 보시다시피 연결 및 네트워크 소켓의 열기 및 닫기는 컴퓨팅 리소스가 필요한 여러 단계 프로세스입니다. 그러나 연결을 닫지 않고 항상 열어 두는 것도 리소스를 소비합니다.

    데이터베이스 연결을 풀링하는 이유는 무엇입니까?



    간단한 응용 프로그램의 경우 데이터베이스를 연결하는 일반적인 방법으로 충분할 수 있습니다.
    그러나 애플리케이션이 어느 정도의 사용자를 확보하면 간단한 데이터베이스 작업에 몇 초가 걸릴 수 있습니다.
    또한 각 데이터베이스 작업에 대한 지속적인 연결 열기 및 닫기
    너무 많은 자원을 소비하게 됩니다.

    종종 각 작업에 대해 완전히 새로운 연결을 열고 닫는 것보다 연결을 열린 상태로 유지하고 필요에 따라 작업에서 작업으로 연결을 전달하는 방법을 찾는 것이 합리적입니다.


    데이터베이스 연결 풀링이란 무엇입니까?



    데이터베이스 연결 풀링은 필요에 따라 데이터베이스 작업에서 데이터베이스 작업으로 전달될 수 있는 열린 연결의 "풀"을 유지함으로써 연결을 열고 닫는 비용을 줄이는 방법입니다.

    연결 풀을 만들고 구성하는 방법은 무엇입니까?



    예를 들어 **PostgreSQL **과 **sequelize **ORM을 사용하여 시연하겠습니다.
    그러나 거의 모든 종류의 데이터베이스 또는 ORM은 연결 풀링을 지원합니다.

    아래 코드 스니펫에는 몇 가지 기본값이 포함되어 있습니다.

    pool: {
        max: 5,
        min: 0,
        acquire: 30000,
        idle: 10000,
      }
    


  • max-> 클라이언트 풀의 최대 수는 동시에 확장할 수 있습니다.
  • min -> 클라이언트 풀의 최소 수는 확장할 수 있습니다.
    동시에.
  • acquire -> 풀이 오류를 발생시키기 전에 연결을 시도하는 최대 시간(밀리초)입니다.
  • idle -> 연결이 해제되기 전에 데이터베이스 작업을 대기하거나 대기할 수 있는 최대 시간(밀리초)입니다.

  • 빠르게 시작하는 데 필요한 최소 구성입니다.
    항상 뒤를 돌아보고 요구 사항에 따라 더 많은 구성을 추가합니다.

    읽어 주셔서 감사합니다.
    의견 섹션에서 의견을 자유롭게 공유하십시오.
    이와 같은 더 많은 콘텐츠를 보려면 나를 따르십시오.

    좋은 웹페이지 즐겨찾기