Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
запрос не реврайтится на MQT
|
|||
|---|---|---|---|
|
#18+
День добрый. На DB2 8.1.13 создал MQT Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. порефрешил ее, теперь в ней содержаться агрегаты за 2 года пускаю запрос (добавил where date_oper between '2006-10-01-00.00.00.000000' and '2007-01-01-00.00.00.000000' ) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. в плане идет работа по базовой таблице DB2ADMIN.VLIST (16 млн записей) реврайт на MQT срабатывает только если задаю мин. и макс даты из базовой таблицы а хотелось бы с произвольным диапазоном (агрегаты-то уже есть в mqt-шке) как бы заставить оптимайзер ее использовать ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2007, 15:41 |
|
||
|
запрос не реврайтится на MQT
|
|||
|---|---|---|---|
|
#18+
Добрый день. А почему вы не хотите (или не можете) использовать запрос Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2007, 16:15 |
|
||
|
запрос не реврайтится на MQT
|
|||
|---|---|---|---|
|
#18+
Может, надо SET CURRENT REFRESH AGE ANY? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2007, 02:00 |
|
||
|
запрос не реврайтится на MQT
|
|||
|---|---|---|---|
|
#18+
Mark BarinsteinА почему вы не хотите (или не можете) использовать запрос select * from "DB2ADMIN"."VLIST_MQT" where date_oper between '2006-10-01' and '2007-01-01' ? Если бы запрос можно было "решить" только на данной MQT так бы и делал :) Ну на самом деле ситуация примерно такая. MQT-шка эта будет рефрешится каждую ночь. Но базовая таблица заполняется неким обработчиком в онлайне и юзер (с веб-прилы) может задать поиск по диапазону, включающему текущий день, данные которого еще не обсчитаны в mqt-шке. Собственно изначально интересует возможность комбинирования готовых данных из mqt и данных из базовой таблицы, еще не вошедших в mqt. Но вот почему-то реврайт не происходит даже на обсчитанные диапазоны строк. Надеюсь выразился не очень туманно :) REFRESH IMMEDIATE не предлагать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2007, 07:02 |
|
||
|
запрос не реврайтится на MQT
|
|||
|---|---|---|---|
|
#18+
Чтоб оно могло пытаться использовать MQT, надо 1. SET CURRENT REFRESH AGE ANY 2. уровень оптимизации 2 или >=5. Попробуйте with q (date_oper,kod_oper, kod_styk, nom_poezd, index_poezd, kol_vagon, massa_gruza) as (select date(date_oper) as date_oper, kod_oper, kod_styk, nom_poezd, index_poezd, count(*) as kol_vagon, sum(massa) as massa_gruza from db2admin.vlist where date(date_oper) between '2006-10-01' and '2007-01-01' group by date(date_oper), kod_oper, kod_styk, nom_poezd, index_poezd ) select date_oper, kod_oper, kod_styk, count(*) as kol_poezd, sum(kol_vagon) as kol_vagons, sum(massa_gruza) as massa_gruza_all from q group by rollup (kod_styk), date_oper, kod_oper; или такое же выражение для date_oper во внешнем селекте. Но: вы не добьетесь от MQT функциональности искусственного интеллекта: оно не будет переключаться на MQT, если запрос по датам такой, что все эти даты уже посчитаны и работать с основными таблицами, если запрос по датам такой, что некоторые или все даты еще не посчитаны. Такую функциональность вам придется разрабатывать на уровне приложения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2007, 11:43 |
|
||
|
запрос не реврайтится на MQT
|
|||
|---|---|---|---|
|
#18+
Я бы попробовал этот запрос прогнать на 9-ке. Так как на ней можно из db2expln или Visual Explain узнать почему MQT considered, but not choosed. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2007, 11:45 |
|
||
|
запрос не реврайтится на MQT
|
|||
|---|---|---|---|
|
#18+
Mark Barinstein Чтоб оно могло пытаться использовать MQT, надо 1. SET CURRENT REFRESH AGE ANY 2. уровень оптимизации 2 или >=5. В базе выставлено : DFT_QUERYOPT=5 DFT_REFRESH_AGE=ANY Mark Barinstein Попробуйте with q (date_oper,kod_oper, kod_styk, nom_poezd, index_poezd, kol_vagon, massa_gruza) as (select date(date_oper) as date_oper, kod_oper, kod_styk, nom_poezd, index_poezd, count(*) as kol_vagon, sum(massa) as massa_gruza from db2admin.vlist where date(date_oper) between '2006-10-01' and '2007-01-01' group by date(date_oper), kod_oper, kod_styk, nom_poezd, index_poezd ) select date_oper, kod_oper, kod_styk, count(*) as kol_poezd, sum(kol_vagon) as kol_vagons, sum(massa_gruza) as massa_gruza_all from q group by rollup (kod_styk), date_oper, kod_oper; или такое же выражение для date_oper во внешнем селекте. оба варианта бегут по базовой таблице Mark BarinsteinНо: вы не добьетесь от MQT функциональности искусственного интеллекта: оно не будет переключаться на MQT, если запрос по датам такой, что все эти даты уже посчитаны брррр! это как ? Я подозревал что в этом случае как раз и должно быть переключение на MQT. Зачем ходить в базовую таблицу, если резалт запроса уже посчитан ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2007, 12:31 |
|
||
|
запрос не реврайтится на MQT
|
|||
|---|---|---|---|
|
#18+
mitekЯ подозревал что в этом случае как раз и должно быть переключение на MQT. Зачем ходить в базовую таблицу, если резалт запроса уже посчитан ???Это вы знаете, что результат одинаковый будет, а база - не знает. При изменении данных базовых таблиц нигде не определяется, что, мол, для этой конкретной MQT изменения в этих базовых таблицах произошли такие, что она (эта MQT) теперь содержит устаревшие данные. Это в общем случае довольно нетривиальная, а главное ресурсоемкая задача. Refresh deffered таблицы для того и сделаны, чтоб можно было получать "довольно близкие" к оригинальнным результаты, пренебрегая этой погрешностью ради производительности. А вот почему просматриваются базовые таблицы вместо MQT, это отдельный вопрос. Честно говоря, я никогда не пытался составить запрос так, чтобы оптимизатор реврайтил его на MQT, у меня всегда была возможность явно использовать именно MQT для запросов... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2007, 13:15 |
|
||
|
запрос не реврайтится на MQT
|
|||
|---|---|---|---|
|
#18+
nkulikovЯ бы попробовал этот запрос прогнать на 9-ке. Так как на ней можно из db2expln или Visual Explain узнать почему MQT considered, but not choosed вижл эксплайн на 9-ке на запрос Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2007, 14:15 |
|
||
|
запрос не реврайтится на MQT
|
|||
|---|---|---|---|
|
#18+
авторосталось выяснить почему он этот предикат считает not matched Мне кажется, причина вот в чем: в запросе условие "date_oper between '2006-10-01-00.00.00.000000' and '2007-01-01-00.00.00.000000'" оценивается до группировки, и в сгруппированые данные попадают только записи, удовлетворяющие этому условию. В MQT _все_ данные группируются, и "вытащить" из них только те, которые удовлетворяют условию, невозможно. Попробуйте в запросе использовать "having date(date_oper) between '2006-10-01-00.00.00.000000' and '2007-01-01-00.00.00.000000'" вместо where. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2007, 16:04 |
|
||
|
запрос не реврайтится на MQT
|
|||
|---|---|---|---|
|
#18+
авторПопробуйте в запросе использовать "having date(date_oper) between '2006-10-01-00.00.00.000000' and '2007-01-01-00.00.00.000000'" вместо where не помогло :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2007, 16:16 |
|
||
|
запрос не реврайтится на MQT
|
|||
|---|---|---|---|
|
#18+
А вы его куда поставили? После всего запроса или в суб-селекте? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2007, 17:01 |
|
||
|
запрос не реврайтится на MQT
|
|||
|---|---|---|---|
|
#18+
авторА вы его куда поставили? После всего запроса или в суб-селекте? не работает в обоих случаях ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2007, 07:22 |
|
||
|
запрос не реврайтится на MQT
|
|||
|---|---|---|---|
|
#18+
статистику собрали? соберите... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2007, 13:19 |
|
||
|
запрос не реврайтится на MQT
|
|||
|---|---|---|---|
|
#18+
статистика всегда up to date вопрос решил, упростив MQT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2007, 07:28 |
|
||
|
запрос не реврайтится на MQT
|
|||
|---|---|---|---|
|
#18+
В завершение темы... Если стоит REFRESH AGE ANY, ведь это не значит, что данная MQT будет обновляться при изменении базовой таблицы? А с каким отставанием будут происходить обновления? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2008, 17:12 |
|
||
|
запрос не реврайтится на MQT
|
|||
|---|---|---|---|
|
#18+
И еще? Что-то я не догоняю конструкцию REFRESH DEFERRED MAINTAINED BY SYSTEM... Что значит обслуживается системой? Что входит в это обслуживание? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2008, 18:06 |
|
||
|
запрос не реврайтится на MQT
|
|||
|---|---|---|---|
|
#18+
TORTВ завершение темы... Если стоит REFRESH AGE ANY, ведь это не значит, что данная MQT будет обновляться при изменении базовой таблицы? А с каким отставанием будут происходить обновления?При изменении базовых таблиц только mqt с refresh immediate опцией обновляется сразу. mqt всех остальных видов будут обновляться, как только вы выдадите соответсвующие команды. TORTИ еще? Что-то я не догоняю конструкцию REFRESH DEFERRED MAINTAINED BY SYSTEM... Что значит обслуживается системой? Что входит в это обслуживание?MAINTAINED BY SYSTEM означает, что обновлением содержимого этой таблицы занимается система, и делается это автоматически для REFRESH IMMEDIATE, с помощью REFRESH TABLE (выдает пользователь, когда ему надо) для REFRESH DEFERRED mqt. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2008, 10:10 |
|
||
|
|

start [/forum/topic.php?fid=43&msg=34268748&tid=1604099]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
47ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 205ms |
| total: | 318ms |

| 0 / 0 |
