|
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
|
|||
---|---|---|---|
#18+
EvgeniaMakarovaмне не надо переписывать, мне надо понять почему он индексы не юзает.Переписать - не надо, трассы почитать - не в состоянии. Ты вообще там кто? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 16:50 |
|
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
|
|||
---|---|---|---|
#18+
EvgeniaMakarova, Даже думаю лучше так: Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 16:52 |
|
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
|
|||
---|---|---|---|
#18+
SY, на проблематичном выдает так : optimizer_adaptive_plans boolean TRUE optimizer_adaptive_reporting_only boolean FALSE optimizer_adaptive_statistics boolean FALSE parallel_adaptive_multi_user boolean FALSE на нормальном тоже самое плюс еще параметры NAME TYPE VALUE ------------------------------------- ------- ------ _adaptive_window_consolidator_enabled boolean TRUE _optimizer_adaptive_cursor_sharing boolean TRUE _optimizer_nlj_hj_adaptive_join boolean TRUE _optimizer_strans_adaptive_pruning boolean TRUE _px_adaptive_dist_bypass_enabled boolean TRUE _px_adaptive_dist_method string CHOOSE optimizer_adaptive_plans boolean TRUE optimizer_adaptive_reporting_only boolean FALSE optimizer_adaptive_statistics boolean FALSE parallel_adaptive_multi_user boolean FALSE ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 16:52 |
|
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
|
|||
---|---|---|---|
#18+
Посколько optimizer_adaptive_features не вижу, ты на 12.2. На 12.2 с adaptive особо не баловался. Попробуй банально ALTER SESSION SET optimizer_adaptive_plans = FALSE; выполни SQL и посмотри результат. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 17:02 |
|
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
|
|||
---|---|---|---|
#18+
SYПосколько optimizer_adaptive_features не вижу, ты на 12.2. На 12.1 патчик был (вроде в составе CPU от осени 2017), который разделял общий optimizer_adaptive_features на optimizer_adaptive_plans и optimizer_adaptive_statistics а-ля 12.2. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 17:06 |
|
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
|
|||
---|---|---|---|
#18+
SY, все равно не юзает индексы. я там выше спрашивала, может пропустили, а может я глупость спросила - для юник индекса в плане кардинальность не 1 (см аттач) . так может быть ? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 17:15 |
|
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
|
|||
---|---|---|---|
#18+
как я рад, что врачи так не работают ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 17:16 |
|
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
|
|||
---|---|---|---|
#18+
andrey_anonymousНа 12.1 патчик был (вроде в составе CPU от осени 2017), который разделял общий optimizer_adaptive_features на optimizer_adaptive_plans и optimizer_adaptive_statistics а-ля 12.2. Не раделил а добавил: Код: 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.
SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 17:17 |
|
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
|
|||
---|---|---|---|
#18+
EvgeniaMakarova, раз с 10053 не справилась, дай хоть отчет sqld360 по этому запросу с обоих баз ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 17:18 |
|
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
|
|||
---|---|---|---|
#18+
Ну тады 10053 тебе в руки :) SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 17:20 |
|
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
|
|||
---|---|---|---|
#18+
SYНе раделил а добавил: По инструкции optimizer_adaptive_features надо было убрать из spfile :) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 17:21 |
|
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
|
|||
---|---|---|---|
#18+
SY, ну озадачу админов тогда делать 10053 все же . спасибо. будут новости -напишу ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 17:22 |
|
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
|
|||
---|---|---|---|
#18+
EvgeniaMakarovaдля юник индекса в плане кардинальность не 1 (см аттач) . так может быть ? Конечно может. ...и это вполне объективная причина проигнорить индекс. Код: 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. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 17:29 |
|
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
|
|||
---|---|---|---|
#18+
andrey_anonymousКонечно может. ...хотя у Вас же unique scan... Статистику не пробовали пересобрать? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 17:31 |
|
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
|
|||
---|---|---|---|
#18+
SYНе раделил а добавилobsolete: 1. https://mikedietrichde.com/2016/11/22/optimizer_adaptive_features-obsolete-in-oracle-12-2/ 2. https://mikedietrichde.com/2017/10/19/fixes-for-adaptive-features-are-included-in-oracle-12-1-0-2-october-2017-bp/ ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 17:48 |
|
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
|
|||
---|---|---|---|
#18+
andrey_anonymousSYНе раделил а добавил: По инструкции optimizer_adaptive_features надо было убрать из spfile :) Согласен, но если не ошибаюсь alter session set optimizer_adaptive_features = true; все равно свое дело сделает. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 17:55 |
|
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
|
|||
---|---|---|---|
#18+
Пардоньте за вопрос, но объём возвращаемых данных на всех окружениях одинаковый? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 18:46 |
|
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
|
|||
---|---|---|---|
#18+
Dshedoo, я не могу дождаться результата запроса на проблемном сервере. Но. Мне админы прислали трейсы 10053 с обоих серверов и на проблематичном сервере видно что идет dynamic sampling по двум табам из запроса. Попросила их пересобрать статистику. посмотрим . ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2019, 11:08 |
|
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
|
|||
---|---|---|---|
#18+
Dshedoo, переписанный Вами запрос,Ваша версия, возвращает одинаковое число строк на всех окружениях. Я на всякий случай сравнила с числом строк возвращаемых исходным запросом на "быстром окружении" - старый запрос возвращает где-то в три раза больше строк, и на проверку они конечно оказались дубликатами. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2019, 12:12 |
|
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
|
|||
---|---|---|---|
#18+
Вобщем ДБА пишут что статистику удалили и собрали заново и такая же фигня. Из трейс файлов 10053 я докопалась что запрос : SELECT a.col1 FROM t1 a WHERE NOT EXISTS ( SELECT 1 FROM t2 b WHERE b.col1 = a.col1 ) *при not in - такое же поведение оптимизатора на проблемном сервере НЕ юзает индекс по t1 (col1 - первичный ключ), но при поиске просто EXISTS -юзает unique index по col1 на другом сервер юзает индекс в обоих случаях и делает райт анти джойн. Есть мысли почему ? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2019, 14:06 |
|
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
|
|||
---|---|---|---|
#18+
EvgeniaMakarovaЕсть мысли почему ?вы издеваетесь? гадать при том, что вы уже даже получили трейсы, но не хотите их показать? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2019, 14:36 |
|
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
|
|||
---|---|---|---|
#18+
Как вариант, всё дело в самих данных. В t1 лежит всего пару-тройку записей, которые есть в t2, поэтому при EXISTS'е он идёт по PK. А так как 99% всех записей из t1 нет в t2, то оракл не заморачиваясь сразу смотрит всю таблицу. Посмотрите соотношение EXISTS и NOT EXISTS записей на разных окружениях. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2019, 14:43 |
|
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
|
|||
---|---|---|---|
#18+
Dshedoo, Ребята, я разобралась:-) На "плохом" окружении ВСЕ столбцы которые not null идут NOVALIDATE..., в том числе те уникальные которые идут в соединениях и тп. ВСЕ вообще. На двух других "хороших" они идут not null validated. Ларчик не просто открывался, учитывая что я думала что как минимум две 12-ки развернуты одним и тем же способом из одного и того же дампа и разницы в определениях таб нет. Незнаю как админы так наразворачивали БД. Знаю что они делали миграцию с 10-ки на 12-ку и чтото пошло не так, подробностей не знаю, потом вроде починили. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2019, 16:13 |
|
|
start [/forum/topic.php?fid=52&gotonew=1&tid=1882858]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
63ms |
get topic data: |
11ms |
get first new msg: |
7ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 341ms |
total: | 513ms |
0 / 0 |