|
|
|
NewDensity vs OldDensity
|
|||
|---|---|---|---|
|
#18+
Версия Oracle 11.2.0.4 SE1 Есть до безобразия простой запрос, Код: sql 1. План выполнения показывает: Код: plsql 1. 2. 3. 4. 5. 6. 7. Налицо неразбериха в оптимизаторе, при этом 10053 показывает: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. И эта кардинальность получается, согласно http://www.adellera.it/blog/2009/10/16/cbo-newdensity-replaces-density-in-11g-10204-densities-part-iii/, для непопулярных значений, так: (кстати, для популярных значений расчеты вполне себе совпадают с жизнью). NewDensity = [(BktCnt - PopBktCnt) / BktCnt] / (NDV - PopValCnt) NewDensity =((254-79)/254)/(3199232-7) = 2.15357274950263E-7 E[card] = NewDensity * num_rows = 2.15357274950263E-7*100406240 = 21 Вот как то-так он считает, видимо, но реально там есть 135К, и это можно получить так: E[card] = OldDensity * num_rows = 0.001362*100406240 = 136753 Вернуться обратно к использованию OldDensity можно вроде бы так Код: sql 1. Но! Не возвращается никак. Почему? И как это провернуть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2017, 07:38 |
|
||
|
NewDensity vs OldDensity
|
|||
|---|---|---|---|
|
#18+
avdu, Это принципиально неправильный расчет cardinality для ISS - для него density вообще не нужен, а отталкиваться надо от NDV. Bug 14648222 Incorrect cardinality estimate for INDEX SKIP SCAN - пофиксили в 12.1.0.2 и 12.2.0.1, для 11.2.0.3 и 11.2.0.4 есть патчики - качайте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2017, 11:05 |
|
||
|
NewDensity vs OldDensity
|
|||
|---|---|---|---|
|
#18+
xtender, Ага, поглядим, спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2017, 11:23 |
|
||
|
NewDensity vs OldDensity
|
|||
|---|---|---|---|
|
#18+
xtender, Поглядел, патч на 11.2.0.4 есть только на 11.2.0.4.171017 Exadata Database. У нас, к сожалению, не Exadata. Окончательно это исправлено только в 12.2.0.1, есть патчи на 12.1.0.2. Увы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2017, 12:14 |
|
||
|
NewDensity vs OldDensity
|
|||
|---|---|---|---|
|
#18+
xtender, а где почитать про cardinality estimate for INDEX SKIP SCAN? Есть источники? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2017, 12:15 |
|
||
|
NewDensity vs OldDensity
|
|||
|---|---|---|---|
|
#18+
avdu, да вырубите скип скан sql профилем или патчем. вообще есть у вас в базе хоть один полезный скип скан? Если - нет то вырубите его на базе параметром. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2017, 12:46 |
|
||
|
NewDensity vs OldDensity
|
|||
|---|---|---|---|
|
#18+
xtenderavdu, да вырубите скип скан sql профилем или патчем. вообще есть у вас в базе хоть один полезный скип скан? Если - нет то вырубите его на базе параметром. Во первых также (20 вместо 135К), во вторых долго Код: sql 1. 2. 3. 4. 5. 6. 7. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Явно что-то заколдовано, индусы они те еще затейники в этом смысле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2017, 06:58 |
|
||
|
|

start [/forum/search_topic.php?author=%2A+%2A&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
7ms |
get forum list: |
9ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
64ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 742ms |
| total: | 923ms |

| 0 / 0 |
