Pool에서 Connection을 사용하는 방법들
이전 포스트에서 알아본 Pool
에서 Connection
을 가져와 사용하는 방법이외의 방법을 하나 더 알아보고 차이점을 알아보려고 합니다.
pool.getConnection()
은 Pool
에서 Connection
을 가져와 사용한 후, 다시 connection.release()
를 통해 Pool
에 Connection
을 필히 반환 해주어야 합니다. 이 과정은 매번 Connection
을 이용할 때 마다 반복되는 작업으로 다소 번거로운 작업으로 느껴질 수 있습니다. 또한 개발자의 실수로 인해 connection.release()
를 해주지 않은 경우에는 문제가 발생할 여지가 있습니다.
pool.getConnection()으로 Connection을 사용하는 방법
아래와 같이 pool.getConnection()
> connection.query()
> connection.release()
의 순서로 Connection
을 사용할 수 있습니다.
1 | pool.getConnection(function(err, connection) { |
pool.query()를 사용하는 방법
pool.query()
은 pool.getConnection()
> connection.query()
> connection.release()
의 코드 플로우 shortcut
으로써 위와 같은 번거로운 작업없이 간단하게 Connection
을 사용할 수 있습니다.
1 | pool.query('SELECT 1 + 1 AS solution', function (error, results, fields) { |
그럼, pool.query()의 압승인가?
간단하다는 이유로 무조건 pool.query()
을 사용해야 하는 것은 아닙니다. 예를 들어 pool.getConnection
는 후속 query
를 위해 Connection
상태를 공유하여 사용하는데 유용합니다. 왜냐하면 pool.query
를 통한 두번의 함수 호출은 두개의 Connection
을 병렬로 사용하기 때문입니다.