개발 노트

mySQL에서 connection pool 사용 본문

Node

mySQL에서 connection pool 사용

알 수 없는 사용자 2023. 9. 21. 16:53
const pool = mysql.createPool({
    host: 호스트명,
    user: 유저명,
    password: 패스워드,
    database: DB명,
    waitForConnections: true, // 연결이 사용 가능할 때까지 대기
    connectionLimit: 10, // 연결 풀의 최대 연결 수
    queueLimit: 0, // 대기열에 들어갈 연결 요청의 최대 수 (0은 무제한)
    reconnect: {
        // 연결이 끊어졌을 때 자동 재연결 설정
        autoReconnect: true,
        // 최대 재시도 횟수 및 재시도 간격(ms)
        maxReconnects: 10,
        reconnectInterval: 2000,
    },
});

 

// 연결 풀에서 연결을 가져와 사용
pool.getConnection((err, connection) => {
  if (err) {
    console.error('연결 획득 중 오류:', err);
    return;
  }

  // 이곳에서 쿼리를 실행하거나 다른 작업을 수행
  connection.query('SELECT * FROM your_table', (queryErr, results) => {
    if (queryErr) {
      console.error('쿼리 실행 중 오류:', queryErr);
    } else {
      console.log(results);
    }
    
    connection.release(); // 연결을 다시 풀에 반환
  });
});

 

// 애플리케이션이 종료될 때 모든 연결을 닫아야 합니다.
process.on('SIGINT', () => {
  pool.end((err) => {
    if (err) {
      console.error('연결 풀 종료 중 오류:', err);
    }
    process.exit();
  });
});

하지만, 우리 서비스는 애플리케이션을 종료할 필요가 없기 때문에 위 코드는 생략해도 된다.