2013-04-05 8 views
6

Sto creando una tabella in cui sto memorizzando XML. Per memorizzare XML sto usando il tipo di dati CLOB. La dimensione massima del mio XML sarebbe 5kb. Quale dimensione della colonna CLOB dovrei definire durante la creazione della tabella?Definizione della dimensione di CLOB in Oracle

risposta

10

non si definisce esattamente una dimensione quando si imposta un clob (a differenza di un varchar). è semplicemente clob.

La dimensione massima di un pallonetto è 4Gb.

bagagli saggio userà lo spazio come segue:

  1. se il pallonetto è definito come in fila, con il destro e è inferiore a ~ 4 KB, ci vorrà solo la quantità di spazio che il documento è. (ad esempio, memorizza un xml di 512 byte in fila e utilizzerà 512 byte.
  2. se il lob è definito fuori riga (o ha superato 4kb), quindi utilizzerà un multiplo della dimensione "chunk" che è stata definita quando . la creazione della tabella

la creazione di colonne pallonetto, è possibile specificare la sua clausola di archiviazione per il controllo e out-of-row opzioni in fila in questo modo:

LOB (c) STORE AS lobseg (DISABLE STORAGE IN ROW CHUNK 16384) 

cioè che sarebbe specificare che il il lob non può mai essere memorizzato in linea con i normali dati della tabella e allocherà lo storage in multipli di 16kb per chunk, quindi anche se il tuo documento fosse 1kb, ci vorrebbero 16kb di sto rabbia.

se i tuoi documenti xml sono solo 5kb, potresti prendere in considerazione l'archiviazione in fila e mettere una piccola dimensione del blocco (la dimensione del blocco minimo è di 1 blocco, quindi se hai un tablespace con estensioni 4kb, il tuo pezzo minimo la dimensione sarà 4kb, se specifichi di meno, sarà ignorata). lo svantaggio di consentire i lob in-row è che la tabella sarà più grande, pertanto le scansioni a intervallo esteso potrebbero soffrire un po '(ma il recupero del lob è più veloce).

Anche in 11g si ha la possibilità di comprimere segmenti di lobi che è possibile prendere in considerazione (se la licenza lo copre). Anche se con documenti così piccoli potresti non trarne grandi benefici.

maggiori qui: http://docs.oracle.com/cd/B28359_01/appdev.111/b28393/adlob_tables.htm

+5

In 11g, la dimensione massima di un LOB è (4 GB - 1) * (DB dimensione del blocco), che funziona a tra 8 e 128 TB. Non è necessario che molte persone superino il vecchio limite di 4 GB, ma è possibile. http://docs.oracle.com/cd/B28359_01/server.111/b28320/limits001.htm –