Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >node+mysql 数据库连接池

node+mysql 数据库连接池

原创
作者头像
IT工作者
发布于 2022-02-12 03:10:20
发布于 2022-02-12 03:10:20
3K00
代码可运行
举报
文章被收录于专栏:程序技术知识程序技术知识
运行总次数:0
代码可运行

1. 什么是数据库连接池?

数据库连接池是程序启动时建立足够的数据库连接,并将这些连接组成一个池,由程序动态地对池中的连接进行申请,使用和释放。

2. 使用数据库连接池原理及优点是什么?

数据库连接池在初始化时将会创建一定数量的数据库连接放到连接池中,连接池都将一直保证至少拥有这么多的连接数量,当有数据库需要被连接的时候,它会向数据库连接池申请资源和使用,使用完成后会释放到数据库连接池中。当然数据库连接池中拥有最小连接数量和最大连接数量,当数据库的连接超过连接池中最大的数量的时候,这些请求将被加入到等待队列中。

其实他们的原理就好比我们公司的招聘前端开发一样,当有A项目的时候,我们公司需要招聘一个前端开发去做项目,但是当公司有B、C、D、等项目的时候,或者很多项目的时候需要不断的招聘前端开发,那么这样会给公司带来很多人力成本的。因此我们需要一个前端主管来管理这些前端资源。前端主管手下假如有5个前端开发,那么当A、B、C、D、E、项目来的时候,前端主管会依次把这些项目分配给对应的开发人员去跟进。但是当还有F等项目的时候,因为F项目已经超过前端人员的时候,没有人再去支持这些个项目,因此这些项目需要排期,等A、B、C、D、E 其中任何一个开发完成后,上线了,然后这些开发人员就和数据库一样释放资源,返回到前端组来,然后前端主管再把F项目分配到对应的开发人员。这个比方就好比可以理解为一个数据库连接池了。而不是有n个项目需要招聘n个前端开发来做项目,那这样的缺点是公司的人力成本会大大的增加。所以数据库的链接池也是这个意思,当网站某一天有很大的流量的时候,数据库服务器需要为每次链接创建一次数据库链接。这样就很浪费数据库的资源,并且频繁的创建和关闭数据库的链接,很容易导致服务器内存溢出等情况发生。

连接池的作用是:数据库的连接池负责分配,管理和释放数据库链接的。它允许应用程序重复使用一个现有的数据库的链接。而不是重新创建一个。

3. 传统的数据库链接和数据库连接池的运行机制有啥区别?

传统的我们一般来java来说:java访问数据库的过程一般是如下:

1. 装载数据库驱动程序。 2. 通过JDBC建立数据库的链接。 3. 访问数据库,执行一些sql语句。 4. 断开及关闭数据库的链接。

如上是一般的java访问数据库链接的过程。

下面我们使用数据库的连接池的操作过程如下:

1. 程序初始化时创建连接池。 2. 使用时向连接池申请可用的资源。 3. 使用完毕后,将数据库链接返回给连接池。 4. 程序退出时,断开所有的链接,并释放数据库的链接。

这就是传统和连接池的区别。

node + mysql 实现数据库连接池

在mysql模块中,我们可以使用 createPool方法来创建连接池,使用方法如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var pool = mysql.createPool(options);

options 参数是一个对象,该对象中有很多属性配置,该对象的作用是用于指定该连接池中链接的统一使用的各种选项。 常见的选项如下:

connectionLimit: 用于指定连接池中最大的链接数,默认属性值为10.

queueLimit: 用于指定允许挂起的最大连接数,如果挂起的连接数超过该数值,就会立即抛出一个错误,默认属性值为0.代表不允许被挂起的最大连接数。

在如上建立连接后,我们可以使用 getConnection 方法从连接池中获取一个连接。该方法使用如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pool.getConnection(callback);

getConnection 方法调用后,它有一个参数callback回调函数,该回调函数也有二个参数,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function(err, connection) {
  
}

err: 该参数是指操作失败时的错误对象。 connection: 该值为一个对象,代表获取到的连接对象。当连接失败时,该值为undefined。

当连接不需要使用的时候,我们可以使用该连接对象的 release 方法来归还到连接池中。该方法使用如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
connection.release();

当连接不需要使用且需要从连接池中移除的时候,我们可以使用destory方法,该方法使用如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
connection.destory();

当连接不需要使用的时候,我们可以关闭该连接,使用方法如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pool.end();

下面我们来做一个使用数据库连接池做一个demo如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const mysql = require('mysql');
// 创建一个数据库连接池
const pool = mysql.createPool({
  host: 'localhost',
  port: 3306,
  database: 'my_db',
  user: 'root',
  password: '123456'
});
// 从连接池中获取一个连接
pool.getConnection((err, conn) => {
  if (err) {
    console.log('和mysql数据库建立连接失败');
  } else {
    console.log('和mysql数据库连接成功');
    conn.query('select * from user', (err2, res) => {
      if (err2) {
        console.log('查询数据库失败');
      } else {
        console.log(res);
        pool.end();
      }
    })
  }
});

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
数据库连接池技术详解
前言 今天来讲一下数据库连接池技术.其实这个名词也就是听起来高大上一点,实际上并不是很复杂的内容,相信在我的讲解下,并且自己实际的将代码写一遍之后,能够对这项技术有较为深刻的理解.废话不多说,开始讲解. 数据库连接池技术概述 所谓的数据库连接池技术,就是用来分配,管理,释放数据库连接的.你也许会问,好像我直接用JDBC也能够实现这些功能吧. 嗯,你说的没错,JDBC确实也可以,但是,你记不记得,我们使用JDBC技术的时候,每次用完了,是不是都会将连接关闭;等到下一次再用的时候,是不是都得将数据库连接再打
roobtyan
2018/06/04
1.4K0
[数据库连接池] Java数据库连接池--DBCP浅析.
前言 对于数据库连接池, 想必大家都已经不再陌生, 这里仅仅设计Java中的两个常用数据库连接池: DBCP和C3P0(后续会更新).  一. 为何要使用数据库连接池 假设网站一天有很大的访问量,数据库服务器就需要为每次连接创建一次数据库连接,极大的浪费数据库的资源,并且极易造成数据库服务器内存溢出、拓机。 数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现的尤为突出.对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标.数据库连接池正式针对这个问题提出
一枝花算不算浪漫
2018/05/18
1.7K0
Android中的数据库连接池
最近在看数据库相关的三方库的时候,我发现在Android应用开发的时候是可以并行操作数据库的读写,但Android默认的数据连接池中只有一个数据库链接。一个数据库连接能实现并发么?要是一个数据库链接可以实现并发,那么为什么需要数据库连接池?
静默加载
2020/05/29
3.5K0
Java Web学习总结之数据库连接池
  用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要消耗相对较大的资源,创建时间也较长。假设网站一天10万访问量,数据库服务器就需要创建10万次连接,极大的浪费数据库的资源,并且极易造成数据库服务器内存溢出、拓机。如下图所示:
Java团长
2018/08/06
1K0
数据库连接池怎么实现_java数据库连接池原理
由于数据库连接的建立是一个非常耗费资源的过程,所以这种每次都新建连接的方式非常浪费资源,不可取。
全栈程序员站长
2022/09/30
2.2K0
JAVA数据库连接池_java与数据库的连接怎么实现
大家好,又见面了,我是你们的朋友全栈君。 一般来说,Java应用程序访问数据库的过程是:   ①装载数据库驱动程序;   ②通过jdbc建立数据库连接;   ③访问数据库,执行sql语句;
全栈程序员站长
2022/09/30
4.9K0
JAVA数据库连接池_java与数据库的连接怎么实现
jdbc是数据库连接池么_零之轨迹超详细攻略
1、数据库连接池的基本思想: 就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。
全栈程序员站长
2022/09/30
5670
jdbc是数据库连接池么_零之轨迹超详细攻略
数据库连接池
数据库连接池相关资料: 关于数据库连接池的使用,首先我们要明白我们为什么要用它,对应普通的数据库连接操作,通常会涉及到以下一些操作是比较耗时的: 网络通讯,涉及到网络延时及协议通讯 身份验证,涉及安全性检查 连接合法性检查,主要是检查所连接的数据库是否存在 并发控制机制 构造并初始化输出缓冲区 连接成功后的信息保存,日志存储 服务器性能 数据库配置优化 系统分配内存资源 1.JDBC数据库连接池的必要性 在使用开发基于数据库的web程序时,传统的模式基本是按以下步骤:   1. 在主程序(如s
Steve Wang
2018/02/05
1.9K0
【Java 进阶篇】JDBC 数据库连接池详解
数据库连接池是数据库连接的管理和复用工具,它可以有效地降低数据库连接和断开连接的开销,提高了数据库访问的性能和效率。在 Java 中,JDBC 数据库连接池是一个常见的实现方式,本文将详细介绍 JDBC 数据库连接池的使用和原理。
繁依Fanyi
2023/10/12
3.3K0
【Java 进阶篇】JDBC 数据库连接池详解
用了这么久的数据库连接池,你知道原理吗?
这次我们采取技术演进的方式来谈谈数据库连接池的技术出现过程及其原理,以及当下最流行的开源数据库连接池jar包。
Bug开发工程师
2019/06/17
1.3K0
用了这么久的数据库连接池,你知道原理吗?
jdbc是数据库连接池么_java的jdbc连接数据库
JDBC 是Java应用程序用来连接关系型数据库的标准API,为多种关系型数据库提供一个统一的访问接口。Sun公司一共定义4种 JDBC 驱动类型,一般使用第4种,该类型的Driver完全由Java代码实现,通过使用socket与数据库进行通信。
全栈程序员站长
2022/09/30
3.3K0
jdbc是数据库连接池么_java的jdbc连接数据库
java数据库连接池
Java数据库连接池是一种用于管理数据库连接的技术,它可以大大提高应用程序的性能和可扩展性。下面是一个简单的Java数据库连接池示例,以连接到MySQL数据库并执行查询。
堕落飞鸟
2023/04/03
1.1K0
一条大河波浪宽 -- 数据库连接池实现
阅读文本大概需要 8 分钟。 度过了一个轻松的周末,让我们收拾好行囊,继续数据库航行之路 。 先简单回顾一下上次我们提到的JDBCUtil 工具类,通过抽取的 getConnection 和 re
阿凯
2018/06/29
3700
搭建node服务(二):操作MySQL
要想进行数据库操作就需要和数据库建立连接,然后通过连接进行数据库的操作。MySQL的数据库连接方式有以下几种:
宜信技术学院
2020/06/03
2K0
搭建node服务(二):操作MySQL
delphi 数据库连接池-MySQL之数据库连接池(Druid)
  行一次操作就把连接关闭,而数据库创建连接通常需要消耗相对较多的资源。这样数据库连接对象的使用率低。
宜轩
2022/12/29
3.4K0
数据库连接池极简教程
一,常规数据库连接 常规数据库连接一般由以下六个步骤构成: 装载数据库驱动程序; 建立数据库连接; 创建数据库操作对象 访问数据库,执行sql语句; 处理返回结果集 断开数据库连接。 public
架构师小秘圈
2018/04/02
2K0
数据库连接池极简教程
数据库连接池的理解和使用方法_为什么要使用数据库连接池
官方:数据库连接池(Connection pooling)是程序启动时建立足够的数据库连接,并将这些连接组成一个连接池,由程序动态地对池中的连接进行申请,使用,释放。 个人理解:创建数据库连接是一个很耗时的操作,也容易对数据库造成安全隐患。所以,在程序初始化的时候,集中创建多个数据库连接,并把他们集中管理,供程序使用,可以保证较快的数据库读写速度,还更加安全可靠。
全栈程序员站长
2022/09/30
9480
数据库连接池的理解和使用方法_为什么要使用数据库连接池
DBUtils数据库连接池
使用数据库连接池技术,可以重复使用多个数据库连接,避免每次执行数据库操作都建立连接和关闭连接,也避免了大型应用同时占用多个数据库连接。
py3study
2020/01/16
6860
常用数据库连接池 (DBCP、c3p0、Druid) 配置说明
数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库连接池正是针对这个问题提出来的。
林老师带你学编程
2019/05/26
2.4K0
Todo List: Node + Express 搭建服务端连接Mysql – 第五章(第一节)
万丈高楼平地起,我们的Todo List项目也是越来越健壮了。Todo List的前面4章内容都是在为Client端开发,现在架构基本ok,接下来我们搭建Server端,连接数据库,Client端能与数据库交互。
Javanx
2019/09/04
9780
Todo List: Node + Express 搭建服务端连接Mysql – 第五章(第一节)
推荐阅读
相关推荐
数据库连接池技术详解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验