|
|
|
10053 помогите понять
|
|||
|---|---|---|---|
|
#18+
Есть запрос Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. абсолютно непонятно по какой причине работающий по FK_G_CLI_ORD вместо PK(dep_id,id) Снял 10053, но не осилил её. Может кто подсказать в чем причина, и самое главное как с этим бороться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2018, 21:47 |
|
||
|
10053 помогите понять
|
|||
|---|---|---|---|
|
#18+
В отсутствие адекватной статистики CBO в состоянии построить сколь угодно плохой план (с) Пересоберите статистику, в т.ч. по индексам, и не используйте на 11.2 гистограммы совместно с bind-переменными при включенном bind variables peeking. Один раз распарсил с неудачным значением, затем до инвалидации курсора мучайся... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2018, 22:23 |
|
||
|
10053 помогите понять
|
|||
|---|---|---|---|
|
#18+
feagor, удалите гистограммы и extended statistics: CorStregth: -1.00 Код: 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. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. + https://blog.pythian.com/multi-column-correlation-and-extended-stats-in-oracle-11g/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2018, 23:14 |
|
||
|
10053 помогите понять
|
|||
|---|---|---|---|
|
#18+
andrey_anonymous, Статистика собирается постоянно andrey_anonymousОдин раз распарсил с неудачным значением, затем до инвалидации курсора мучайся... Похоже на то, когда смотрел Bindы запроса было вот так Код: plsql 1. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Соответственно похоже есть понимание, что такой план рисуется, когда передаются id=null,dep_id=null Но искать почему передаются nullы и пытаться это исправить мне видится довольно бесполезной затеей, с которой вероятнее всего ничего не получится сделать. При этом ситуация возникает не в первый раз именно на этой таблице и одной другой схожей таблице. Понятно что можно захинтовать, прибить baselineом, перевестись в rule -и все будет прекрасно работать, но хотелось бы понять. xtenderудалите гистограммы и extended statistics: Вроде extended statistics не использовалась никогда, по крайней мере Код: plsql 1. ничего не выдаёт Гистограмы убрал, почистил shared pool, запустил запрос снова(в bindы так же как в выявленной ситуации передаю null) План все тот же Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2018, 14:32 |
|
||
|
10053 помогите понять
|
|||
|---|---|---|---|
|
#18+
xtender, а что за CorStregth: -1.00? Это значит, что оптимизатор считает, что между колонками нет асболютно никакой кореляции? Мне, по правде, вообще не понятно как корреляция между колонками тут может на что-то влиять. Я вижу из выделенного вами, что cost по FK_G_CLI_ORD = 2, вместо 3 по PK_G_CLI, и я так понимаю именно по cost и выбирается использование FK_G_CLI_ORD ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2018, 14:49 |
|
||
|
10053 помогите понять
|
|||
|---|---|---|---|
|
#18+
feagor, Сначала пересоберите статистику по индексу fk... Что-то с ним не так - Corstrength не должен быть отрицательным. Зы. Для null вообще без разницы из какого индекса ничего не возвращать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2018, 15:26 |
|
||
|
10053 помогите понять
|
|||
|---|---|---|---|
|
#18+
Corstrength - это коэффициент подгонки кардинальности, а она отрицательной быть не может ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2018, 15:28 |
|
||
|
10053 помогите понять
|
|||
|---|---|---|---|
|
#18+
feagorЯ вижу из выделенного По памяти (лень еще раз читать трассу) : Для обоих индексов - как по DEP_ID, так и по PK - оптимизатор ожидает считать единственный leaf-block в расчете на ключ и найти там единственную запись, отвечающую предикату. При этом одноколоночный индекс по DEP_ID физически меньше и CPU на проверку одного атрибута надо меньше чем на два - сплошной профит, короче (оценка IO 2 блока для DEP_ID и 3 блока по PK). Но эта оценка не вполне естественна с учетом статистики по DEP_ID, где говорится, что NDV=301, и размера индекса (~4000 блоков, на помню уже точно), т.е. в пересчете на ключ должно вытанцовываться порядка 10-20 блоков. Либо статистика по индексу не собрана, либо "играет" дуэт из гистограммы и bind peeking при неудачном значении bind-переменной на момент парсинга. Еще раз: соберите статистику по таблице без гистограмм, не забудьте cascade=>true дабы зацепить индексы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2018, 20:55 |
|
||
|
|

start [/forum/topic.php?fid=52&tid=1884037]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
39ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
40ms |
get tp. blocked users: |
2ms |
| others: | 250ms |
| total: | 369ms |

| 0 / 0 |
