Nodejs + MySQL Connection Pool [도레코딩]

 

Nodejs와 MySQL은 구현 완료했는데..

예전에 자바 서블릿 프로젝트 할 당시 오라클의 data Source 와 Connection Pool을 사용한 기억이 있어서 찾아보게 되었다. 

 

Connection Pool의 개념 참고

https://beaniejoy.tistory.com/24

 

[DB] Connection Pool에 대한 정리

 안녕하세요~ 이번 시간에는 Connection Pool에 대해서 정리해보고자 합니다. 저번에 Java 카테고리에 JDBC에 대해서 정리하면서 DAO와 DTO의 개념과 왜 사용하는지에 대해서 알아보았습니다. (이에 대

beaniejoy.tistory.com

 

요약하자면,

데이터를 읽고, 쓰기 위해 쿼리문을 보낼 때마다 Connection을 생성하는 것이 상당히 비효율적이라는 것이다.

Connection Pool은 이러한 문제점을 극복하고자 등장하였다.

Oracle DB와 마찬가지로 MySQL도 Connection Pool이 존재한다.

 

 

Connection Pool


하나의 Pool을 만들어서 미리 생성한 Connection 객체들을 담아두고 클라이언트 요청이 들어올 때마다 하나씩 빌려주고 돌려받는 형식이다.

즉, 쿼리문을 보낼 때마다 Connection을 생성하는 것이 아닌 미리 생성된 Connection을 빌려다가 쓰는 것이다. 또한 동시 접속자가 급증하더라도 에러가 발생하지 않고 Connection Pool에 남아있는 Connection이 없을 경우 클라이언트는 대기 상태로 전환된다.

 

 

 

MySQL Connection Pool 사용방법


 

const mysql = require('mysql');
var connection = mysql.createPool({
  "host": "<host>",
  "user": "<username>",
  "password": "<password>",
  "database": "<database>",
  "connectionLimit": 30
});

위와 같이 Connection Pool을 생성할 수 있다.

해당 connection으로 쿼리문을 사용할 시, 반드시 connection.release()를 통해 Pool에 반납해야함.

 

Mysql 모듈화

var mysql = require('mysql');
var connection = mysql.createPool({
  "host": "<host>",
  "user": "<username>",
  "password": "<password>",
  "database": "<database>",
  "connectionLimit": 30
});

module.exports = connection;