2010-10-28 8 views

risposta

92

Database collegamento Il pool è un metodo utilizzato per mantenere le connessioni del database aperte in modo che possano essere riutilizzate da altri.

In genere, l'apertura di una connessione al database è un'operazione costosa, soprattutto se il database è remoto. Devi aprire le sessioni di rete, autenticarti, verificare l'autorizzazione e così via. Il pooling mantiene attive le connessioni in modo tale che, quando viene richiesta una connessione successiva, uno di quelli attivi venga utilizzato preferibilmente per doverne creare un altro.

riferimento al diagramma seguente per i prossimi paragrafi:

+---------+ 
    |   | 
    | Clients | 
+---------+ | 
|   |-+ (1) +------+ (3) +----------+ 
| Clients | ===#===> | Open | =======> | RealOpen | 
|   | |  +------+   +----------+ 
+---------+ |  ^
       |   | (2) 
       |  /------\ 
       |  | Pool | 
       |  \------/ 
      (4) |  ^
       |   | (5) 
       |  +-------+ (6) +-----------+ 
       #===> | Close | ======> | RealClose | 
        +-------+   +-----------+ 

Nella sua forma più semplice, è solo una chiamata API simile (1) per una chiamata API open-connessione che è simile al "real " uno. Questo controlla innanzitutto il pool per una connessione adeguata (2) e, se disponibile, viene fornito al client. Altrimenti viene creato un nuovo (3).

Analogamente, c'è una chiamata API stretta (4) che in realtà non chiama la reale close-connection, piuttosto mette la connessione nel pool (5) per un uso successivo. A un certo punto, le connessioni in piscina potrebbero essere in realtà chiuse (6).

Questa è una spiegazione piuttosto semplicistica. Le implementazioni reali possono essere in grado di gestire connessioni a più server e più account utente, possono pre-allocare alcune linee di base delle connessioni in modo che alcune siano pronte immediatamente e potrebbero effettivamente chiudere le vecchie connessioni quando il modello di utilizzo si attenua.

+3

Da dove si ottiene il piccolo grafico? –

+6

L'ho fatto da zero (stupido me). Se vuoi vedere una grafica decente, dai un'occhiata alla risposta di zengr. – paxdiablo

+0

Grazie mille ... paxdiablo per spiegazione e grafico. – sagar27

39

immagini parlano più di mille parole (paxdiablo ha fornito una descrizione impressionante):

alt text

Source

+15

E a quanto pare, le immagini _good_ parlano anche alcune centinaia di pezzi di arte ASCII :-) – paxdiablo

+0

wow, ora che è stato fantastico, come lo hai generato? – zengr

+0

Grazie mille ... zengr per la figura. – sagar27

0

Concetto di pooling di connessioni non solo in Java ma in molti linguaggi di programmazione. La creazione di un nuovo oggetto di connessione è costosa, quindi un numero fisso di connessioni viene creato e mantenuto nel ciclo di vita creando un pool virtuale) vedi domanda 14 in questa pagina

Problemi correlati