Connection Pool 개념
데이터베이스에 연결된 Connection
을 미리 만들어 둔후 Pool에 보관하였다가 필요할 때 Pool
에서 Connection
을 가져다 사용한 후, 다시 Pool에 반환하는 기법입니다. Connection Pool
을 이용하면 여러 Connection
을 이용할 수 있기 때문에 더 큰 부하를 견딜 수 있습니다.
또한 기존처럼 필요할때 마다 Connection
을 생성하고 닫지 않아도 되기 때문에 어플리케이션의 성능향상 또한 기대할 수 있습니다.
Connection Pool 생성
Node.js
에서 Connection Pool
은 아래와 같이 사용할 수 있습니다. Connection
을 생성하지 않고 Pool
을 생성한 후 getConnection()
을 통해 가져다 사용해야 합니다.
Connection Pool 사용방법
mysql.createPool(_config)
: 새로운 Pool
생성pool.getConnection
: pool
에서 Connection
가져오
Pool을 위한 추가 설정
connectionLimit
: 최대 컨넥션 개수 (default: 10)
아래의 옵션을 추가하여 최대 컨넥션의 개수를 지정할 수 있습니다.
git을 이용할 경우 아래와 같이 설정을 json파일로 빼고 .gitignore에 추가하는 것을 추천합니다.
1 | { |
1 | const mysql = require('mysql'); |
위와 같이 Connection Pool
을 생성할 수 있습니다. 그후 Pool
에서 Connection
을 얻어서 사용할 수 있습니다. 사용한 후 반드시 conn.release()
를 통해 Pool
에 반납해야 합니다.
Connection Pool 모듈화
1 | const mysql = require('mysql'); |
getConnection()
함수를 exports하여 아래와 같이 필요한 곳에서 랩핑하여 쉽게 사용할 수 있습니다.
1 | const getConnection = require('./db'); |
사용후 꼭 conn.release()
를 통해 Pool
에 Connection
을 반환해야 합니다.