Node.js 라이브러리 mysql2

IT 위키
Retrospect (토론 | 기여)님의 2025년 3월 23일 (일) 05:41 판 (새 문서: mysql2는 Node.js 환경에서 MySQL 및 MariaDB 데이터베이스와 통신하기 위한 고성능 라이브러리로, 비동기 프로그래밍을 지원하며 `Promise`와 `async/await`을 자연스럽게 사용할 수 있도록 설계되었다. ==개요== mysql2는 기존의 mysql (Node.js 라이브러리)의 성능과 안정성 문제를 개선하기 위해 만들어졌으며, 완전한 호환성을 유지하면서 더 빠른 쿼리 처리 속도와 다양한 기능을...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)

mysql2는 Node.js 환경에서 MySQL 및 MariaDB 데이터베이스와 통신하기 위한 고성능 라이브러리로, 비동기 프로그래밍을 지원하며 `Promise`와 `async/await`을 자연스럽게 사용할 수 있도록 설계되었다.

1 개요[편집 | 원본 편집]

mysql2는 기존의 mysql (Node.js 라이브러리)의 성능과 안정성 문제를 개선하기 위해 만들어졌으며, 완전한 호환성을 유지하면서 더 빠른 쿼리 처리 속도와 다양한 기능을 제공한다. 또한 MySQL 서버의 최신 기능을 지원하고, 데이터 타입 처리에 대한 호환성도 뛰어나다.

2 주요 특징[편집 | 원본 편집]

  • Promise API 지원 - 비동기 코드에서 async/await 문법 사용 가능
  • Prepared Statement 지원 - SQL 인젝션 방지 및 성능 향상
  • 빠른 파서(Fast Parser) - 바이너리 프로토콜 기반의 고속 데이터 파싱
  • 기존 mysql 라이브러리와 호환 - 대부분의 코드가 변경 없이 작동 가능
  • TypeScript 지원 - 타입 안정성 향상 및 IDE 자동완성 가능

3 설치[편집 | 원본 편집]

npm을 사용하여 mysql2 패키지를 설치한다.

npm install mysql2

4 기본 사용 예시[편집 | 원본 편집]

4.1 콜백 기반[편집 | 원본 편집]

const mysql = require('mysql2');

const connection = mysql.createConnection({
  host: 'localhost',
  user: 'root',
  database: 'test',
  password: 'password'
});

connection.query(
  'SELECT * FROM users WHERE id = ?',
  [1],
  function (err, results) {
    if (err) throw err;
    console.log(results);
  }
);

connection.end();

4.2 Promise 기반 (async/await)[편집 | 원본 편집]

const mysql = require('mysql2/promise');

async function main() {
  const connection = await mysql.createConnection({
    host: 'localhost',
    user: 'root',
    database: 'test',
    password: 'password'
  });

  const [rows, fields] = await connection.execute(
    'SELECT * FROM users WHERE id = ?',
    [1]
  );
  console.log(rows);

  await connection.end();
}

main();

5 Prepared Statement[편집 | 원본 편집]

mysql2는 명시적인 prepared statement 기능을 제공한다. 이는 SQL 인젝션을 방지하고 반복 쿼리의 성능을 높일 수 있다.

const [rows] = await connection.execute(
  'SELECT * FROM users WHERE email = ? AND status = ?',
  ['example@test.com', 'active']
);

6 풀(Pool) 사용[편집 | 원본 편집]

커넥션 풀은 다수의 동시 요청을 효율적으로 처리할 수 있도록 도와준다.

const pool = mysql.createPool({
  host: 'localhost',
  user: 'root',
  database: 'test',
  waitForConnections: true,
  connectionLimit: 10
});

const [rows] = await pool.execute('SELECT NOW()');
console.log(rows);

7 같이 보기[편집 | 원본 편집]

8 참고 문헌[편집 | 원본 편집]