У нас есть запись CLOB, которая больше размера столбца CLOB. Вместо увеличения размера CLOB столбца я решил срезать разливы и поместить их в другой ряд. Это полезно или есть более выгодный способ? Мы используем DB2, Java и JPA.

Например. В моей таблице Numbers есть столбцы с Pkey, NumberName и Digit. Цифра - 10 МБ CLOB.

Пример проблемы: у меня есть новая строка размером 12 МБ CLOB. Это вызовет ошибку. Я думал о том, чтобы добавить еще один столбец, содержащий последовательность, а затем отсечь разливы и разливы этого разлива.

Например. В моей таблице Numbers будут столбцы, Pkey, NumberName, Digit и Sequence.

Последовательность предназначена для того, чтобы я знал, что начать первым, а что добавить вторым и так далее.


| Pkey | NumberName | Цифра | Последовательность |

| 00001 | Пи | 10 МБ | 1 |

| 00002 | Пи | 2 МБ | 2 |


Шансы на то, что что-то превысит эти 10 МБ, редки, примерно 1 раз в 1,5 года и, как правило, нецелесообразно превышать 5 раз в пять раз, поэтому я придерживаюсь увеличения размера CLOB.

0
JaredT 6 Янв 2016 в 18:15

3 ответа

Лучший ответ

Вы просто создаете для себя дополнительную работу и добавляете возможность для ошибок.

Столбцы CLOB могут иметь размер до 2 ГБ; однако будет выделен только фактический размер данных CLOB в каждой строке, поэтому не будет потраченного впустую места, если вы определите столбец CLOB так, чтобы он соответствовал вашему наибольшему значению. Нет никаких причин для искусственного разделения ваших LOB.

http://www-01.ibm.com/support/docview.wss?uid=swg21970879

2
JaredT 7 Янв 2016 в 17:38

Я думаю, что если вы сделаете то, что сказали, это вызовет проблемы с производительностью при перемещении строк таблицы в более крупном приложении. Потому что каждый раз, когда вы запускаете запрос к этой таблице, он должен находить и просматривать все записи, и каждый раз, когда приходят такие данные, и вы их отбрасываете, таблица становится больше. Так что либо вы увеличиваете размер столбца, либо, если не хотите увеличивать, сделайте так. Первые 10 МБ данных войдут в таблицу A, а в другой таблице B будут отброшены значения и сохранены последовательности в этой таблице A.

1
Milan Kamboya 6 Янв 2016 в 15:26

Увеличение размера CLOB - это правильный ответ. Либо увеличьте его до 20 МБ, а затем снова увеличьте, если вы получите 25 МБ ... либо просто увеличьте его до 50 МБ сейчас.

Черт возьми, подумайте об увеличении его до 2 ГБ сейчас ... неиспользуемое пространство не теряется.

1
Charles 6 Янв 2016 в 15:56