пул соединений mysql - PullRequest
       1

пул соединений mysql

14 голосов
/ 18 июля 2011

Я использую модуль node-mysql (https://github.com/felixge/node-mysql) ИЛИ (http://utahjs.com/2010/09/22/nodejs-and-mysql-introduction/).

Этот API также обрабатывает пулы соединений?

Я имею в виду, что при каждом запросе пользователя я звоню Client.connect(), чтобы запросить MySQL и освободить соединение: Client.end().

Это правильный путь, или я должен подключиться / отключиться только один раз в коде.

Я учусь на этом документе: https://github.com/felixge/node-mysql/blob/master/Readme.md

Ответы [ 3 ]

20 голосов
/ 19 июля 2011

Обновление: февраль 2013 г. - добавлена ​​поддержка пула в node-mysql, см. docs

Пример использования встроенного пула:

var pool = require('mysql').createPool(opts);

pool.getConnection(function(err, conn) {
  conn.query('select 1+1', function(err, res) {
    conn.release();
  });
});

Решения до 2013 года:

Вы можете использовать пул узлов или mysql-пул или использовать собственный простой пул циклического перебора

function Pool(num_conns)
{
    this.pool = [];
    for(var i=0; i < num_conns; ++i)
        this.pool.push(createConnection()); // your new Client + auth
    this.last = 0;
}

Pool.prototype.get = function()
{
    var cli = this.pool[this.last];
    this.last++;
    if (this.last == this.pool.length) // cyclic increment
       this.last = 0;
    return cli;
}

теперь вы можете надеяться, что все обратные вызовы запросов будут выполнены за 1 секунду:

var p = new Pool(16);
for (var i=0; i < 10; ++i)
{
    p.get().query('select sleep(1)', function() { console.log('ready'); } ); // server blocks for 1 second
}
5 голосов
/ 21 февраля 2013

Теперь пул соединений с поддержкой модуля node-mysql.

Ссылка: https://github.com/felixge/node-mysql#pooling-connections

3 голосов
/ 05 февраля 2015

Я считаю, что тот же пакет node-mysql обеспечивает пул соединений.Взгляните

var express   =    require("express");
var mysql     =    require('mysql');
var app       =    express();

var pool      =    mysql.createPool({
    connectionLimit : 100, //important
    host     : 'localhost',
    user     : 'root',
    password : '',
    database : 'address_book',
    debug    :  false
});

function handle_database(req,res) {

    pool.getConnection(function(err,connection){
        if (err) {
          connection.release();
          res.json({"code" : 100, "status" : "Error in connection database"});
          return;
        }   

        console.log('connected as id ' + connection.threadId);

        connection.query("select * from user",function(err,rows){
            connection.release();
            if(!err) {
                res.json(rows);
            }           
        });

        connection.on('error', function(err) {      
              res.json({"code" : 100, "status" : "Error in connection database"});
              return;     
        });
  });
}

app.get("/",function(req,res){-
        handle_database(req,res);
});

app.listen(3000);

Прочитайте полный пример (с бассейном и без): http://codeforgeek.com/2015/01/nodejs-mysql-tutorial/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...