|
|
|
Оптимайзер не видит индексы
|
|||
|---|---|---|---|
|
#18+
Всем привет. Есть 2 инстанса, на каждом я создал по 3 пустых таблички, собрал по ним статистику (num_rows = 0), создал одинаковый набор индексов. На одном инстансе план тестового селекта юзает индексы во всю, а на втором - не использует ни один индекс, везде используя TABLE ACCESS FULL. Подскажите, по каким причинам оптимайзер может "забивать" на индексы? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2017, 00:03 |
|
||
|
Оптимайзер не видит индексы
|
|||
|---|---|---|---|
|
#18+
Alexx_Pol, зачем индексный доступ по совсем пустым таблицам, у которых даже сегменты не созданы скорее всего? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2017, 00:16 |
|
||
|
Оптимайзер не видит индексы
|
|||
|---|---|---|---|
|
#18+
xtender, Пустые таблички - это макеты таблиц с реальными данными и проблема с индексами на них такая же. То есть один и тот же запрос с реальными таблицами на одном инстансе отбегает быстро, а на втором - виснет (наполнены они одинаково). Пытаясь понять руткоз, я уже проверил индексы, пересобрал статистику, но ничего не помогло. Эксперимент с пустыми табличками - еще одна попытка понять руткоз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2017, 00:32 |
|
||
|
Оптимайзер не видит индексы
|
|||
|---|---|---|---|
|
#18+
Alexx_Pol, Выполни трассировку 10053 на обоих экземплярах. Сравни два файла. Увидишь не только различия в построении плана, но и в параметрах оптимизатора, если таковые имеются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2017, 01:05 |
|
||
|
Оптимайзер не видит индексы
|
|||
|---|---|---|---|
|
#18+
Alexx_PolВсем привет. Есть 2 инстанса, на каждом я создал по 3 пустых таблички, собрал по ним статистику (num_rows = 0), создал одинаковый набор индексов. На одном инстансе план тестового селекта юзает индексы во всю, а на втором - не использует ни один индекс, везде используя TABLE ACCESS FULL. Подскажите, по каким причинам оптимайзер может "забивать" на индексы? Спасибо. "То есть один и тот же запрос с реальными таблицами на одном инстансе отбегает быстро, а на втором - виснет (наполнены они одинаково)". Попробуйте так - запускаете там, где полные боевые таблицы Код: plsql 1. 2. И сравниваете на двух инстансах BLOCKS и CLUSTERING_FACTOR. И что-то мне подсказывает, что Вы увидите разные цифры. Хотя думаете, что таблицы одинаковые. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2017, 01:12 |
|
||
|
Оптимайзер не видит индексы
|
|||
|---|---|---|---|
|
#18+
Andy_OLAP, Почитал про CLUSTERING_FACTOR - чем он меньше, тем лучше индекс синхронизирован с таблицей. Но на быстром сервере CLUSTERING_FACTOR в 10 раз выше, чем на медленном. Также нашел такое "The table rows are synchronized with the index when the clustering factor is close to the number of data blocks" - и опять же CLUSTERING_FACTOR на медленном сервере одного опрядка с BLOCKS, а у быстрого разница в несколько порядков. Поэтому в моем случае сравнение по CLUSTERING_FACTOR и BLOCKS не объясняет, почему "медленный сервер" не использует индексы. Но спасибо за совет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2017, 05:55 |
|
||
|
Оптимайзер не видит индексы
|
|||
|---|---|---|---|
|
#18+
Alexx_Pol, версия оракла-то хоть какая? а то, может, какой-нибудь "шутник", что-то проверяя, перевел индексы в INVISIBLE-state и забыл их вернуть обратно, а ты тут пляшешь со статистиками и параметрами инстанса.... Ну и про трассировку 10053 dbms_photoshop уже подсказал. Если уже ничего не помогло, то самое время сделать её.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2017, 06:14 |
|
||
|
Оптимайзер не видит индексы
|
|||
|---|---|---|---|
|
#18+
Alexx_Pol, И такой момент поясни, а то как-то непонятно ты его выразил - если взять абсолютно "пустые" таблицы, без данных, совсем.... запрос на проблемном инстансе также медленно работает? Сейчас момент с использованием/неиспользованием индекса не рассматриваем. Чистое время выполнения запроса на пустых таблицах на обоих инстансах. Ну и раз ты уже столько говоришь о планах, может пришло время показать их? Может в них есть что-то, чего ты решил нам не показать, посчитав это не относящимся к делу... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2017, 06:21 |
|
||
|
Оптимайзер не видит индексы
|
|||
|---|---|---|---|
|
#18+
Добрый Э - Эх, Версия Оракл - 12.1, индексы я пересоздавал несколько раз, поэтому вряд ли они в INVISIBLE-state Трассировку таки попробую - еще руки не дошли. Чистое время выполнения запроса на пустых таблицах на обоих инстансах - 0.1sec, запрос медленно работает только на реальных заполненных. Планы вряд ли чем-то помогут. Главное, что в одном случае оптимайзер использует индексы, а в другом - ни одного в принципе. Добавил redo log file size на всякий случай - не помогло. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2017, 08:56 |
|
||
|
Оптимайзер не видит индексы
|
|||
|---|---|---|---|
|
#18+
Alexx_Pol, ну, ты ближе к "телу", тебе виднее, конечно. мы же кроме "результатов анализов", сделанных тобой, ничего не видим... и всё что можем - это подсказать тебе какие анализы ещё нужно взять.... но чудес же не бывает. раз есть разное поведение, значит есть какие-то вполне объяснимые причины. осталось только найти их.... в целом, какие шаги уже были сделаны? 0) программно-аппаратная платформа - в обоих случаях одинакова или примерно сопоставимая по производительности? 1) параметры инициализации инстанса - идентичны, без критических отличий (разные пути и прочие "имена" не рассматриваем)? 2) объем, распределение данных и схемы их индексирования - идентичны? 3) объектную статистику актуализировал? она сопоставима по своим параметрам на обоих инстансах? 4) СИСТЕМНУЮ статистику в период типовой нагрузки на сервер собрал? Различия отсутствуют? может что-то ещё? Если на все вопросы ответ утвердительный - пора бы делать "вскрытие" пациента. Снимай с него трассу... Может чего и увидишь... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2017, 09:14 |
|
||
|
Оптимайзер не видит индексы
|
|||
|---|---|---|---|
|
#18+
Alexx_PolAndy_OLAP, Почитал про CLUSTERING_FACTOR - чем он меньше, тем лучше индекс синхронизирован с таблицей. Но на быстром сервере CLUSTERING_FACTOR в 10 раз выше, чем на медленном. Также нашел такое "The table rows are synchronized with the index when the clustering factor is close to the number of data blocks" - и опять же CLUSTERING_FACTOR на медленном сервере одного опрядка с BLOCKS, а у быстрого разница в несколько порядков. Поэтому в моем случае сравнение по CLUSTERING_FACTOR и BLOCKS не объясняет, почему "медленный сервер" не использует индексы. Но спасибо за совет. Коллега, а Вы не перепутали случайно, когда смотрели на серверы? "Быстрый", на таблицах которого CLUSTERING_FACTOR в 10 раз больше, как раз может для одной или всех трех таблиц использовать TABLE ACCESS (FULL), все содержимое попадает или в кэш СХД, или в оперативную память, все хорошо. А "медленный" как раз пытается делать INDEX (RANGE SCAN), читает из другого tablespace, там bad blocks на диске/дисках - и получаете тупняк. У вас rebuild на одинаковых таблицах на обоих инстансах проходит за одинаковое время? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2017, 11:21 |
|
||
|
Оптимайзер не видит индексы
|
|||
|---|---|---|---|
|
#18+
Andy_OLAPтам bad blocks на диске/дисках - и получаете тупняк.а во тут даже мне интересно стало..... можно с этого места поподробнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2017, 11:32 |
|
||
|
Оптимайзер не видит индексы
|
|||
|---|---|---|---|
|
#18+
Добрый Э - ЭхAndy_OLAPтам bad blocks на диске/дисках - и получаете тупняк.а во тут даже мне интересно стало..... можно с этого места поподробнее. Давайте сначала дождемся ответа, что ребилд индексов проходит за одно и то же время на обоих. Может быть, железо на "медленном" дышит еле-еле в предсмертной агонии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2017, 11:43 |
|
||
|
Оптимайзер не видит индексы
|
|||
|---|---|---|---|
|
#18+
Всем спасибо за помощь. На данный момент сошлись на том, что при настройке оракла ИТ выставили скрытый параметр _optimizer_connect_by_cost_based = False, а он должен быть True. Поменяли, бутнули - планы наконец-то сошлись. Также собрали статистику "быстрого" сервера и теперь будем ее импортить на другие сервера. То есть пользоваться фиксированной статистикой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2017, 09:05 |
|
||
|
|

start [/forum/topic.php?fid=52&tid=1884835]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
143ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 197ms |
| total: | 426ms |

| 0 / 0 |
