Oracle
 sql >> Database >  >> RDS >> Oracle

Oracle 11G - Effetto sulle prestazioni dell'indicizzazione all'inserimento

È vero che è più veloce modificare una tabella se non è necessario modificare anche uno o più indici ed eventualmente eseguire anche il controllo dei vincoli, ma è anche in gran parte irrilevante se poi si devono aggiungere quegli indici. Devi considerare la modifica completa al sistema che desideri effettuare, non solo una singola parte di esso.

Ovviamente se stai aggiungendo una singola riga in una tabella che contiene già milioni di righe, sarebbe sciocco eliminare e ricostruire gli indici.

Tuttavia, anche se hai una tabella completamente vuota in cui aggiungerai diversi milioni di righe, può essere comunque più lento posticipare l'indicizzazione fino a dopo.

La ragione di ciò è che un tale inserimento viene eseguito al meglio con il meccanismo del percorso diretto e quando si utilizzano gli inserimenti del percorso diretto in una tabella con indici su di essa, vengono creati segmenti temporanei che contengono i dati necessari per creare gli indici (dati più ID di riga ). Se quei segmenti temporanei sono molto più piccoli della tabella che hai appena caricato, saranno anche più veloci da scansionare e da cui costruire gli indici.

l'alternativa, se sulla tabella sono presenti cinque indici, è eseguire cinque scansioni complete della tabella dopo averlo caricato per creare gli indici.

Ovviamente ci sono enormi zone d'ombra coinvolte qui, ma complimenti per:

  1. Autorità di interrogazione e regole generali e
  2. Esecuzione di test effettivi per determinare i fatti nel tuo caso.

Modifica:

Ulteriori considerazioni:esegui un backup mentre gli indici vengono eliminati. Ora, a seguito di un ripristino di emergenza, devi disporre di uno script che verifichi che tutti gli indici siano a posto, quando l'azienda ti ha il fiato sul collo per ripristinare il sistema.

Inoltre, se eri assolutamente determinato a non mantenere gli indici durante un caricamento in blocco, non eliminare gli indici, disabilitali invece. Ciò preserva i metadati per l'esistenza e la definizione degli indici e consente un processo di ricostruzione più semplice. Fai solo attenzione a non riattivare accidentalmente gli indici troncando la tabella, poiché ciò renderà nuovamente abilitati gli indici disabilitati.