Data Warehousing - Ottimizzazione
Un data warehouse continua a evolversi ed è imprevedibile quale query l'utente pubblicherà in futuro. Pertanto diventa più difficile mettere a punto un sistema di data warehouse. In questo capitolo, discuteremo come ottimizzare i diversi aspetti di un data warehouse come le prestazioni, il caricamento dei dati, le query, ecc.
Difficoltà nell'ottimizzazione del data warehouse
La messa a punto di un data warehouse è una procedura difficile per i seguenti motivi:
Il data warehouse è dinamico; non rimane mai costante.
È molto difficile prevedere quale query l'utente pubblicherà in futuro.
I requisiti aziendali cambiano con il tempo.
Gli utenti e i loro profili continuano a cambiare.
L'utente può passare da un gruppo all'altro.
Anche il carico dei dati nel magazzino cambia nel tempo.
Note - È molto importante avere una conoscenza completa del data warehouse.
Valutazione delle prestazioni
Ecco un elenco di misure oggettive della performance:
- Tempo medio di risposta alle query
- Velocità di scansione
- Tempo utilizzato per query giornaliera
- Utilizzo della memoria per processo
- Velocità di trasmissione I / O
Di seguito sono riportati i punti da ricordare.
È necessario specificare le misure nell'accordo sul livello di servizio (SLA).
È inutile cercare di regolare i tempi di risposta, se sono già migliori di quelli richiesti.
È essenziale avere aspettative realistiche durante la valutazione delle prestazioni.
È anche essenziale che gli utenti abbiano aspettative realizzabili.
Per nascondere la complessità del sistema all'utente, è necessario utilizzare aggregazioni e visualizzazioni.
È anche possibile che l'utente possa scrivere una query per la quale non eri sintonizzato.
Ottimizzazione del caricamento dei dati
Il caricamento dei dati è una parte fondamentale dell'elaborazione notturna. Nient'altro può essere eseguito fino al completamento del caricamento dei dati. Questo è il punto di ingresso nel sistema.
Note- Se si verifica un ritardo nel trasferimento dei dati o nell'arrivo dei dati, l'intero sistema ne risente gravemente. Pertanto è molto importante regolare prima il caricamento dei dati.
Esistono vari approcci per l'ottimizzazione del caricamento dei dati discussi di seguito:
L'approccio molto comune consiste nell'inserire i dati utilizzando il SQL Layer. In questo approccio, devono essere eseguiti controlli e vincoli normali. Quando i dati vengono inseriti nella tabella, il codice verrà eseguito per verificare lo spazio sufficiente per inserire i dati. Se non è disponibile spazio sufficiente, potrebbe essere necessario allocare più spazio a queste tabelle. Questi controlli richiedono tempo per essere eseguiti e sono costosi per la CPU.
Il secondo approccio consiste nell'aggirare tutti questi controlli e vincoli e inserire i dati direttamente nei blocchi preformattati. Questi blocchi vengono successivamente scritti nel database. È più veloce del primo approccio, ma può funzionare solo con interi blocchi di dati. Questo può portare a uno spreco di spazio.
Il terzo approccio è che durante il caricamento dei dati nella tabella che già contiene la tabella, possiamo mantenere gli indici.
Il quarto approccio dice che per caricare i dati in tabelle che già contengono dati, drop the indexes & recreate themquando il caricamento dei dati è completo. La scelta tra il terzo e il quarto approccio dipende dalla quantità di dati già caricati e dal numero di indici da ricostruire.
Controlli di integrità
Il controllo dell'integrità influisce notevolmente sulle prestazioni del carico. Di seguito sono riportati i punti da ricordare:
I controlli di integrità devono essere limitati perché richiedono un'elevata potenza di elaborazione.
I controlli di integrità dovrebbero essere applicati al sistema di origine per evitare un degrado delle prestazioni del carico di dati.
Query di ottimizzazione
Abbiamo due tipi di query nel data warehouse:
- Query fisse
- Query ad hoc
Query fisse
Le query fisse sono ben definite. Di seguito sono riportati gli esempi di query fisse:
- rapporti regolari
- Query predefinite
- Aggregazioni comuni
L'ottimizzazione delle query fisse in un data warehouse è la stessa di un sistema di database relazionale. L'unica differenza è che la quantità di dati da interrogare potrebbe essere diversa. È utile memorizzare il piano di esecuzione di maggior successo durante il test delle query fisse. La memorizzazione di questi piani di esecuzione ci consentirà di individuare la modifica della dimensione dei dati e l'inclinazione dei dati, poiché causerà la modifica del piano di esecuzione.
Note - Non possiamo fare di più sulla tabella dei fatti, ma trattando le tabelle delle dimensioni o le aggregazioni, è possibile utilizzare la solita raccolta di modifiche SQL, meccanismi di archiviazione e metodi di accesso per ottimizzare queste query.
Query ad hoc
Per comprendere le query ad hoc, è importante conoscere gli utenti ad hoc del data warehouse. Per ogni utente o gruppo di utenti, è necessario conoscere quanto segue:
- Il numero di utenti nel gruppo
- Se utilizzano query ad hoc a intervalli di tempo regolari
- Indica se utilizzano frequentemente query ad hoc
- Se utilizzano occasionalmente query ad hoc a intervalli sconosciuti.
- La dimensione massima della query che tendono a eseguire
- La dimensione media della query che tendono a eseguire
- Se richiedono l'accesso drill-down ai dati di base
- Il tempo di accesso trascorso al giorno
- L'ora di punta dell'utilizzo quotidiano
- Il numero di query eseguite per ora di punta
Points to Note
È importante tenere traccia dei profili dell'utente e identificare le query eseguite regolarmente.
È anche importante che la messa a punto eseguita non influisca sulle prestazioni.
Identifica query simili e ad hoc che vengono eseguite di frequente.
Se queste query vengono identificate, il database cambierà e sarà possibile aggiungere nuovi indici per tali query.
Se queste query vengono identificate, è possibile creare nuove aggregazioni specificamente per quelle query che risulterebbero nella loro esecuzione efficiente.