目前我不使用连接池在我的设置,因为我只有1-4个用户在应用程序中。
根据医生的说法,这是推荐的方法。
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'example.org',
user : 'bob',
password : 'secret'
});
connection.connect(function(err) {
if (err) {
console.error('error connecting: ' + err.stack);
return;
}
console.log('connected as id ' + connection.threadId);
});
现在,我所做的是导出连接对象并将其共享给其他api资源。
在db.js文件上
var mysql = require('mysql');
var connection = mysql.createConnection({ ... });
module.exports = connection;
在api.js文件上
const express = require('express');
const router = express.Router();
const conn = require('./db');
router.post('/create', function (req, res) {
connection.query('INSERT ...', function (error, results, fields) {
if (error) throw error;
// connected!
});
});
router.post('/update', function (req, res) {
connection.query('UPDATE SET ...', function (error, results, fields) {
if (error) throw error;
// connected!
});
});
同样地,这些示例中省略的其他api资源也是如此。。
这种连接设计有什么缺点?
1条答案
按热度按时间pxy2qtax1#
如果我错了,请纠正我。我认为,即使您导出了连接对象,您仍然在一个接一个地管理连接。
为每个用户打开和维护一个数据库连接,特别是对动态数据库驱动的网站应用程序的请求,代价高昂,浪费了维基百科的资源
从同一个医生那里,
这是因为对pool.query()的两个调用可能使用两个不同的连接并并行运行
因此,最好的方法是使用池来管理连接
连接是由池延迟创建的。如果将池配置为最多允许100个连接,但仅同时使用5个,则只会建立5个连接。连接也是循环循环式的,连接从池的顶部开始,然后返回到池的底部。
希望有帮助。