Node.js는 JavaScript 기반의 프런트엔드 개발 언어로, 실시간 애플리케이션 구축을 위한 매우 강력한 기능을 제공하고, 요청에 신속하게 응답할 수 있으며, 다양한 개발 모델(예: OO, 함수형 프로그래밍 등)을 지원할 수 있습니다. ). Node.js의 논블로킹 I/O 기능은 초고속 성능을 제공하여 최근 몇 년간 가장 인기 있는 개발 언어 중 하나가 되었습니다. 하지만 Node.js로 개발할 때는 데이터베이스를 관리하고 연결하는 방법도 고려해야 합니다. 데이터베이스 작업에서는 일반적으로 데이터베이스 연결 풀 관리 문제와 같은 몇 가지 문제가 발생합니다. 그래서 Node.js 커넥션 풀의 사용법을 소개하겠습니다.
1. 데이터베이스 연결 풀이란 무엇입니까?
데이터베이스 연결 시 다음과 같은 문제가 발생할 수 있습니다.
1. 각 연결에는 데이터베이스에 대한 새로운 네트워크 연결이 필요하며 네트워크 연결을 설정하는 데 시간이 걸리고 영향을 미칩니다. 프로그램 성능.
2. 프로그램이 데이터베이스를 자주 열고 닫아야 하는 경우, 웹사이트 트래픽이 많으면 데이터베이스가 직접 다운될 수 있습니다.
3. 연결은 상대적으로 비용이 많이 드는 리소스이므로 한 번에 여러 연결을 요청하면 동시성이 높은 조건에서 메모리가 소진될 수 있습니다.
이러한 문제를 해결하기 위해 데이터베이스 연결 풀을 사용하여 해결할 수 있습니다. 연결 풀은 캐시 풀과 같습니다. 데이터베이스 연결 그룹을 미리 설정하여 풀에 배치할 수 있습니다. 프로그램이 연결이 필요할 때마다 연결 풀에서 연결을 가져와 사용 후 풀로 반환합니다. 이를 통해 시간과 리소스를 효과적으로 절약하고 네트워크 요청과 서버 오버헤드를 줄일 수 있습니다.
2. Node.js 연결 풀 사용
Node.js 연결 풀을 사용하기 전에 npm의 유명한 MySQL 모듈을 도입해야 합니다. Node.js MySQL 모듈은 MySQL 데이터베이스와의 연결 및 상호 작용을 실현하기 위해 Connection 클래스, Pool 클래스 및 PoolCluster 클래스를 제공하는 매우 유용한 MySQL 데이터베이스 연결 라이브러리입니다.
먼저 Node.js에 MySQL 모듈을 설치하고 도입해야 합니다.
npm install mysql
const mysql = require('mysql');
II.1 연결 풀 설정
비즈니스 요구에 따라 예를 들어 최대 연결 수가 10이고 최소 연결 수가 2인 연결 풀과 같이 다양한 수의 연결 풀을 설정할 수 있습니다. 데이터베이스가 새로운 연결을 제공할 수 없는 경우 프로그램은 일정 시간 동안 기다린 후 오류를 보고합니다. 코드는 다음과 같습니다:
const pool = mysql.createPool({
호스트: '127.0.0.1',
사용자: 'root',
비밀번호: 'password',
데이터베이스: 'mydb',
connectionLimit: 10 ,
queueLimit : 2
});
2.2 연결 풀에서 연결 가져오기
연결 풀이 설정된 후 프로그램은 연결 풀에서 연결을 가져와 작업을 수행해야 합니다. MySQL 모듈에서는getConnection
메소드를 사용하여 연결 풀에서 연결을 가져옵니다.getConnection
方法从连接池中获取连接。
pool.getConnection(function(err, connection) {
if (err) throw err; console.log("连接成功!");
});
如果成功连接,我们可以通过connection对象进行数据库操作,例如查询数据库中的数据。在完成业务需求后,程序需要将连接返回到连接池中,以便于其他函数或用户继续进行数据库操作。使用release
方法把连接资源释放回连接池中。代码如下:
pool.getConnection(function(err, connection) {
if (err) throw err; console.log("连接成功!"); connection.query('SELECT * FROM table1', function (error, results, fields) { // ... do something here with the results ... connection.release(); });
});
三、连接池的释放
在实际应用过程中,我们需要注意连接池的释放规则。如果连接池中的连接一直不释放,会占用大量的存储和内存资源,导致应用崩溃。因此,我们需要及时释放连接池中的连接。
例如在Express.js框架的中,我们可以使用app.on('close', callback)
if (err) throw err; console.log("数据库连接池已关闭!");
연결에 성공하면 연결 개체를 통해 데이터베이스의 데이터 쿼리와 같은 데이터베이스 작업을 수행할 수 있습니다. 비즈니스 요구 사항을 완료한 후 프로그램은 다른 기능이나 사용자가 데이터베이스 작업을 계속할 수 있도록 연결을 연결 풀로 반환해야 합니다. 연결 리소스를 다시 연결 풀로 해제하려면release
메서드를 사용하세요. 코드는 다음과 같습니다.
rrreee
}); 3. 연결 풀 출시실제 신청 과정에서는 출시에 주의해야 합니다. 연결 풀의 규칙 연결 풀의 연결이 해제되지 않으면 많은 양의 저장 공간과 메모리 리소스가 점유되어 응용 프로그램이 중단될 수 있습니다. 따라서 시간에 맞춰 연결 풀의 연결을 해제해야 합니다. 예를 들어 Express.js 프레임워크에서는app.on('close', callback)
메서드를 사용하여 애플리케이션을 닫고 거기에 있는 모든 연결 풀 연결을 해제할 수 있습니다. 코드는 다음과 같습니다: app.on('close', function(err) { pool.end(function (err) {rrreee});});IV. Node.js 연결 풀을 사용하면 데이터베이스 연결을 효율적으로 관리하고 프로그램 성능을 향상시키는 동시에 리소스 오버헤드와 보안 위험을 줄이는 데 도움이 될 수 있습니다. 실제 애플리케이션에서는 최적의 성능을 달성하기 위해 비즈니스 요구 사항과 시스템 유형에 따라 해당 구성과 조정이 이루어져야 합니다.
위 내용은 nodejs 연결 풀 사용량의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!