定义Oracle中CLOB的大小



我正在创建一个表,在其中存储XML。为了存储XML,我使用CLOB数据类型。XML的最大大小为5kb。

创建表时应该定义CLOB列的大小?

在设置clob时不需要精确地定义大小(不像varchar)。它就是简单的clob

lob的最大大小为4Gb。

在存储方面,它将使用如下的空间:

  1. 如果lob被定义为in-row,并且lob小于~ 4kb,它将占用文档的空间量。(例如,存储一个512字节的xml行,它将使用512字节。
  2. 如果lob是在行外定义的(或超过4kb),那么它将使用创建表时定义的"块"大小的倍数。

创建lob列时,可以指定它的存储子句来控制行内和行外选项,如下所示:

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

。这将指定lob永远不能与常规表数据内联存储,并且将以每个块16kb的倍数分配存储空间,因此即使您的文档是1kb,它也将占用16kb的存储空间。

如果您的XML文档只有5kb,您可能想要考虑行内存储,并放置一个小块大小(最小块大小是1块,所以如果您有一个4kb区段的表空间,您的最小块大小将是4kb;如果您指定的更少,它将被忽略)。允许行内lob的缺点是表将更大,因此大范围扫描可能会受到一些影响(但是lob检索更快)。

同样在11g中,您可以选择压缩您可能想要考虑的lob段(如果您的许可证涵盖它)。尽管使用这些小文档,您可能不会受益匪浅。

阅读更多:http://docs.oracle.com/cd/B28359_01/appdev.111/b28393/adlob_tables.htm

最新更新