Javascript 关于connection.end()在node.js mySQL模块中如何工作的困惑
在我使用关闭连接之后 connection.end() ,如果要使用相同的凭据再次查询数据库,是否需要通过调用 createConnection(…) 或者我可以通过简单地调用来重用相同的连接吗 连接。连接(…)Javascript 关于connection.end()在node.js mySQL模块中如何工作的困惑,javascript,mysql,sql,node.js,angular,Javascript,Mysql,Sql,Node.js,Angular,在我使用关闭连接之后 connection.end() ,如果要使用相同的凭据再次查询数据库,是否需要通过调用 createConnection(…) 或者我可以通过简单地调用来重用相同的连接吗 连接。连接(…) 一点背景:我正在将angular/node.js应用程序部署到一个共享托管网站,而该网站的主机最多有25个到mySQL数据库的并发连接,因此我需要确保在用户执行查询后正确关闭连接。我不确定是否可以在关闭mysql.createConnection(…)后重新使用该连接,或者是否需要创建
一点背景:我正在将angular/node.js应用程序部署到一个共享托管网站,而该网站的主机最多有25个到mySQL数据库的并发连接,因此我需要确保在用户执行查询后正确关闭连接。我不确定是否可以在关闭mysql.createConnection(…)后重新使用该连接,或者是否需要创建一个全新的连接。您可以使用一个全局连接从数据库获取数据 如果您处理的是单个文件,那么您可以编写为 app.js仅一个文件
const mysql = require('mysql');
let connection = mysql.createConnection(...);
connection.connect((err)=>{
...
connection.query((err)=>{
...
connection.end();});
});
如果要在多个文件中使用相同的连接,则可以编写为app.js
var mysql = require('mysql');
var connection = mysql.createConnection(...);
connection.query('SELECT 1', function (error, results, fields) {
if (error) throw error;
// connected!
});
app.use(
connection(mysql, {
host: xxxxx,
user: 'root',
password : xxxx,
port : 3306,
database:dbname
},'pool'),
);
var oem = require('./routes/type');
app.get('/api/oemtype',oem.type);
第二个文件
type.js
var mysql = require('mysql');
var connection = mysql.createConnection(...);
connection.query('SELECT 1', function (error, results, fields) {
if (error) throw error;
// connected!
});
app.use(
connection(mysql, {
host: xxxxx,
user: 'root',
password : xxxx,
port : 3306,
database:dbname
},'pool'),
);
var oem = require('./routes/type');
app.get('/api/oemtype',oem.type);
无需使用connection.end()。我正在部署我的应用程序的web主机最多可以同时连接25个mySQL数据库。不调用connection.end()会不会让连接挂起,从而导致最大限度的问题?如果每次都结束连接,那么mysql每次创建新连接都会降低应用程序和mysql的性能。最好使用池连接。池是否为所有用户创建单个池?例如,如果我将connectionLimit设置为25(如var pool=mysql.createPool({connectionLimit:10,host:…});这将为每个用户创建25个连接池,还是为所有用户创建25个连接池?很抱歉延迟,将为所有25个用户创建连接池,而不是为每个用户。您可以使用connection.release()而不是end mehod查询工作完成后。检查此项谢谢!这对我来说是新知识,我将自己做更多的研究:)您将需要一个池。将其配置为不使用超过25个连接。