|
|
|
Два индекса
|
|||
|---|---|---|---|
|
#18+
Привет, Такая вот проблема. На таблице есть два уникальных индекса - one_idx(column1, column2) и two_idx(column2, column1). one_idx - первичный ключ к тому же. Т.е. индексы отличаются только порядком полей. column1 - varchar2, column2 - number. На продакшн БД (12.1.0.2) оптимайзер выбирает индекс one_idx и запрос выполняется на примерно 30% быстрее, чем в тестовой БД (та же версия), где оптимайзер выбирает индекс two_idx. По статистике и там и там 12 consistent gets. Clustering factor у индексов практически одинаковый в обеих БД: продакшен - 340433(one) и 333182(two), тестовая - 322195(one) и 322224(two). У меня два вопроса - по каким причинам оптимайзер может выбирать другой индекс в тестовой БД? И почему может быть такая заметная разница во времени выполнения запроса если оба индекса уникальные и количество conistent gets одинаковое? Из 10053 трассировки: Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2016, 09:09:55 |
|
||
|
Два индекса
|
|||
|---|---|---|---|
|
#18+
2индексаИ почемуА где предикативная часть запроса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2016, 09:21:10 |
|
||
|
Два индекса
|
|||
|---|---|---|---|
|
#18+
Elic, Весь запрос: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. План тест Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. План продакшн Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2016, 09:34:53 |
|
||
|
Два индекса
|
|||
|---|---|---|---|
|
#18+
2индекса, авторУ меня два вопроса - по каким причинам оптимайзер может выбирать другой индекс в тестовой БД? И почему может быть такая заметная разница во времени выполнения запроса если оба индекса уникальные и количество conistent gets одинаковое? в 12с на это 1001 причина может быть , начиная с различий в обычной dbms_stats статистики, и далее autocapture outline и кучи adaptive фич. Смори планы курсоров c DBMS_XPLAN.DISPLAY_CURSOR c ALLSTATS там внизу в Note самое интересное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2016, 10:21:07 |
|
||
|
Два индекса
|
|||
|---|---|---|---|
|
#18+
kinky cat, optimizer_adaptive_features=FALSE в обеих БД потому что с ним у нас вообще ничего не работало после апгрейда. Делал я с ALLSTATS, ничего не выдаёт особенного. Там порядок полей в джойне меняется, а почему я не понимаю: Прод: Код: plsql 1. Тест Код: plsql 1. И соответственно, разные индексы используются. Вся статистика практически идентична в обеих базах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2016, 10:39:00 |
|
||
|
Два индекса
|
|||
|---|---|---|---|
|
#18+
В последнем сообщении поля из реальных таблиц, с которых я тест кейс делал. SITEID - COLUMN1, PARCELNO - COLUMN2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2016, 10:42:14 |
|
||
|
Два индекса
|
|||
|---|---|---|---|
|
#18+
2индекса, Индексы у тебя одинаковые, системе все равно какой из них использовать. Фактор кластеризации при UniqueScan не должен иметь никакого значения. Выбор индекса зависит тут от порядка их рассмотрения при работе оптимизатора. авторИ почему может быть такая заметная разница во времени выполнения запроса если оба индекса уникальные и количество conistent gets одинаковое? Сними 10046 и посмотри, чего гадать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2016, 10:59:22 |
|
||
|
Два индекса
|
|||
|---|---|---|---|
|
#18+
предположу если сделать Код: plsql 1. 2. то на проме и тесте результаты будут отличаться поскольку 2индексаClustering factor у индексов практически одинаковый в обеих БД: продакшен - 340433(one) и 333182(two), тестовая - 322195(one) и 322224(two) всё же отличаются: на проме у первого индекса CF больше, на тесте для обоих индексов они, можно сказать, равны, но для второго всё же больше - поэтому его оптимизатор и выбирает. наборы данных на проме и тесте разные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2016, 10:59:56 |
|
||
|
|

start [/forum/topic.php?fid=52&fpage=208&tid=1887729]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 225ms |
| total: | 350ms |

| 0 / 0 |
