node.js 로 db 서버와 연결, 커넥션 풀

tpids·2024년 7월 22일
0

project

목록 보기
1/26

node.js 로 db 서버와 연결

db.js

// db.js
const mysql = require('mysql2');

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

// waitForConnections: true
설명: 연결 풀이 모두 사용 중일 때 새로 들어온 연결 요청이 대기할지 여부를 설정합니다.
// connectionLimit: 10
설명: 연결 풀에서 동시에 유지할 수 있는 최대 연결 수를 설정합니다.
// queueLimit: 0
설명: 대기열의 최대 길이를 설정합니다. 0으로 설정하면 대기열에 제한이 없습니다.

module.exports = pool.promise();

server.js

const db = require('./db'); 

mysql.createPool, 커넥션 풀

  • mysql.createPool은 Node.js에서 MySQL 데이터베이스와의 연결을 관리하기 위해 사용하는 방법으로, 연결 풀(Connection Pool)을 생성합니다.
  • 커넥션 풀(Connection Pool)은 데이터베이스와의 연결을 효율적으로 관리하기 위한 기술입니다.
    애플리케이션이 데이터베이스와 연결할 때마다 새로운 연결을 생성하는 대신, 미리 생성해둔 연결을 재사용함으로써 성능을 향상시키고 자원 사용을 최적화합니다.

장점

  1. 성능 향상:
  • 연결 재사용: 연결 풀은 기존의 데이터베이스 연결을 재사용하므로 매번 새로운 연결을 생성하고 종료하는 오버헤드를 줄입니다.
    이는 데이터베이스와의 연결이 빈번한 애플리케이션에서 성능을 크게 향상시킵니다.
  • 연결 대기 시간 단축: 연결을 새로 생성하는 대신 미리 생성된 연결을 사용할 수 있어 요청 처리 시간이 단축됩니다.
  1. 자원 관리:
  • 최대 연결 수 제한: connectionLimit을 설정함으로써 데이터베이스 서버의 과부하를 방지할 수 있습니다.
    이로 인해 시스템 자원을 효율적으로 관리할 수 있습니다.
  • 연결 풀의 관리: waitForConnections 옵션을 통해 연결 요청이 많을 때 대기하도록 설정하여 서버의 안정성을 높일 수 있습니다.
  1. 대기열 관리:
  • 대기열 제한: queueLimit을 설정하여 대기할 수 있는 요청 수를 제한할 수 있습니다.
    이는 시스템의 과부하를 방지하고 예측 가능한 성능을 유지하는 데 도움이 됩니다.
  • 비동기 처리: 비동기 처리 지원: mysql2/promise 모듈을 사용하면 비동기 방식으로 데이터베이스 쿼리를 처리할 수 있어 비동기 프로그래밍과 잘 맞습니다.
profile
개발자

0개의 댓글