Che cosa dovrebbe essere pensato di utilizzare sub-select nelle query con database carichi pesanti?

StackOverflow https://stackoverflow.com/questions/520595

Domanda

Stiamo sviluppando un'applicazione con uno strato di persistenza utilizzando OpenJPA1.1 e un DB Oracle come archivio back-end. Userò le query con subselect (vedi la mia domanda a Solving interrogazione JPA trovare l'ultima voce nella lista collegata ).

Ora i miei colleghi di lavoro, osservazione che tali query possono portare a problemi di prestazioni del database è pieno di migliaia di data cliente utilizzati da poche migliaia di utenti concorrenti (che sarà la realtà in produzione).

Quindi, la mia domanda è: esiste un "best practice" utilizzando subselects nelle query sotto questa circostanza? E ciò che deve essere considerato in questo modo?

È stato utile?

Soluzione

Vorrei innanzitutto dimostrare che si tratta di un problema. Ti consigliamo di caricare il database con dati fittizi e vedere come eseguire le query del database cresce più grande. In caso contrario, si stanno spendendo tempo a ottimizzare qualcosa che potrebbe non essere un problema.

Una cosa a cui pensare. In tutti i luoghi con cui ho lavorato, in cui le cose cadono a pezzi non è migliaia di dischi, ma milioni. Hai questo sistema, e funziona bene per un po 'e poi appena inizia a rallentare anche quando si passi più hardware a questo. Il luogo su cui sto lavorando ora ha circa 70 milioni di dischi nella sua storia tabella che risale al 1998. Prestazioni su alcune query è orribile come risultato e stanno spendendo un sacco di tempo a lavorare intorno a questi problemi.

Ma a un certo punto è davvero c'è bisogno di chiedere. Abbiamo bisogno di mantenere i dati di più di 4 anni nel nostro sistema transazionale? O anche 4 mesi di età? Questo limite di tempo dipende dalla vostra esigenza di business, ma se si mantiene il sistema transazionale con solo i dati che è necessario per elaborare i lavori in corso ... e archiviare in un data warehouse i record storici. Potrai migliorare il rendimento complessivo, perché è probabile che sia solo occasionalmente è necessario query che i vecchi dati, quindi perché continuare con i tuoi dati recenti?

Se ci pensate su questo fronte, si risparmia un sacco di mal di testa a lungo termine.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top