Я создал пользовательскую MQT (материализованную таблицу запросов) в DB2 9.7 (еще не установил пакет 1). Это простая группировка основной таблицы фактов. Но мои запросы не переписываются, чтобы ударить его.Почему DB2 не использует мою таблицу MQT?
Вот что я пробовал:
- Создан MQT с ВКЛЮЧИТЬ Оптимизация запросов и поддерживается характеристиками USER
- Также ОБНОВЛ DEFERRED & DATA INITIALLY Отложенный. (Может быть, я не должен был?)
- Установите переменные реестра, рассказывающие DB2 использовать все типы таблицы MQT для оптимизации
- Ран "SET INTEGRITY для tableX ALL НЕМЕДЛЕННОЙ непроверенных"
- Ран RUNSTATS
- Окрыленный кэш: FLUSH PACKAGE CACHE DYNAMIC
- Обеспечено, что класс оптимизации запроса по умолчанию, по крайней мере на уровне 2 (это на 5)
- Установить обновления по умолчанию возраст до 0 (Тхо Я полагаю, это не имеет значения с заданными пользователем таблицы MQT)
Затем попытался определить, если оптимизатор будет использовать MQT:
- Пробовал различные простые запросы, которые я ожидаю использовать MQT - либо:
- SELECT COUNT (*) FROM FACT_TABLE
- или SELECT group-dimension, COUNT (*) FROM fact_table GROUP BY group-dimension.
- Объяснение (используя db2expln) только ссылки на таблицу фактов, а не результаты запроса МКТ
- показал отсчеты в соответствии с таблицей фактов и не MQT таблицу
- длительность запроса была совместима с таблицей фактов и не MQT таблицу ,
Любые предложения по простому способу определить, использует ли запрос MQT или что я должен попробовать, чтобы заставить его его использовать?
1) Хороший совет: DFT_MTTB_TYPES был установлен в SYSTEM. Я изменил это и «ТЕКУЩИЕ ПОДДЕРЖИВАЕМЫЕ ТАБЛИЦЫ ТИПОВ ДЛЯ ОПТИМИЗАЦИИ» как для ПОЛЬЗОВАТЕЛЯ. Все равно никакого эффекта. 2) Спасибо также здесь. У меня оба определены как any или 99999999999999. Это было в 0. Однако я переработал базу данных, сбросил кеш и до сих пор не попал в MQT. Любые другие мысли? – KenFar
Между моим вопросом, вашим ответом и моим первым комментарием, каждый может видеть, что здесь есть ряд факторов. Во время моего первого комментария база данных не использовала MQT, но теперь она есть. Единственное различие заключается в том, что коллега повторил некоторые мои шаги. Возможно, я определил ПОЛЬЗОВАТЕЛЬ с конечным пространством (маловероятно). В любом случае - сейчас он работает. Запросы, которые занимали 20 секунд, теперь работают в 0,5. Спасибо за советы. – KenFar