|
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
|
|||
---|---|---|---|
#18+
Всем привет! У меня есть 3 окружения и один проблематичный запрос, который на 2-х окружениях отрабатывает за секунды и юзает index unique scan по первичным ключам (4 табы и по каждой идет доступ по PK), а на третьем окружении запрос висит и висит и смотря на execution plan он не юзает индексы а идет table access storage full. Обьемы данных примерно одинаковые на всех трех окружениях, статистика собрана, clustering_factor примерно одинаковый по используемым индексам, хотя он и очень большой и равен кол-ву строк в табах, но все равно даже с таким фактором быстро работает на остальных окружениях. Два окружения Оракл 12, одно -10. Проблемы на одном из Оракл 12. В какую сторону смотреть ? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 11:49 |
|
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
|
|||
---|---|---|---|
#18+
EvgeniaMakarova, какая статистика (объектная, гистограммы, системная) и как именно собрана? конфигурация и настройки стендов примерно околоодинаковые? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 12:06 |
|
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
|
|||
---|---|---|---|
#18+
Щукина Анна, как собрана статистика не знаю, этим ДБА заведуют, я вижу last_analyzed . гистограммы есть по всем табам из запроса. про настройки не знаю, думаю что собака зарыта там, но что конкретно надо смотреть? Написала про эту проблему ДБА - они ответили что зарепортили SR в Oracle, незнаю как уж они разбирались и что такого нашли что сами починить не могут. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 12:18 |
|
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
|
|||
---|---|---|---|
#18+
EvgeniaMakarova, в сторону трассы 10053 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 12:19 |
|
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
|
|||
---|---|---|---|
#18+
xtender, а без него как? мне его будет трудно получить - ни разу не могла дождаться окончания выполнения запроса, и доступа на сервер нет, прав включить трассировку нет:-) идти к ДБА уже стремно , думала может есть такие прям классические причины когда уникальный индекс перестает браться оптимизатором? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 12:37 |
|
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
|
|||
---|---|---|---|
#18+
EvgeniaMakarovaЩукина Анна, Написала про эту проблему ДБА - они ответили что зарепортили SR в Oracle,. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 12:38 |
|
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
|
|||
---|---|---|---|
#18+
EvgeniaMakarovaидти к ДБА уже стремно , думала может есть такие прям классические причины если причины классические, то без DBA всё одно мало чего сможете сделать. К тексту запроса доступ имеете? Вносить в него изменения можете? Получить параметры настроек оптимизатора для сессии на нормальных и на приболевшем инстансах - сможете? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 12:46 |
|
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
|
|||
---|---|---|---|
#18+
Щукина Анна, может, там память или процы другие ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 12:58 |
|
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
|
|||
---|---|---|---|
#18+
EvgeniaMakarovaмне его будет трудно получить - ни разу не могла дождаться окончания выполнения запросаПлан строится при парсе. Выполнять запрос не обязательно. EvgeniaMakarovaдоступа на сервер нетесли есть права на directory, то получить файл можно sqlем. EvgeniaMakarovaправ включить трассировку нетalter session отобрали? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 13:10 |
|
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
|
|||
---|---|---|---|
#18+
-2-EvgeniaMakarovaправ включить трассировку нетalter session отобрали?RTFM Prerequisites To enable and disable the SQL trace facility, you must have ALTER SESSION system privilege. To enable or disable resumable space allocation, you must have the RESUMABLE system privilege. You do not need any privileges to perform the other operations of this statement unless otherwise indicated. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 13:17 |
|
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
|
|||
---|---|---|---|
#18+
Щукина Анна, имею запрос, имею данные из v$parameter. какие конкретно параметры надо сравнить ? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 14:18 |
|
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
|
|||
---|---|---|---|
#18+
-2-, подскажите пожалуйста как запросом получить данные из трассировочного файла 10053 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 14:21 |
|
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
|
|||
---|---|---|---|
#18+
Щукина Анна, Эти параметры одинаковые на двух сравниваемых 12-шках : optimizer_mode optimizer_index_cost_adj optimizer_index_caching optimizer_dynamic_sampling db_file_multiblock_read_count hash_area_size sort_area_size ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 14:29 |
|
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
|
|||
---|---|---|---|
#18+
EvgeniaMakarovaЩукина Анна, Эти параметры одинаковые на двух сравниваемых 12-шках : optimizer_mode optimizer_index_cost_adj optimizer_index_caching optimizer_dynamic_sampling db_file_multiblock_read_count hash_area_size sort_area_sizeдавайте уже сам запрос А вдруг там десяток фулл аутеров по лайкам ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 14:38 |
|
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
|
|||
---|---|---|---|
#18+
andreymx, запрос выглядит так (таблицы и столбцы переименованы.все остальное оригинальное, в том числе хинт :-)): *Если что, то запрос писала не я, и каким бы он страшным и ужасным ни был, он работает быстро на других окружениях и юзает уникальные индексы:-) Код: 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, 14:51 |
|
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
|
|||
---|---|---|---|
#18+
EvgeniaMakarovaподскажите пожалуйста как запросом получить данные из трассировочного файла 10053bfilename или external table ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 14:58 |
|
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
|
|||
---|---|---|---|
#18+
EvgeniaMakarova, если вы не разбираетесь в этом и не отвечаете за сбор статистики, то вам и не надо этим заниматься. Просто скажите админам сравнить 10053 на обоих базах. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 15:05 |
|
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
|
|||
---|---|---|---|
#18+
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 15:20 |
|
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
|
|||
---|---|---|---|
#18+
Dshedoo, это запрос уже юзает уникальные индексы и кост упал радикально. Раскройте тайну, как Вы рассуждали и почему все же индексы не юзаются в исходной версии ? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 16:09 |
|
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
|
|||
---|---|---|---|
#18+
кост упал а запрос так и висит( слушайте, один из PK индексов (то есть уникальный) показывает в плане Кардинальность 19760 , вместо 1. почему такое может быть ? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 16:23 |
|
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
|
|||
---|---|---|---|
#18+
EvgeniaMakarovaДва окружения Оракл 12, одно -10. Проблемы на одном из Оракл 12. Обe 12C на одинаковых patchset/patch? Если нет возможности/умения анализировать 10053, провeрить adaptive. С ним зачастую чудеса в решете. Смотри explain plan на обеих 12c на предмет "this is adaptive plan", "statistics feedback used for this statement" ну и dynamic sampling. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 16:31 |
|
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
|
|||
---|---|---|---|
#18+
SY, да, на проблематичном сервере план пишет что он адаптив ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 16:33 |
|
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
|
|||
---|---|---|---|
#18+
EvgeniaMakarovaда, на проблематичном сервере план пишет что он адаптив Т.e. две 12C это apples & oranges. В SQL*Plus на обеих 12C выдай SHOW PARAMETER ADAPTIVE и сравни. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 16:40 |
|
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
|
|||
---|---|---|---|
#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.
1. переправил все алиасы на уникальные 2. прописал minus 3. decode -> nvl 4. таблица t1 c, нужна для not exists только ... но первое - обязательно, у Вас 3 алиаса с именем "a" что может запутать Oracle (да и Вас) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 16:45 |
|
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
|
|||
---|---|---|---|
#18+
MaximaXXL, мне не надо переписывать, мне надо понять почему он индексы не юзает. Запрос отстойный это ясное дело. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 16:47 |
|
На одном из окружений оптимизатор не берет уникальные индексы для доступа к данным
|
|||
---|---|---|---|
#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?all=1&fid=52&tid=1882858]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
73ms |
get tp. blocked users: |
1ms |
others: | 327ms |
total: | 484ms |
0 / 0 |