Domanda

Ho intenzione di archiviare come 5 TB dati in una tabella. Di seguito è riportato lo script predefinito che ho generato per creare la tabella:

CREATE TABLE measurements
(
 measurementtime              DATE NOT NULL,
 height number,
 offset number
)
PCTFREE    10
PCTUSED
INITRANS   1
MAXTRANS   255
TABLESPACE mytablespace
STORAGE   (
  INITIAL     262144
  NEXT
  PCTINCREASE
  MINEXTENTS  1
  MAXEXTENTS  2147483645
  FREELIST GROUPS  0
  FREELISTS  0
 )

Puoi per favore dire se devo modificare uno dei parametri?

È stato utile?

Soluzione

È difficile dare buoni consigli senza conoscere l'intero sistema. Le idee seguenti sono ipotesi in base alla tua sceneggiatura e alla tua domanda precedente Come si progetta una tabella che memorizzerà dati molto grandi? Ma non credere a tutto ciò che leggi. Dovrai fare molti test. Puoi facilmente passare molti giorni a cercare di ottimizzare un tavolo come questo.

  1. PCTFREE 0: se hai 5 TB e nessun indice, presumo che non farai aggiornamenti. Se è vero, puoi cambiare PCTFree su 0 e risparmiare il 10% del tuo spazio.

  2. NOLOGGING: se non hai bisogno di recuperare i tuoi dati e se il tuo database è in modalità Archivelog, potresti voler aggiungere Nologging. Nologging con gli inserti ad appendici non genererà REDO. (Questo può essere inutile se il tuo tablespace è già impostato su Nologging.)

  3. Parallel: vorrai sicuramente usare il parallelismo con questo tavolo. Poiché questa tabella è probabilmente insolita per il tuo sistema, è probabilmente meglio definire il parallelismo a livello di dichiarazione o sessione. Ma se non avrai il controllo su tutte le dichiarazioni eseguite rispetto a questa tabella, potresti prendere in considerazione di definire la laurea qui per assicurarti che le dichiarazioni non funzionino in seriale.

  4. Rimuovi le opzioni sconosciute: penso che dovresti rimuovere tutte le opzioni che non hai impostato specificamente o non hai capito. Se hai usato uno strumento come Toad o DBMS_Metadata per generare lo script, elencheranno sempre ogni opzione, ma di solito dovresti lasciare la maggior parte di quelle cose e lasciare che Oracle usi tutto ciò che gli piace.

  5. Compressione/partizionamento: come Gary menzionato, il partizionamento può essere molto utile. Ma nella tua domanda precedente hai menzionato la memorizzazione fino a 200 TB e solo 5 TB al giorno. Stai usando il partizionamento di un uomo povero; Re-danni e ricreare il tavolo ogni giorno? Se questo è solo un giorno di dati, la compressione dovrebbe essere molto utile per la misurazione.

  6. Dimensione del blocco: non sono sicuro di quali siano le impostazioni di "mytablespace", ma dal momento che non hai menzionato nulla al riguardo, immagino che tu stia usando la dimensione del blocco standard. Esso potrebbe Vale la pena usare una dimensione di blocco elevato per questa tabella in modo da poter ottenere una compressione ancora migliore (poiché la compressione viene eseguita per blocco, più dati in un blocco più oracle possono comprimere). Sono riluttante a suggerire questo, perché il 99% delle volte in cui le persone cambiano la dimensione del blocco non fanno ciò che pensano che dovrebbe. Ma con una quantità così grande di dati potrebbe valere la pena considerare.

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