Node MySQL库连接池问题

查看:102
本文介绍了Node MySQL库连接池问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

var mysql = require('mysql');
var pool = mysql.createPool({
    host: 'localhost',
    user: 'nodejs',
    password: 'nodejs',
    database: 'nodejs',
    port: 3306
});

// 第一种方式
pool.getConnection(function (err, conn) {
    conn.query("select * from user limit 1",function(err,rows){
        // 数据处理
        conn.release();
    });
});

// 第二种方式
pool.query("select * from user limit 1",function(err,rows){
    // 数据处理
});

这两种方式都有没有问题, 那两者有什么区别呢?

解决方案

  • 参见:https://www.npmjs.com/package...

  • 上面NPM文档说,可以直接使用pool.query(),同时,又说了,当你使用完连接时,调用connection.release()

  • 文档中也说了,connection.release()方法是在用完连接池中的某个连接之后,将其放回到连接池中去的操作

  • 所以,我猜测,说直接使用pool.query(),应该是自动完成了connection.release()释放连接控制权的操作

  • 后来,我翻了一下源文件:GitHub

  • 从190行开始,可以看到pool.query()调用了getConnection方法,而且在用完后,执行了query.once('end', function() {conn.release();});,说明前面的猜测是正确的

这篇关于Node MySQL库连接池问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆