powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Не меняются значения результата процедуры REORGCHK после выполнения REORG TABLE и RUNSTATS
7 сообщений из 7, страница 1 из 1
Не меняются значения результата процедуры REORGCHK после выполнения REORG TABLE и RUNSTATS
    #38915340
ASukhov1986
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть некоторый SQL запрос в котором есть обращение через join к большим таблицам (для одной БД1 это приблизительно по 7млн. строк каждая, а для другой БД2 200тыс) T1 и T2.
В каждой из этих таблиц есть первичный составной ключ (PK1 и PK2) с двумя столбцами.
В каждой из этих таблиц есть индекс (IX1 и IX2) по второму столбцу первичного ключа.
Выполнив запрос на БД2 у меня используется команда IDXSCAN по индексам IX1 и IX2.
Выполнив запрос на БД1 у меня используется команда TBSCAN по таблицам T1 и T2.
Я хочу избавиться от этих TBSCAN и поэтому выполнил следующие действия:
С помощью команды REORGCHK для T1 и T2 получил статистику
статистика для индексов PK1 и IX1 таблицы T1
SCHEMA NAME CARD LEAF ELEAF LVLS ISIZE NDEL KEYS F4 F5 F6 F7 F8 REORG
-------------------------------------------------------------------------------------------------
Таблица: DB2INST4.T1
DB2INST4 IX1 7e+006 31842 0 4 8 0 6e+006 20 89 102 0 0 *-*--
DB2INST4 PK1 7e+006 42292 0 4 12 0 7e+006 84 89 53 0 0 -----

статистика для индексов PK1 и IX1 таблицы T1
SCHEMA NAME CARD LEAF ELEAF LVLS ISIZE NDEL KEYS F4 F5 F6 F7 F8 REORG
-------------------------------------------------------------------------------------------------
Таблица: DB2INST4.T2
DB2INST4 IX2 7e+006 32556 0 4 8 0 7e+006 29 89 99 0 0 *----
DB2INST4 PK2 7e+006 41664 0 4 12 0 7e+006 68 89 54 0 0 *----


С помощью команды REORG TABLE выполнил реорганизацию таблицы T1 и T2

C помощью команды RUNSTATS ON TABLE FOR T1 INDEXES ALL ALLOW WRITE ACCESS получил статистику для всех индексов T1 и T2.

Выполнил SQL запрос в плане TBSCAN не удалились и при выполнении REORGCHK для T1 и T2 я получаю такую же статистику.
Вопрос: как мне избавиться в этом случае от TBSCAN?
P.S. также я выполнял: 1) реорганизацию индексов IX1,IX2,PK1 и PK2; 2) удалял из кэша план выполнения запроса. Все это тоже не помогло!
...
Рейтинг: 0 / 0
Не меняются значения результата процедуры REORGCHK после выполнения REORG TABLE и RUNSTATS
    #38916153
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ASukhov1986,

Обычно сначала пытаются добиться нужного плана по-хорошему, собирая статистику или использую статистические представления.
Если оптимизатор не хочет менять план доступа, а вы все-таки хотите его поменять, то можно использовать оптимизационные профили.
Обе техники описаны в статье ниже.
Influence query optimization with optimization profiles and statistical views in DB2 9
...
Рейтинг: 0 / 0
Не меняются значения результата процедуры REORGCHK после выполнения REORG TABLE и RUNSTATS
    #38919384
ASukhov1986
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark Barinstein, но у меня все равно возникает вопрос:
почему после выполнения реорганизации таблиц T1 и T2, а затем обновления статистики по всех индексам этих таблиц у меня после выполнения команды REORGCHK для T1 и T2 я получаю статистику в которой для всех индексов значение формул F4 и REORG не изменились?
P.S.
статистика для индексов PK1 и IX1 таблицы T1
SCHEMA NAME CARD LEAF ELEAF LVLS ISIZE NDEL KEYS F4 F5 F6 F7 F8 REORG
-------------------------------------------------------------------------------------------------
Таблица: DB2INST4.T1
DB2INST4 IX1 7e+006 31842 0 4 8 0 6e+006 20 89 102 0 0 *-*--
DB2INST4 PK1 7e+006 42292 0 4 12 0 7e+006 84 89 53 0 0 -----


статистика для индексов PK1 и IX1 таблицы T2
SCHEMA NAME CARD LEAF ELEAF LVLS ISIZE NDEL KEYS F4 F5 F6 F7 F8 REORG
-------------------------------------------------------------------------------------------------
Таблица: DB2INST4.T2
DB2INST4 IX2 7e+006 32556 0 4 8 0 7e+006 29 89 99 0 0 *----
DB2INST4 PK2 7e+006 41664 0 4 12 0 7e+006 68 89 54 0 0 *----
...
Рейтинг: 0 / 0
Не меняются значения результата процедуры REORGCHK после выполнения REORG TABLE и RUNSTATS
    #38919460
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ASukhov1986,

F4 - это степень кластеризации данных по индексу. Т.е., грубо говоря, насколько физически данные расположены в порядке, заданном этим индексом. Вы можете попытаться реорганизовать данные в порядке следования только какого-то одного индекса, если вы понимаете, зачем это делается и надо ли оно вам.
Для этого надо либо этот индекс объявить кластерным (тогда reorg по-умолчанию будет данные стараться помещать в его порядке), либо явно его указывать в команде reorg типа:
Код: plaintext
reorg table T1 index IX1
После такого reorg, собрав статистику, вы увидите для IX1 в F4 что-то близкое к 100, но для других индексов оно может быть каким угодно.
...
Рейтинг: 0 / 0
Не меняются значения результата процедуры REORGCHK после выполнения REORG TABLE и RUNSTATS
    #38920451
ASukhov1986
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark Barinstein,
попробую вначале на тестовой БД, а потом на промышленной БД
...
Рейтинг: 0 / 0
Не меняются значения результата процедуры REORGCHK после выполнения REORG TABLE и RUNSTATS
    #38920978
ASukhov1986
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark Barinstein,
у меня есть вопрос по статье Influence query optimization with optimization profiles and statistical views in DB2 9:
По какой формуле определяется The cardinality (я так понимаю это мощность предиката)?

P.S.
В статье это строчка выгладит так: The cardinality is 10 * 10 * 0.1 = 10.
где 0.1 - это селективность, а вот что такое 10 и 10 непонятно.
...
Рейтинг: 0 / 0
Не меняются значения результата процедуры REORGCHK после выполнения REORG TABLE и RUNSTATS
    #38921172
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ASukhov1986,

column cardinality (colcard) - кол-во разных значений в поле таблицы (поле syscat.columns.colcard)
table cardinality (card) - кол-во записей в таблице (поле syscat.tables.card)

join cardinality (T1.C1 = T2.C1) = (T1 card) * (T2 card) * selectivity
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Не меняются значения результата процедуры REORGCHK после выполнения REORG TABLE и RUNSTATS
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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