mysql, una connessione vs multipla

6

Su nodejs con node-mysql, dovrei creare una connessione per il servizio in questo modo:

var client = mysql.createClient({
    user: 'user',
    password: 'pass'
}); // Create a new mysql Client
io.sockets.on("connection", function (user)) // when a user enters
{
    result = client.query('check user'); //check for user on DB
    if (result) {
        user.on('do stuff', function (data) // set to do something on ask
        {
            client.query('some stuff'); //run the mysql client to work
        });
    } else {
        user.disconnect();
    }
});
}

o o per ciascun utente in questo modo:

io.sockets.on("connection", function (user)) // when a user enters
{
    var client = mysql.createClient({
        user: 'user',
        password: 'pass'
    }); // Create a new mysql Client when the users enters
    result = client.query('check user'); //check for user on DB
    if (result) {
        user.on('do stuff', function (data) // set to do something on ask
        {
            client.query('some stuff'); //run the mysql client to work
        });
        user.on('disconnect', function (data) {
            client.close();
        });
    } else {
        user.disconnect();
        client.close();
    }
}

Quello che sto chiedendo è:

  • è il primo più veloce perché la connessione è sempre aperta e attiva il secondo che deve creare ogni volta che un utente si connette?
  • è il primo più lento perché se molti utenti chiedono le query ne fa solo uno alla volta, e nel secondo ognuno ha il suo proprio cliente e può effettuare più connessioni contemporaneamente?
  • è il secondo più pesante per il nodo server e per il mysql perché ha bisogno di avere 1 client per ogni utente?
  • è il primo più pesante perché non chiude mai la connessione mysql e dopo alcune query potrebbero esserci delle perdite di memoria?
  • o dovrei creare e chiudere una connessione mysql per ogni query?

PS: l'applicazione connessa al server nodo avrà un numero elevato di utenti, connessi per un lungo periodo di tempo, ma avrà un numero molto basso di query, ma gli utenti probabilmente chiederanno le query all'incirca allo stesso tempo.

    
posta Joaolvcm 16.05.2012 - 18:45
fonte

1 risposta

2

Il nodo è un'applicazione a singolo processo, single-threaded, asincrono, basata su eventi. Pertanto, una sola richiesta / evento viene gestita contemporaneamente.

Dato che node-mysql sembra che la sua API sia sincrona, dovresti stare bene con una singola connessione. Ciò presuppone che l'applicazione non faccia affidamento su variabili di sessione SQL, tabelle temporanee o transazioni che potrebbero estendersi su più eventi Node.

    
risposta data 25.05.2012 - 01:41
fonte

Leggi altre domande sui tag