[MySQL5 & Connector.Net 5.1.4] Spool Di Connessioni

giovedì 03 aprile 2008 - 11.23

FedericoC Profilo | Junior Member

Ciao,

Avrei bisongo di alcuni chiarimenti con gli spool di connessione, per prima cosa volevo sapere e il comportamento di questi è uguali a quanto succede con MSSQL, perchè ho letto degli spool sul libro programame ado.net 2.0 e prende come riferimento mssql 2005...


come seocnda info volevo sapere che cpsa devo fare per sfruttare lo spool, perchè io ho diverse form che ognina di esse ha a sua volta molte funzioni che richiamano la connect in questo modo:


using (MySqlConnection conn = new MySqlConnection(MainForm.Database()))

Mi è venuto un dubbio, non è che facendo cosi vado a creare ogni volta una nuova connessione?

Se si, mi conviene dichiarare una MySqlConnection nel mainform e dopo utilizzare sempre quella con i metodi open e close?

PS: la stringa di connessione non varia mai...


Grazie

lbenaglia Profilo | Guru

>Avrei bisongo di alcuni chiarimenti con gli spool di connessione,
>per prima cosa volevo sapere e il comportamento di questi è uguali
>a quanto succede con MSSQL, perchè ho letto degli spool sul libro
>programame ado.net 2.0 e prende come riferimento mssql 2005...
Con "spool" intendi il connection pool?

>come seocnda info volevo sapere che cpsa devo fare per sfruttare
>lo spool, perchè io ho diverse form che ognina di esse ha a sua
>volta molte funzioni che richiamano la connect in questo modo:
>
>
>using (MySqlConnection conn = new MySqlConnection(MainForm.Database()))
>
>Mi è venuto un dubbio, non è che facendo cosi vado a creare ogni
>volta una nuova connessione?
Eh si.

>Se si, mi conviene dichiarare una MySqlConnection nel mainform
>e dopo utilizzare sempre quella con i metodi open e close?
No. Dichiara una variabile connection localmente ad ogni procedura che necessita di accedere ai dati, apri la connessione, esegui la query, chiudi la connessione.
In questo modo minimizzi le risorse allocate sul server, aumentando la scalabilità del sistema.

>Grazie
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

FedericoC Profilo | Junior Member

Uhh

il fatto è questo:

Ci sono molte form in pratica ad ogni form è associata un'istruzione sql, quindi una connection locale ha poco senso...

Queste form possono veire aperte molto frequentemente, ad esempio:

Inserimento Cliente
Inserimento fattura
Visualizza Fattura
Stampa Fattura
ecc...

Sono tutti form separati, quindi dovrei fare 5 query e per queste 5 query se utilizzo la variabile locale vado ad aprire sempre nuove pool di connessioni...

lbenaglia Profilo | Guru

>Ci sono molte form in pratica ad ogni form è associata un'istruzione
>sql, quindi una connection locale ha poco senso...

Il template:

1) Definisco variabile oggetto Connessione
2) Apro connessione
3) Eseguo la query
4) Chiudo e distruggo la connessione (eventualmente reinserendola nel connection pool)

Ha SEMPRE senso in applicazioni che richiedono una certa scalabilità.

>Queste form possono veire aperte molto frequentemente, ad esempio:
>
>Inserimento Cliente
>Inserimento fattura
>Visualizza Fattura
>Stampa Fattura
>ecc...
A maggior ragione...
Se si tenta di riaprire una connessione con un contesto di sicurezza identico ad una precedentemente inserita nel connection pool, l'operazione sarà istantanea con un overhead inesistente.

>Sono tutti form separati, quindi dovrei fare 5 query e per queste
>5 query se utilizzo la variabile locale vado ad aprire sempre
>nuove pool di connessioni...
Il pool è 1, costituito da un numero massimo di connessioni che vi appartengono stabilito in fase di definizione.

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

FedericoC Profilo | Junior Member

Mi sono spiegato male

using (MySqlConnection conn = new MySqlConnection(MainForm.Database()))
{
conn.Open();
conn.Close();
}
using (MySqlConnection conn = new MySqlConnection(MainForm.Database()))
{
conn.Open();
conn.Close();
}

Queste due operazioni creano una nuova connessione, però la seconda va a sfruttare il pool aperto dalla prima conn, sia che essa si trovi in un'altro form già chiuso o in un'altra classe?

Giusto?

lbenaglia Profilo | Guru

>Queste due operazioni creano una nuova connessione, però la seconda
>va a sfruttare il pool aperto dalla prima conn, sia che essa
>si trovi in un'altro form già chiuso o in un'altra classe?
>
>Giusto?
Se la connection string è la stessa, allora si.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5