IT용어위키



Node.js 라이브러리 mysql2

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

개요

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

주요 특징

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

설치

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

npm install mysql2

기본 사용 예시

콜백 기반

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();

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();

Prepared Statement

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

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

풀(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);

같이 보기

참고 문헌


  출처: IT위키(IT위키에서 최신 문서 보기)
  * 본 페이지는 공대위키에서 미러링된 페이지입니다. 일부 오류나 표현의 누락이 있을 수 있습니다. 원본 문서는 공대위키에서 확인하세요!