powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Влияние смены типа колонки CLOB на VARCHAR(4000) на перформанс с Database Cache
6 сообщений из 6, страница 1 из 1
Влияние смены типа колонки CLOB на VARCHAR(4000) на перформанс с Database Cache
    #38161382
Antei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет, форумчане!

Предыстория .
"перехожу" с Oracle на DB2.
Данные таблиц Oracle хранит данные в блоках, и в большинстве случаев если мы вставляем строку в таблицу, мы получим данные строки (все колонки которые не LOB) сохранённые в одном блокe.
Все LOB данные помещаются в отдельный space, в tablespace нашей таблицы мы будем иметь лишь референс на LOB.

Проблема .
Предположим что есть таблицы
Код: plsql
1.
2.
- T1(F1 NUMBER, F2 CLOB) и
- T2(F1 NUMBER, F2 VARCHAR2(4000))


Предположим что данные по полю F2 нас не интересуют в большинстве случаев.
делаем селект:
Код: plsql
1.
2.
1. SELECT F1 FROM T1
2. SELECT F1 FROM T2

В обоих случаях, т.к. Oracle работает с блоками, он поднимет в буфер всё что есть в блоке по строкам: F1(NUMBER) и F2(референс на CLOB или VARCHAR2)

То есть в случае 1 мы имеем в буфере просто ссылку на CLOB которая достаточно мала, а во 2м - сами строковые данные которые до 4000 байтов на строку таблицы. Т.е. в Оракле - смена CLOB на VARCHAR(4000) на перформанс работы DB Cache бы - повлияла существенно.

Вопрос .
Товарищи эксперты, поясните пожалуйста, как это работает в DB2, какой импакт там?

Спасибо.
...
Рейтинг: 0 / 0
Влияние смены типа колонки CLOB на VARCHAR(4000) на перформанс с Database Cache
    #38161839
В данной ситуации аналогично.
...
Рейтинг: 0 / 0
Влияние смены типа колонки CLOB на VARCHAR(4000) на перформанс с Database Cache
    #38161869
Если LOB небольшого размера (до 32К), его можно хранить прямо в строке таблицы.
Максимальный размер для INLINE-хранения можно задать явно.
Все что больше этого размера будет храниться в отдельном LOB-пространстве.

DB2 V9.7 : Storing LOBs inline in table rows
DB2 V9.7 : Inline LOBs improve performance
...
Рейтинг: 0 / 0
Влияние смены типа колонки CLOB на VARCHAR(4000) на перформанс с Database Cache
    #38161894
mustaccio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AnteiТ.е. в Оракле - смена CLOB на VARCHAR(4000) на перформанс работы DB Cache бы - повлияла существенно.


Зависит от того, что вы понимаете под "перформанс работы DB Cache". Заменив CLOB на VARCHAR(4000), вы будете за одну операцию чтения с диска переносить в буфер меньше строк. Если вы сканируете всю таблицу, то разница в скорости, очевидно, будет. Если вы читаете отдельные записи -- то, скорее всего, нет.

Следует отметить, что вввод/вывод LOBов в ДБ2 не буферизуется, то есть в тех случаях, когда вам все-таки потребуется F2, обращение к CLOB вызовет синхронную операцию чтения с диска.
...
Рейтинг: 0 / 0
Влияние смены типа колонки CLOB на VARCHAR(4000) на перформанс с Database Cache
    #38162461
CawaSPb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antei,

Как Константин написал, ситуация аналогична... и двояка.

Действительно, если CLOB в подавляющем большинстве случаев не трогаем, то при преобразовании его в varchar размер строки вырастет на пару порядков (!!!) (ну, пусть меньше, не все же строки будут в 4000 символов)

НО! У T2 dедь наверняка есть индекс по T1. На селектах типа "2" будет задействован только он.
Работа же с LOB объёктами (особенно если она идёт не через LOB LOCATOR'ы) для базы - это "ад адский".
...
Рейтинг: 0 / 0
Влияние смены типа колонки CLOB на VARCHAR(4000) на перформанс с Database Cache
    #38162716
Antei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем огромное спасибо за исчерпывающие ответы!
Раз ситуация аналогичная с Oracle, тогда проблема становится более понятной.

Резюмируя :
- поля таблицы можно покрыть индексом (ами) не включая VARCHAR(4000) поле, т.е. избежать обращения к таблице
- про-профилировать запросы чтобы понять реальный импакт (просто запросы еще пишутся), действительно ведь импакт будет ощущаться только в случае массивных выборок и возможно лучшим решением будет использовать VARCHAR(4000) (данные здесь планируются всегда под завязку 4000)
- избегаем преобразования CLOB->VARCHAR в SQL запросах если оставляем CLOB
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Влияние смены типа колонки CLOB на VARCHAR(4000) на перформанс с Database Cache
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]