Включает ли команда DB2 EXPLAIN стоимость обновления индекса для операторов INSERT

В настоящее время мы работаем над улучшением имеющихся у нас индексов для набора таблиц. В выводе EXPLAIN я вижу улучшение производительности определенных запросов SELECT, когда для таблицы создается соответствующий индекс. Однако я не знаю, включает ли EXPLAIN дополнительные индексы стоимости, связанные с операторами INSERT (и UPDATE).

Я создал тестовый оператор вставки, но он показывает одинаковую стоимость в таймронах независимо от индексов, которые я создаю для определенной таблицы.

Спасибо за ваш вклад!


person markus    schedule 26.05.2014    source источник


Ответы (1)


Прямо из руководство IBM.

Данные EXPLAIN содержат информацию о пути доступа, который DB2 использует для обработки операторов SQL. Основное использование данных EXPLAIN - исследование путей доступа для частей SELECT ваших операторов. Например, данные в таблицах EXPLAIN описывают:

Используется ли индексный доступ или просмотр табличного пространства для каждого доступа к таблице. Когда используется доступ к индексу, сколько индексов и столбцов индексов используются. Какие типы методов ввода-вывода используются для чтения страниц данных. Используемые методы и типы соединения, а также порядок, в котором DB2 соединяет таблицы. Когда и почему DB2 сортирует строки данных.

Для UPDATE и DELETE WHERE CURRENT OF и для INSERT предоставляется несколько меньше информации. Данные EXPLAIN не описывают все или все типы доступа. Например, доступ к значениям LOB, которые хранятся отдельно от базовой таблицы, и доступ к родительским или зависимым таблицам, необходимый для применения ссылочных ограничений, не отображается в данных таблицы EXPLAIN.

Вам нужно будет поэкспериментировать на тестовой системе DB2, стоит ли добавление индекса для повышения производительности SELECT затрат на INSERTS, UPDATES и DELETES. Для большинства систем, в которых имеется намного больше SELECTS, чем изменений, стоимость индекса обычно оправдана.

person Gilbert Le Blanc    schedule 26.05.2014
comment
Я пробовал свои операторы SELECT и INSERT в тестовой БД. Расчетная стоимость timeron для оператора SELECT изменилась, когда я изменил индекс таблицы. Однако стоимость оператора INSERT оставалась неизменной независимо от того, какой индекс я объявил в таблице. Информация в руководстве не указывает, включена ли стоимость связанных изменений индекса в оценочную стоимость оператора INSERT. Какие-нибудь дополнительные указатели на это? - person markus; 26.05.2014
comment
@markus: Опять же, для UPDATE и DELETE WHERE CURRENT OF и для INSERT предоставляется несколько меньше информации. Так что нет, объяснение INSERT менее чем полезно. Просто запустите эксперименты, используя фактические операторы select и insert в вашей тестовой БД. - person Gilbert Le Blanc; 26.05.2014
comment
хорошо извините за мой комментарий. теперь я понял вашу точку зрения. Спасибо за ваши усилия. - person markus; 26.05.2014