Cosa rende le risorse "costose"?


10

Sto leggendo l'ibernazione e mi sono imbattuto in affermazioni come "Le connessioni JDBC aperte su più richieste non sono una buona cosa perché sono una risorsa costosa".

Cosa si intende per risorsa costosa?

Modifica: sto aggiungendo ciò che l'utente sconosciuto ha aggiunto come commento di seguito.

Se stabilire una connessione al database è costoso, perché non usare sempre la stessa cosa (non la memorizzazione nella cache), invece di chiuderla e aprirla ogni volta?


2
Costoso significa che ti farà male se lo usi troppo frequentemente o meno nel modo specificato.
Alexander Gessler,

Risposte:


20

Una risorsa costosa è quella che:

  • Ci vuole molto tempo per creare / inizializzare. Qualsiasi connessione al database può richiedere fino a 1-2 secondi per completare l'handshake.
  • Usa molta memoria. La lettura di un caricamento di file completo in un array di byte in memoria prima della sua memorizzazione consumerà una notevole quantità di memoria per un breve periodo di tempo.
  • Utilizza molti cicli della CPU. I calcoli su una vasta raccolta di dati possono tassare la tua CPU mentre sta eseguendo i calcoli.

Ciascuna delle risorse costose può fornire problemi di scalabilità . In breve, non puoi avere troppe di queste costose operazioni che si svolgono contemporaneamente o non sarai in grado di rispondere ai tuoi utenti abbastanza rapidamente.


Mi piace essere d'accordo, ma devo sottolineare, che è in conflitto con l'esempio che @Sun ha dato. Poiché l'impostazione di una connessione è costosa, manterresti la connessione aperta.
utente sconosciuto

2
In questo caso specifico, vorrei chiarire: se qualcosa richiede molto tempo per creare / inizializzare, si desidera limitare il numero di volte in cui si crea / inizializza quella risorsa. Le connessioni al database non richiedono molte risorse mentre sono aperte, quindi è preferibile unire queste risorse.
Berin Loritsch,

5

Può essere una varietà di cose che dipendono dalla risorsa specifica. Quindi potresti avere quanto segue:

  • Quanta memoria richiede per funzionare.
  • Il tempo impiegato per stabilire la connessione.
  • Il sovraccarico nel mantenere quella connessione.

e così via.

Altre cose che possono rendere costoso qualcosa potrebbero essere se richiede l'accesso al disco rigido o alla rete durante il funzionamento, ecc.


2

Costoso dovrebbe essere preceduto da "computazionalmente". Le spese di calcolo vengono utilizzate per fare riferimento alla quantità di tempo o risorse (CPU, memoria, disco, banda di rete) necessari per completare un'operazione, un algoritmo o un programma.


2

Il costo delle connessioni al database deriva da una serie di fattori.

  • Le connessioni al database sono lente da configurare e richiedono risorse sul lato client e server. Questo è il motivo per cui le connessioni sono raggruppate.
  • Le transazioni aperte hanno un overhead che richiede la gestione da parte del client e del server.
  • Le transazioni aperte potrebbero bloccare altri aggiornamenti. Questo rallenterà le prestazioni complessive.

Detto questo, è necessario mantenere la connessione (o almeno la transazione) aperta abbastanza a lungo per assicurarsi che la transazione superi il test ACID . (Durevole isolato atomico coerente)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.