본문 바로가기
Node.js

[Node.js] mysql 연동하기 (+ mysql2, pool 사용 이유)

by 떤떤 2020. 8. 3.

 

이 글을 처음 올렸을 땐 mysql 패키지를 사용한 코드를 올렸었습니다.

 

mysql2 패키지는 기존보다 성능 향상이 되었으며, promise wrapper 제공, Prepared Statement 지원(쿼리 재사용성 향상, 인젝션 방어), 압축과 보안 기능 지원, 사용자 정의 스트림 및 폴링 지원 및 추가된 기능들이 mysql 패키지 보다 좋기 때문에 사용하지 않을 이유가 없습니다.

 

그래서 mysql2 패키지 사용 예시 코드로 변경하게 되었습니다.

 

Node.js에서 사용하기 위한 mysql2 패키지 설치를 먼저 해줍니다.

npm i --save mysql2

 

 

import mysql from 'mysql2/promise'; // Promise API 사용하기 위해서 /promise 불러오기

const pool = mysql.createPool({
    host: 'localhost',
    user: 'root',
    password: '',
    database: 'my-database',
    port: 3306,
    connectionLimit: 100,
});

async function executeQuery() {
	const [rows, fields] = await pool.query(`SELECT now()`);
    
    console.log(rows);
}

executeQuery();

 

createConnection 메서드를 사용하지 않고 createPool 메서드를 사용한 이유

connection pool은 미리 일정 수의 데이터베이스 연결을 만들어 두고 재사용할 수 있기 때문입니다. 연결을 매번 생성하고 닫게 되면 비용이 많이 들게 됩니다. pool을 사용하게 된다면 비용을 절약할 수 있고 유지 관리 리소스를 효율적으로 관리할 수 있으며 이는 성능을 최적화 할 수 있습니다.