【日记】mysql数据库连接池

今天看了nodejs用mysql连接池的相关资料,
因为服务通讯中建立连接和关闭连接的耗时还是挺大的,
所以使用连接池来提前建立一些连接放在里面维持着,进行数据库访问的时候去池子里取用,
用完不需关闭只要释放回池子里,这样就能减少时间开销。

连接池的建立:
let pool = mysql.createPool(config.dbinfo);
取用连接池的连接执行:
//db.js
let query = function (sqlstr, param, callback) {
    pool.query(sqlstr, param, callback);
};
exports.query = query;

//exec.js
let query = require('./db').query;
let sqlselect = 'SELECT * FROM testtable;';
query(sqlselect, null, function (err, result) {
    res.send(result);
});

以上取用不用考虑连接的建立与释放,query方法内部已经封装好了:
查看mysql源码的Pool.js可知 pool.query() 是 以下操作的一个捷径:
pool.getConnection() -> connection.query() -> connection.release()
但要注意:每次执行pool.query()所取用的connection可能不是同一个。

参考资料:
我们为什么要使用数据库连接池?
https://www.zhihu.com/question/349816338

Github mysqljs/mysql
https://github.com/mysqljs/mysql#release

Guess you like

Origin blog.csdn.net/ttyt1217/article/details/107414015