|
index range scan in parallel
|
|||
---|---|---|---|
#18+
Всем привет. Такой вопрос - есть миллиардная таблица, из которой запрашиваются данные по индексу, а именно INDEX RANGE SCAN. Объем запрошенных по индексу данных 21 миллион строк, из которых после наложенной фильтрации, остается чуть меньше трех миллионов. Фактор кластеризации индекса близок к количеству строк. Пруф в виде куска из статистики: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Из статистики видно, что данные из индекса поднимаются быстро, а вот из таблицы нет, я так полагаю ввиду плохого фактора кластеризации. Основной вопрос - как можно увеличить скорость поднятия данных из таблицы? Может можно как-то распараллелить? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 16:46 |
|
index range scan in parallel
|
|||
---|---|---|---|
#18+
mlcкак можно увеличить скорость поднятия данных из таблицы? Добавить TKPF в индекс. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 16:54 |
|
index range scan in parallel
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Менять структуру таблицы, индексов не могу. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 17:04 |
|
index range scan in parallel
|
|||
---|---|---|---|
#18+
mlc, Версия оракла какая? Есть два трюка в зависимости от версии, но нужно будет менять текст запроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 20:58 |
|
index range scan in parallel
|
|||
---|---|---|---|
#18+
Пример: тестовый DDL Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
план Код: 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. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 21:50 |
|
index range scan in parallel
|
|||
---|---|---|---|
#18+
xtender, С этим примером ясно. Этот трюк очень старый, всем известный, в своей идее описан еще у Dan Tow, "SQL Tuning", O'Reilly 2003 (предыдущее перед этим издание переводилось на русский, если не ошибаюсь), где он пишет, что трюк этот, для тех, кто с Oracle, существовал всегда, но после появления стоимостного оптимизатора стал требовать внимания к собственному разуму нарождающегося интеллекта, а здесь писатель главный. От версии Oracle зависит способ борьбы с оптимизатором, чтобы тот не портил задумку создателя запроса - обычно no_merge, хотя я бы, наверно, предпочел rownum > 0 в факторизованной части. Вероятно, union all - попытка попреследовать эту же цель. Здесь добавлен no_adaptive_plan для обрубания искусственного интеллекта современных версий. До появления TABLE ACCESS BY INDEX ROWID BATCHED этот трюк был почти единственной панацеей, спасающей от db file sequential read на доступе к табличным блокам при TABLE ACCESS BY INDEX ROWID. Параллельность, это хорошо на больших таблицах, и здесь компенсирует потерю вроде как обещанной кластеризации rowid по табличным блокам при TABLE ACCESS BY INDEX ROWID BATCHED. В 11м Oracle был самостоятельный хинт cluster_by_rowid(rowsource) для подобной цели. Вопроса у меня два: a) Правильно ли я понимаю, что TABLE ACCESS BY INDEX ROWID BATCHED автоматически обеспечивает всё то, что ранее достигалось использованием cluster_by_rowid, но без явной промежуточной сортировки по блокам таблицы? б) какой у тебя второй трюк в рукаве? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2020, 00:11 |
|
index range scan in parallel
|
|||
---|---|---|---|
#18+
booby, Столько написал, а ничего не понял.... Прочитай вопрос тс и Посмотри на план ещё раз... Зы. Что конкретно у дэна тау ты счёл схожим трюком? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2020, 00:24 |
|
index range scan in parallel
|
|||
---|---|---|---|
#18+
booby В 11м Oracle был самостоятельный хинт cluster_by_rowid booby До появления TABLE ACCESS BY INDEX ROWID BATCHED этот трюк был почти единственной панацеей, спасающей от db file sequential read booby a) Правильно ли я понимаю, что TABLE ACCESS BY INDEX ROWID BATCHED автоматически обеспечивает всё то, что ранее достигалось использованием cluster_by_rowid, но без явной промежуточной сортировки по блокам таблицы? booby б) какой у тебя второй трюк в рукаве? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2020, 00:35 |
|
index range scan in parallel
|
|||
---|---|---|---|
#18+
xtender booby, Столько написал, а ничего не понял.... Прочитай вопрос тс и Посмотри на план ещё раз... Зы. Что конкретно у дэна тау ты счёл схожим трюком? Он там несколько раз упоминается , прямой поиск по rowid в тексте дает, например, пример ранее объясненного принципа для случая "сложного соединения" (3х таблиц(!)): Chapter 6. Deducing the Best Execution Plan 6.4.A Special Cases 6.4.1 The Oracle Solution Где рецепт приводится как специфический для Oracle способ отделения индексного поиска от доступа к таблице. PS С Oracle я впервые столкнулся в 2007, была уже 9ка, все отлично работало по заветам Дена, без всяких материалайз, если мерж подзапроса во from подавить, и мнение оптимизатора о порядке соединения таблиц нейтрализовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2020, 00:53 |
|
index range scan in parallel
|
|||
---|---|---|---|
#18+
booby Он там несколько раз упоминается , прямой поиск по rowid в тексте дает, например, пример ранее объясненного принципа для случая "сложного соединения" (3х таблиц(!)): Chapter 6. Deducing the Best Execution Plan 6.4.A Special Cases 6.4.1 The Oracle Solution Где рецепт приводится как специфический для Oracle способ отделения индексного поиска от доступа к таблице. booby С Oracle я впервые столкнулся в 2007, была уже 9ка, все отлично работало по заветам Дена, без всяких материалайз, если мерж подзапроса во from подавить, и мнение оптимизатора о порядке соединения таблиц нейтрализовать. зы. Кому сдался RBO? https://blogs.oracle.com/optimizer/why-was-the-rule-hint-ignored ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2020, 01:13 |
|
index range scan in parallel
|
|||
---|---|---|---|
#18+
xtender, ясно. Успехов в труде. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2020, 01:28 |
|
|
start [/forum/topic.php?fid=52&fpage=54&tid=1881602]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 266ms |
total: | 399ms |
0 / 0 |