2013-04-05 11 views
6

Ich mache eine Tabelle, in der ich XML speichere. Um XML zu speichern, verwende ich den CLOB-Datentyp. Die maximale Größe meines XML wäre 5kb. Welche Größe der CLOB-Spalte sollte ich beim Erstellen der Tabelle definieren?Größe der CLOB in Oracle definieren

Antwort

10

Sie definieren keine Größe genau beim Setzen eines Clobs (im Gegensatz zu einem Varchar). Es ist einfach clob.

Die maximale Größe eines Lobs ist 4 Gb.

Lagerung weise wird es Raum wie folgt verwenden:

  1. wenn das lob als in-Reihe definiert ist, und das lob weniger als ~ 4 kb, es wird nur die Menge an Platz in Anspruch nehmen, dass das Dokument ist. (zB speichert ein xml von 512 Bytes in Zeile und es wird 512 Bytes verwenden.
  2. Wenn der Lob außerhalb der Zeile definiert ist (oder 4kb überschritten), dann wird es ein Vielfaches der "Chunk" Größe verwenden, die Sie wann definiert . Erstellen der Tabelle

wenn eine lOB-Spalte erstellen, können Sie seine Speicher Klausel angeben kann in-Reihe steuern und out-of-Row-Optionen wie folgt aus:

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

dh, die angeben würde, dass die lob kann niemals inline mit den regulären Tabellendaten gespeichert werden und weist Speicher in Vielfachen von 16kb pro Chunk zu. Selbst wenn Ihr Dokument 1kb groß wäre, würde es 16kb sto benötigen Rage.

Wenn Ihre XML-Dokumente nur 5kb groß sind, sollten Sie den In-Row-Speicher in Betracht ziehen und eine kleine Chunk-Größe eingeben (die Chunk-Größe ist 1 Block. Wenn Sie also einen Tablespace mit 4KB Extents haben, ist Ihr Minumum Chunk Größe wird 4kb sein; wenn Sie weniger angeben, wird es ignoriert). Der Nachteil, in-row Lobs zuzulassen, ist, dass die Tabelle größer sein wird, so dass große Bereich Scans ein wenig leiden können (aber Lob-Abruf ist schneller).

Auch in 11g haben Sie die Möglichkeit, LOB-Segmente zu komprimieren, die Sie vielleicht in Erwägung ziehen (wenn Ihre Lizenz dies deckt). Mit solch kleinen Dokumenten mag Ihnen das nicht viel nützen.

mehr hier lesen: http://docs.oracle.com/cd/B28359_01/appdev.111/b28393/adlob_tables.htm

+5

In 11g, die maximale Größe eines LOB (4 GB - 1) * (DB Blockgröße), die mit TB zwischen 8 und 128 arbeitet. Nicht so viele Leute müssen die alten 4 GB überschreiten, aber Sie können. http://docs.oracle.com/cd/B28359_01/server.111/b28320/limits001.htm –