node-mysql 连接池

前言

具体代码发布在github了,不同分支代表在不同阶段的版本
我的github

createConnection vs createPool

  • createConnection方法创建连接对象
    正式的说法是 使用createConnection方法创建一个表示与mysql数据库服务器之间连接的connection对象

  • createPool连接池
    在开发web应用程序时,连接池是一个很重要的概念。建立一个数据库连接所消耗的性能成本是很高的。在服务器应用程序中,如果为每一个接收到的客户端请求都建立一个或多个数据库连接,将严重降低应用程序性能。

    因此在服务器应用程序中通常需要为多个数据库连接创建并维护一个连接池,当连接不再需要时,这些连接可以缓存在连接池中,当接收到下一个客户端请求时,从连接池中取出连接并重新利用,而不需要再重新建立连接。

这里贴出promise封装的连接池代码 了解更多?

/**
 * promise版 sql连接池
 * jtchen 2018/3/27
 */

const mysql = require('mysql');

const pool = mysql.createPool({
    host: '127.0.0.1',
    user: 'root',
    password: '1qaz@WSX',
    port: 3306,
    database: 'app_blog'
})

exports.query = (sql, params = []) => {
    return new Promise((resolve, reject) => {
        pool.getConnection((err, connection) => {
            if (err) {
                return reject(err);
            }
            connection.query(sql, params, (err, result) => {
                //释放连接
                connection.release();
                if (err) {
                    return reject(err);
                }
                resolve(result);
            });
        });
    });
};



这里简单介绍几个关键的方法

//createPool
var pool = mysql.createPool(optioins);
options参数包含createConnection方法中可以使用的各种属性

//getConnection
//err为错误对象,connection为获取到的连接对象。
从连接池中取出连接。
pool.getConnection(function(err,connection))

//release
release方法将其归还到连接池中 connection.release();

//destroy
当一个连接不再需要使用且需要从连接池中移除时用connection对象的destroy方法。
connection.destroy(); 
连接移除后,连接池中的连接数减一

//end
当一个连接池不再需要使用时,用连接池对象的end方法关闭连接池。pool.end();
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,868评论 18 139
  • 今天行动营四期正式结营了。这会儿解除了禁言大家都在表白,唱歌,各种玩嗨。 开车回家的路上一直在想着如何写复盘。来行...
    Queen_Guo阅读 275评论 2 6
  • 今天动笔的有点晚,因为又是特别的一天,今天有家庭聚会。 妹妹从韩国回来了,外甥女从西安回来过寒假;侄子完成了期末考...
    智慧成长说阅读 281评论 4 6
  • 13个月前,记得当时还在军训期间,就去面试学生会、接着又通过复试、开始一个月的试用期、试用期结束后被正式录用...
    Sunny仪阅读 264评论 3 5