Node.js 中 mysql 应用 -- 连接池的优势

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/bob_baobao/article/details/82260541

引言

从事 Node 开发 web 服务也有一段时间了, 数据库用的是 mysql, 每次执行数据库操作流程如下:创建一个连接, 执行 sql 语句, 然后关闭连接。 当用户量不大,并发请求数不多的时候, 一切都是正常的运转。 当写一个爬虫功能时候,同时执行2000+入库操作时, 系统报错,提示超时了。 意识到问题的重要性后,努力学习了一番, 在此, 分享并记录数据库连接池相关知识。

安装 mysql

npm install mysql

如何使用单次连接

const mysql = require('mysql');
const connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();

如何使用连接池

const mysql = require('mysql');
// 连接池配置
const dbPoolConfig = {
    host: config.dbHost,
    user: config.dbUser,
    password: config.dbPWD,
    port: config.dbPort,
    database: config.dbName,
    connectionLimit: 200
};
// 创建连接池
const pool = mysql.createPool(dbPoolConfig);
const imp = {};
// 连接池
imp.query =  function(sql, para) {
    return new Promise((resolve, reject) => {
        pool.getConnection((err, connection) => {
            if (err) {
                return reject(err)
            }
            if (para) {
                connection.query(sql, para, (err, rows) => {
                    connection.release();
                    if (err) {
                        return reject(err);
                    }
                    return resolve(rows);
                });
            } else {
                connection.query(sql, (err, rows) => {
                    connection.release();
                    if (err) {
                        return reject(err);
                    }
                    return resolve(rows);
                });
            }
        });
    });
}

module.exports = imp;

高并发测试两种连接方式

单次连接,最大并发请求约1000, 耗时12s
连接池, 最大并发请求约20000, 耗时约10s

查看 mysql 数据库连接数配置信息

https://blog.csdn.net/caodongfang126/article/details/52764213/

结束语

晚点补充完

猜你喜欢

转载自blog.csdn.net/bob_baobao/article/details/82260541
今日推荐