2013-04-18 14 views
13

PS: Sto costruendo un piccolo javafx applicazioni back-ended con piccoli h2 di database (5 tabelle).

risposta

10

Dalla risposta di Jon Skeet a What is the benefit of Connection and Statement Pooling?:

Creazione di una connessione di rete a un server di database è (relativamente) costoso. Allo stesso modo, chiedere al server di preparare un'istruzione SQL è (relativamente) costoso.

Utilizzando un pool di connessioni/dichiarazione, è possibile riutilizzare connessioni/istruzioni preparate esistente, evitando il costo di avvio di una connessione di , l'analisi di SQL ecc

e la seguente, da Kent Boogaart's answer:

non ho familiarità con c3p0, ma i benefici di mettere in comune le connessioni e dichiarazioni comprendono:

  1. Prestazioni. La connessione al database è costosa e lenta. Le connessioni in pool possono essere lasciate fisicamente collegate al database, e condivise tra i vari componenti che richiedono l'accesso al database. In questo modo il costo della connessione viene pagato una volta e ammortizzato su tutti gli componenti consumanti.

  2. Diagnostica. Se si dispone di un sottosistema responsabile della connessione al database, diventa più facile diagnosticare e analizzare l'utilizzo della connessione del database .

  3. Manutenibilità. Anche in questo caso, se si ha un sottosistema responsabile della distribuzione delle connessioni al database, il codice sarà più semplice da mantenere rispetto a quando ciascun componente è collegato al database stesso.

+6

Plagiato da qui: http: // stackoverflow.it/a/457305/19679 e qui: http://stackoverflow.com/a/457303/19679. Ti piace davvero prendere le parole di Jon Skeet, vero? –

1

Creazione di connessioni è costosa e non ha senso per creare una nuova connessione per ogni transazione che potrebbe richiedere solo pochi millisecondi. La gestione delle connessioni di database in un pool significa che le applicazioni possono eseguire transazioni di database in modo da evitare il tempo di creazione della connessione (le connessioni devono ancora essere create, ma sono tutte create all'avvio). Lo svantaggio è che se tutte le connessioni sono in uso e se è necessaria un'altra connessione, il thread richiedente dovrà attendere fino al ripristino di una connessione al pool.