Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Влияние смены типа колонки CLOB на VARCHAR(4000) на перформанс с Database Cache
|
|||
|---|---|---|---|
|
#18+
Привет, форумчане! Предыстория . "перехожу" с Oracle на DB2. Данные таблиц Oracle хранит данные в блоках, и в большинстве случаев если мы вставляем строку в таблицу, мы получим данные строки (все колонки которые не LOB) сохранённые в одном блокe. Все LOB данные помещаются в отдельный space, в tablespace нашей таблицы мы будем иметь лишь референс на LOB. Проблема . Предположим что есть таблицы Код: plsql 1. 2. Предположим что данные по полю F2 нас не интересуют в большинстве случаев. делаем селект: Код: plsql 1. 2. В обоих случаях, т.к. Oracle работает с блоками, он поднимет в буфер всё что есть в блоке по строкам: F1(NUMBER) и F2(референс на CLOB или VARCHAR2) То есть в случае 1 мы имеем в буфере просто ссылку на CLOB которая достаточно мала, а во 2м - сами строковые данные которые до 4000 байтов на строку таблицы. Т.е. в Оракле - смена CLOB на VARCHAR(4000) на перформанс работы DB Cache бы - повлияла существенно. Вопрос . Товарищи эксперты, поясните пожалуйста, как это работает в DB2, какой импакт там? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2013, 19:53 |
|
||
|
Влияние смены типа колонки CLOB на VARCHAR(4000) на перформанс с Database Cache
|
|||
|---|---|---|---|
|
#18+
В данной ситуации аналогично. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2013, 10:38 |
|
||
|
Влияние смены типа колонки CLOB на VARCHAR(4000) на перформанс с Database Cache
|
|||
|---|---|---|---|
|
#18+
Если LOB небольшого размера (до 32К), его можно хранить прямо в строке таблицы. Максимальный размер для INLINE-хранения можно задать явно. Все что больше этого размера будет храниться в отдельном LOB-пространстве. DB2 V9.7 : Storing LOBs inline in table rows DB2 V9.7 : Inline LOBs improve performance ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2013, 11:00 |
|
||
|
Влияние смены типа колонки CLOB на VARCHAR(4000) на перформанс с Database Cache
|
|||
|---|---|---|---|
|
#18+
AnteiТ.е. в Оракле - смена CLOB на VARCHAR(4000) на перформанс работы DB Cache бы - повлияла существенно. Зависит от того, что вы понимаете под "перформанс работы DB Cache". Заменив CLOB на VARCHAR(4000), вы будете за одну операцию чтения с диска переносить в буфер меньше строк. Если вы сканируете всю таблицу, то разница в скорости, очевидно, будет. Если вы читаете отдельные записи -- то, скорее всего, нет. Следует отметить, что вввод/вывод LOBов в ДБ2 не буферизуется, то есть в тех случаях, когда вам все-таки потребуется F2, обращение к CLOB вызовет синхронную операцию чтения с диска. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2013, 11:18 |
|
||
|
Влияние смены типа колонки CLOB на VARCHAR(4000) на перформанс с Database Cache
|
|||
|---|---|---|---|
|
#18+
Antei, Как Константин написал, ситуация аналогична... и двояка. Действительно, если CLOB в подавляющем большинстве случаев не трогаем, то при преобразовании его в varchar размер строки вырастет на пару порядков (!!!) (ну, пусть меньше, не все же строки будут в 4000 символов) НО! У T2 dедь наверняка есть индекс по T1. На селектах типа "2" будет задействован только он. Работа же с LOB объёктами (особенно если она идёт не через LOB LOCATOR'ы) для базы - это "ад адский". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2013, 15:53 |
|
||
|
Влияние смены типа колонки CLOB на VARCHAR(4000) на перформанс с Database Cache
|
|||
|---|---|---|---|
|
#18+
Всем огромное спасибо за исчерпывающие ответы! Раз ситуация аналогичная с Oracle, тогда проблема становится более понятной. Резюмируя : - поля таблицы можно покрыть индексом (ами) не включая VARCHAR(4000) поле, т.е. избежать обращения к таблице - про-профилировать запросы чтобы понять реальный импакт (просто запросы еще пишутся), действительно ведь импакт будет ощущаться только в случае массивных выборок и возможно лучшим решением будет использовать VARCHAR(4000) (данные здесь планируются всегда под завязку 4000) - избегаем преобразования CLOB->VARCHAR в SQL запросах если оставляем CLOB ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2013, 18:49 |
|
||
|
|

start [/forum/topic.php?fid=43&msg=38162716&tid=1601526]: |
0ms |
get settings: |
8ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 264ms |
| total: | 411ms |

| 0 / 0 |
