Eager Caricamento dei vincoli

1

Il fatto è che il caricamento di alcuni oggetti con tutte le associazioni riduce le query effettuate al database, ma il tempo di interrogazione è notevolmente aumentato.
La domanda è: questo tempo di query aumentato alla fine paga il database non viene colpito così spesso?

Mi sembra che tu stia evitando un problema e cadendo in un altro.
Obs .: Metterebbe tag carico-carico se avessi abbastanza reputazione. Qualcuno potrebbe crearlo e modificare questa osservazione.

    
posta MurifoX 30.07.2012 - 20:26
fonte

1 risposta

1

Il fatto che tu debba fare questa domanda è di per sé un grande indizio sul fatto che non esiste una risposta univoca. Se il carico impaziente fosse sempre migliore, gli sceneggiatori avrebbero trasformato il default immutabile; se fosse sempre peggio, non lo offrirebbero. Ecco alcuni aspetti della situazione che posso pensare che potrebbero essere rilevanti:

  • Quanto è profondo il tuo tipico albero degli oggetti? Più oggetti fai riferimento indirettamente al primo, maggiore diventa la differenza di velocità durante il caricamento.
  • Quanto è veloce la tua connessione al database? Quanto più lontano è dal tuo codice, tanto più evidente questa differenza diventa.
  • Hai abbastanza RAM per archiviare i risultati tipici del caricamento ansioso? Memorizzare nella cache le cose in memoria di solito porta a un aumento generale, fino a quando non si oltrepassa un passaggio nella gerarchia della memoria - quindi può diventare drasticamente più lento. Quello che succede dipende dal tuo carico di lavoro tipico.
  • Qual è il tuo modello di accesso all'entità caratteristica? Se in realtà si cammina l'albero degli oggetti connessi durante il normale funzionamento, allora il caricamento impaziente fa esattamente questo, e più veloce di quanto farebbe l'ingenua query del database. Se gli accessi sono imprevedibili e vogliono solo leggere nodi molto specifici nella tua rete di oggetti, possono creare un sovraccarico di grandi dimensioni per un uso limitato.

Come sempre in questi casi, la tecnica è utile in alcune situazioni e la sovraingegneria negli altri. Solo tu, con la conoscenza specializzata delle tue reali esigenze, puoi dire quale è per te - e come sempre, di solito non puoi dire senza misurare.

    
risposta data 30.07.2012 - 23:45
fonte

Leggi altre domande sui tag