Maison  >  Article  >  interface Web  >  Utilisation du pool de connexions nodejs

Utilisation du pool de connexions nodejs

WBOY
WBOYoriginal
2023-05-24 10:03:37713parcourir

Node.js est un langage de développement front-end basé sur JavaScript. Il offre des capacités très puissantes pour créer des applications en temps réel, peut répondre rapidement aux demandes et peut prendre en charge de nombreux modèles de développement (tels que l'OO, la programmation fonctionnelle, etc.) ). La fonctionnalité d'E/S non bloquante de Node.js lui confère des performances ultra rapides, ce qui en fait l'un des langages de développement les plus populaires de ces dernières années. Cependant, lors du développement avec Node.js, vous devez également réfléchir à la manière de gérer et de vous connecter à la base de données. Dans les opérations de base de données, nous rencontrons généralement certains problèmes, tels que des problèmes de gestion du pool de connexions à la base de données. Par conséquent, introduisons l'utilisation du pool de connexions Node.js.

1. Qu'est-ce qu'un pool de connexions à la base de données

Lors de l'établissement d'une connexion à la base de données, vous pouvez rencontrer les problèmes suivants :

1. Chaque connexion nécessite une nouvelle connexion réseau à la base de données, et l'établissement d'une connexion réseau prend du temps et affectera performances du programme.

2. Si le programme doit ouvrir et fermer fréquemment la base de données, il occupera les ressources de la base de données. Si le trafic du site Web est important, la base de données peut être directement interrompue.

3. Étant donné que les connexions sont des ressources relativement coûteuses, demander plusieurs connexions à la fois peut entraîner un épuisement de la mémoire dans des conditions de concurrence élevée.

Pour résoudre ces problèmes, nous pouvons utiliser le pool de connexions à la base de données pour les résoudre. Le pool de connexions est comme un pool de cache. Un ensemble de connexions à la base de données peut être établi à l'avance et placé dans le pool. Chaque fois que le programme a besoin d'une connexion, elle sera obtenue du pool de connexions et renvoyée au pool après utilisation. peut efficacement économiser du temps et des ressources, en réduisant les requêtes réseau et la surcharge du serveur.

2. Utilisation du pool de connexion Node.js

Avant d'utiliser le pool de connexion Node.js, vous devez introduire le célèbre module MySQL de npm. Le module MySQL Node.js est une bibliothèque de connexion à la base de données MySQL très utile. Il fournit la classe Connection, la classe Pool et la classe PoolCluster pour réaliser la connexion et l'interaction avec la base de données MySQL.

Tout d'abord, nous devons installer et introduire le module MySQL dans Node.js :

npm install mysql

const mysql = require('mysql');

II.1 Établir un pool de connexions

Selon les besoins de l'entreprise , nous pouvons établir différents nombres de pools de connexions, par exemple un pool de connexions avec un nombre maximum de connexions de 10 et un nombre minimum de connexions de 2. Lorsque la base de données ne peut pas fournir de nouvelles connexions, le programme signalera une erreur après un certain temps d'attente. Le code est le suivant :

const pool = mysql.createPool({
hôte : '127.0.0.1',
utilisateur : 'root',
mot de passe : 'password',
base de données : 'mydb',
connectionLimit : 10 ,
queueLimit : 2
});

2.2 Obtenir la connexion à partir du pool de connexions

Une fois le pool de connexions établi, le programme doit obtenir la connexion à partir du pool de connexions pour effectuer l'opération. Dans le module MySQL, nous utilisons la méthode getConnection pour obtenir la connexion du pool de connexions. 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)

pool.getConnection(function(err, connection) {

if (err) throw err;
console.log("数据库连接池已关闭!");

});

Si la connexion réussit, nous pouvons effectuer des opérations de base de données via l'objet de connexion, telles que l'interrogation de données dans la base de données. Une fois les exigences métier remplies, le programme doit rétablir la connexion au pool de connexions afin que d'autres fonctions ou utilisateurs puissent continuer les opérations de base de données. Utilisez la méthode release pour libérer les ressources de connexion vers le pool de connexions. Le code est le suivant :

pool.getConnection(function(err, connection) {

rrreee

});

3. Libération du pool de connexions🎜🎜Dans le processus de candidature proprement dit, nous devons prêter attention à la version. règles du pool de connexions. Si les connexions du pool de connexions ne sont pas libérées, une grande quantité de ressources de stockage et de mémoire sera occupée, provoquant le crash de l'application. Par conséquent, nous devons libérer les connexions dans le pool de connexions à temps. 🎜🎜Par exemple, dans le framework Express.js, nous pouvons utiliser la méthode app.on('close', callback) pour fermer l'application et y libérer toutes les connexions du pool de connexions. Le code est le suivant : 🎜🎜app.on('close', function(err) {🎜 pool.end(function (err) {🎜rrreee🎜});🎜});🎜🎜Résumé🎜🎜Node. js pool de connexions L'utilisation de peut nous aider à gérer efficacement les connexions aux bases de données, à améliorer les performances du programme, tout en réduisant la surcharge des ressources et les risques de sécurité. Dans les applications réelles, les configurations et ajustements correspondants doivent être effectués en fonction des besoins de l'entreprise et du type de système pour obtenir des performances optimales. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn