В настоящее время я не использую пул соединений в моих настройках, так как у меня есть только 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, которые были опущены в этих примерах.
В чем заключается недостаток этой конструкции соединения?
Пожалуйста, поправьте меня, если я ошибаюсь. Я думаю, хотя вы экспортируете объект соединения, вы все равно управляете соединением один за другим.
Открытие и поддержание соединения с базой данных для каждого пользователя, особенно запросов, сделанных в приложении для веб-сайта с динамическим основанием базы данных, является дорогостоящим и направляет ресурсы Wikipedia
И из того же документа,
Это связано с тем, что два вызова pool.query() могут использовать два разных соединения и запускаться параллельно
Таким образом, лучший способ - использовать пул для управления соединениями
Соединения лениво создаются пулом. Если вы настроите пул, чтобы разрешить до 100 подключений, но только когда-либо используете 5 одновременно, будет сделано только 5 соединений. Соединения также циклически округляются, и соединения берутся с вершины бассейна и возвращаются на дно.
Надеюсь, это поможет.