Определение размера CLOB в Oracle

Я делаю таблицу, в которой я храню XML. Для хранения XML я использую тип данных CLOB. Максимальный размер моего XML будет 5kb. Какой размер столбца CLOB следует определить при создании таблицы?

1 ответов


вы не определяете размер точно при установке clob (в отличие от varchar). это просто clob.

максимальный размер lob 4Gb.

хранение мудрое он будет использовать пространство следующим образом:

  1. если lob определен как In-row , а lob меньше ~ 4kb, он просто займет объем пространства, который представляет собой документ. (например, храните xml 512 байт в строке, и он будет использовать 512 байт.
  2. если lob определен вне строки (или превышено 4kb), то он будет использовать несколько размеров "куска", которые вы определили при создании таблицы.

при создании столбца lob вы можете указать его предложение хранения для управления параметрами in-row и out-of-row следующим образом:

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

т. е. это указывает, что lob никогда не может быть сохранен в строке с данными обычной таблицы и будет выделять хранилище кратными 16 Кб на кусок, поэтому, даже если ваш документ был 1 Кб, это займет 16 Кб место хранения.

Если ваши xml-документы только 5kb, вы можете рассмотреть хранение в строке и поместить небольшой размер куска (минимальный размер куска-1 блок, поэтому, если у вас есть табличное пространство с экстентами 4kb, ваш размер куска minumum будет 4kb; если вы укажете меньше, он будет проигнорирован). недостатком разрешения In-row lobs является то, что таблица будет больше, поэтому сканирование большого диапазона может немного пострадать (но поиск lob быстрее).

также в 11g у вас есть возможность сжать lob сегменты, которые вы можете рассмотреть (если ваша лицензия охватывает его). Хотя с такими маленькими документами вы можете не извлечь большой пользы.

подробнее здесь:http://docs.oracle.com/cd/B28359_01/appdev.111/b28393/adlob_tables.htm