View Full Version : Aprire e chiudere la connessione al DB
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.
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.
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
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/
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.