Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
predicate pushdown и olap-функции
|
|||
|---|---|---|---|
|
#18+
Положим, Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. и теперь Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. и Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. по сути эквивалентны, потому что Y находится в списке partition by, но, по крайней мере, 10.5.1 Express-C на 9-м уровне оптимизации это не понимает. (Если убрать row_number()over(partition by x,y order by z), то всё ОК). Можно предположить, что с другими OLAP-функциями дела обстоят аналогично, и если вы включаете их в свои VIEW, выражения могут недооптимизироваться. Было бы замечательно, если кто-нибудь написал ibm-ерам об этом. Впрочем, конечно, надо проверить, не исправили ли они уже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2016, 18:28 |
|
||
|
predicate pushdown и olap-функции
|
|||
|---|---|---|---|
|
#18+
http://comp.databases.ibm-db2.narkive.com/HNcCF8FV/predicate-pushdown-on-views-with-olap Забавно, они уже 7 лет назад об этом знали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2016, 18:33 |
|
||
|
predicate pushdown и olap-функции
|
|||
|---|---|---|---|
|
#18+
PMR? =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2016, 20:39 |
|
||
|
predicate pushdown и olap-функции
|
|||
|---|---|---|---|
|
#18+
Я счастливый пользователь DB2 Express-C, не более. Кстати, я сейчас скачал ещё раз инсталляшки - да, они уже до fp7 обновлены. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2016, 21:22 |
|
||
|
predicate pushdown и olap-функции
|
|||
|---|---|---|---|
|
#18+
Да, поторопился, этот пример уже на fp5 сработал нормально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2016, 22:12 |
|
||
|
predicate pushdown и olap-функции
|
|||
|---|---|---|---|
|
#18+
А что с LEO ( https://www.google.ru/search?q=leo db2 optimizer), мне кто-нибудь может объяснить? Я у Оракля похожие вещи вижу (всякие там cardinality feedback, адаптивные курсоры и адаптивные планы), а у DB2 нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2016, 22:21 |
|
||
|
predicate pushdown и olap-функции
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. Да, с этим примером справляется. С моими реальными запросами - нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2016, 19:18 |
|
||
|
predicate pushdown и olap-функции
|
|||
|---|---|---|---|
|
#18+
Предикат у меня на 10.5.7 не проталкивается внутрь xxx, когда 1. есть row_number()over(...), но в качестве T1 из примера стоит соединение из нескольких таблиц, и эти три колонки (x,y,z) в partition by взяты из трёх разных таблиц; и если убрать этот row_number()over(...), проталкивается. 2. нет(!) row_number()over(...), но внутри xxx (кроме джойна на кучу "настоящих" таблиц) прибавляется леводжойн на view, который состоит из values. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2016, 09:32 |
|
||
|
predicate pushdown и olap-функции
|
|||
|---|---|---|---|
|
#18+
Victor MetelitsaПредикат у меня на 10.5.7 не проталкивается внутрь xxx, когда 1. есть row_number()over(...), но в качестве T1 из примера стоит соединение из нескольких таблиц, и эти три колонки (x,y,z) в partition by взяты из трёх разных таблиц; и если убрать этот row_number()over(...), проталкивается. 2. нет(!) row_number()over(...), но внутри xxx (кроме джойна на кучу "настоящих" таблиц) прибавляется леводжойн на view, который состоит из values. Такое впечатление, что push down предикатов вообще не совсем честно реализован (не cost based, а с кучей if ... then ... else ...). Была ситуация, когда "<something> = f(?)", где f() - примитивная deterministic inlined функция - не проталкивался, а "<something> = ?" - вполне (не проталкивался под UNION с JOINом в некоторой комбинации). Похожая же картина была при "return ..." vs "begin atomic return ... end". Что-то по PMR'у поправили, а для чего-то требовался редизайн оптимизатора (=> Design Change Request, или как он там стал называться), так как-то и заглохло. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2016, 20:56 |
|
||
|
predicate pushdown и olap-функции
|
|||
|---|---|---|---|
|
#18+
Мне непонятно вообще, как такое могло случиться. Ну да, я понимаю - набор костылей, это как обычно (причём в Oracle один из таких костылей на корню отсекал выполнение where 1=0, а тут я такого пока не наблюдал). Но всё-таки. Проталкивание предиката само по себе должно быть не cost-based-операция, а чисто механическое переписывание. А сравнение cost'ов должно идти отдельно. Посчитали cost до проталкивания, механически протолкнули, посчитали cost после проталкивания, выбрали меньшее. Зачем ему при этом переписывании вообще различать случаи, является ли T1 соединением или приджойнена ли view as values? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2016, 21:41 |
|
||
|
|

start [/forum/topic.php?fid=43&msg=39220680&tid=1600614]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
61ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
| others: | 273ms |
| total: | 443ms |

| 0 / 0 |
