SQL - Ottimizzazione del database
Ci vuole tempo per diventare un esperto di database o un amministratore di database esperto. Tutto questo viene fornito con molta esperienza in vari progetti di database e buoni corsi di formazione.
Ma il seguente elenco può essere utile per i principianti per avere buone prestazioni del database -
Usa il design del database 3BNF spiegato in questo tutorial nel capitolo Concetti di RDBMS.
Evita le conversioni da numero a carattere perché numeri e caratteri si confrontano in modo diverso e portano a un downgrade delle prestazioni.
Durante l'utilizzo dell'istruzione SELECT, recupera solo le informazioni richieste ed evita di utilizzare * nelle query SELECT perché caricherebbe il sistema inutilmente.
Crea i tuoi indici con attenzione su tutte le tabelle in cui hai frequenti operazioni di ricerca. Evita l'indice sulle tabelle in cui hai un numero inferiore di operazioni di ricerca e un numero maggiore di operazioni di inserimento e aggiornamento.
Una scansione completa della tabella si verifica quando alle colonne nella clausola WHERE non è associato un indice. È possibile evitare una scansione completa della tabella creando un indice sulle colonne utilizzate come condizioni nella clausola WHERE di un'istruzione SQL.
Fai molta attenzione agli operatori di uguaglianza con numeri reali e valori di data / ora. Entrambi possono presentare piccole differenze che non sono evidenti alla vista ma che rendono impossibile una corrispondenza esatta, impedendo così alle tue query di restituire righe.
Usa la corrispondenza dei modelli con giudizio. LIKE COL% è una condizione WHERE valida, riducendo il set restituito solo ai record con dati che iniziano con la stringa COL. Tuttavia, COL% Y non riduce ulteriormente il set di risultati restituito poiché% Y non può essere valutato efficacemente. Lo sforzo per fare la valutazione è troppo grande per essere considerato. In questo caso, viene utilizzato il COL%, ma il% Y viene gettato via. Per lo stesso motivo, un carattere jolly iniziale% COL impedisce in modo efficace l'utilizzo dell'intero filtro.
Ottimizza le tue query SQL esaminando la struttura delle query (e sottoquery), la sintassi SQL, per scoprire se hai progettato le tue tabelle per supportare la manipolazione rapida dei dati e scritto la query in modo ottimale, consentendo al tuo DBMS di manipolare i dati in modo efficiente .
Per le query eseguite regolarmente, provare a utilizzare le procedure. Una procedura è un gruppo potenzialmente ampio di istruzioni SQL. Le procedure vengono compilate dal motore di database e quindi eseguite. A differenza di un'istruzione SQL, il motore di database non ha bisogno di ottimizzare la procedura prima che venga eseguita.
Se possibile, evitare di utilizzare l'operatore logico OR in una query. O inevitabilmente rallenta quasi tutte le query su una tabella di dimensioni notevoli.
È possibile ottimizzare i caricamenti di dati in blocco eliminando gli indici. Immagina la tabella della cronologia con molte migliaia di righe. È probabile che anche quella tabella della cronologia abbia uno o più indici. Quando si pensa a un indice, normalmente si pensa a un accesso più rapido alla tabella, ma nel caso di caricamenti batch, è possibile trarre vantaggio dall'eliminazione degli indici.
Quando si eseguono transazioni batch, eseguire COMMIT dopo la creazione di un discreto numero di record invece di crearli dopo ogni creazione di record.
Pianificare la deframmentazione del database su base regolare, anche se farlo significa sviluppare una routine settimanale.
Strumenti di sintonizzazione incorporati
Oracle ha molti strumenti per la gestione delle prestazioni delle istruzioni SQL, ma tra questi due sono molto popolari. Questi due strumenti sono:
Explain plan - lo strumento identifica il percorso di accesso che verrà preso quando viene eseguita l'istruzione SQL.
tkprof - misura le prestazioni in base al tempo trascorso durante ciascuna fase dell'elaborazione dell'istruzione SQL.
Se si desidera misurare semplicemente il tempo trascorso di una query in Oracle, è possibile utilizzare il comando SQL * Plus SET TIMING ON.
Controlla la tua documentazione RDBMS per maggiori dettagli sugli strumenti sopra menzionati e sulla deframmentazione del database.