PDA

View Full Version : Aprire e chiudere la connessione al DB


Napalm
03-04-2006, 13:52
Vi porgo un quesito: io ho un'applicazione java che scrive sul DB; in momenti possono essere effettuate anche 20 query di fila (di solito insert) e poi per ore può rimanere inattivo.
Ora: conviene aprire e chiudere la connessione ad ogni query oppure aprire una sola volta la connessione e lasciarla aperta?
Pro e contro di queste due tecniche?

NapalM

Nightmare
03-04-2006, 14:06
sicuramente aprire e chiudere.
tenere una connessione sempre aperta non è molto "bello" potrebbero esserci dei lock indesiderati che si potrebbero evitare nella maniera piu semplice.

kingv
03-04-2006, 14:55
Ora: conviene aprire e chiudere la connessione ad ogni query oppure aprire una sola volta la connessione e lasciarla aperta?


dipende, in generale conviene tenerla aperta perchè la fase di autenticazione puo' durare molto di più del tempo di esecuzione della query. Certo che se hai migliaia di client e ognuno tiene aperto una connessione il consumo di ram lato db potrebbe essere inaccettabile.
In generale si usano pool di connessioni dinamici che aprono e chiudono le connessioni a seconda delle richieste, permetterdo un corretto tradeoff tra performance e utilizzo di risorse.

Napalm
03-04-2006, 15:37
dipende, in generale conviene tenerla aperta perchè la fase di autenticazione puo' durare molto di più del tempo di esecuzione della query. Certo che se hai migliaia di client e ognuno tiene aperto una connessione il consumo di ram lato db potrebbe essere inaccettabile.
In generale si usano pool di connessioni dinamici che aprono e chiudono le connessioni a seconda delle richieste, permetterdo un corretto tradeoff tra performance e utilizzo di risorse.

Il client è uno solo, il problema è che avendo 20 query in successione velocemente aprire e chiudere la connessione potrebbe sovraccaricare il sistema rispetto ad aprirne una solamente?
Hai quelche link per "pool di connessioni dinamici" per capire cosa sono?
Grazie :)

NapalM

kingv
03-04-2006, 15:53
Il client è uno solo, il problema è che avendo 20 query in successione velocemente aprire e chiudere la connessione potrebbe sovraccaricare il sistema rispetto ad aprirne una solamente?
Hai quelche link per "pool di connessioni dinamici" per capire cosa sono?
Grazie :)



aprire e chiudere ogni volta per fare 20 query è pesantissimo, fai un semplice test nei due casi e misura la differenza di tempo impiegato nei due casi. ;)

esistono diverse implmentazioni di un pool di connessioni , un esempio molto usato:
http://jakarta.apache.org/commons/dbcp/