Установление общего соединения с помощью node-mysql в приложении node-expess

0

В настоящее время я не использую пул соединений в моих настройках, так как у меня есть только 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, которые были опущены в этих примерах.

В чем заключается недостаток этой конструкции соединения?

Теги:
express
node-mysql

1 ответ

1

Пожалуйста, поправьте меня, если я ошибаюсь. Я думаю, хотя вы экспортируете объект соединения, вы все равно управляете соединением один за другим.

Открытие и поддержание соединения с базой данных для каждого пользователя, особенно запросов, сделанных в приложении для веб-сайта с динамическим основанием базы данных, является дорогостоящим и направляет ресурсы Wikipedia

И из того же документа,

Это связано с тем, что два вызова pool.query() могут использовать два разных соединения и запускаться параллельно

Таким образом, лучший способ - использовать пул для управления соединениями

Соединения лениво создаются пулом. Если вы настроите пул, чтобы разрешить до 100 подключений, но только когда-либо используете 5 одновременно, будет сделано только 5 соединений. Соединения также циклически округляются, и соединения берутся с вершины бассейна и возвращаются на дно.

Надеюсь, это поможет.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню