|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
mlc, а сколько исходный файл занимает? В мегабайтах. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2021, 13:47 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
mayton mlc, а сколько исходный файл занимает? В мегабайтах. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2021, 14:45 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
booby andrey_anonymous Вариант с pipelined может сильно облегчить жизнь если выборке требуется частичная сортировка (кластеризация относительно какого-то атрибута). В этом случае можно делать pipelined parallel enabled, указав ключ partitioning. Это позволяет не только задействовать на сортировке несколько ядер, но и экономить время на темпе (у каждого слейва будет свой sort area + кратно меньший объем для сортировки + возможность культурно обойти предел PGA для процесса) выглядит сложно. Да не особо. Это часть декларации pipelined. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2021, 16:15 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
andrey_anonymous booby пропущено... выглядит сложно. Да не особо. Это часть декларации pipelined. эта та часть декларации, которая относится к манипулированию входным курсором , переданным в параметре. Там и сортировку можно заказать по атрибуту, не только кластеризацию. В заявленном случае умение воспользоваться этим волшебством, содержательно может оказаться отдельным искусством. Само по себе, в принципе, это не отменяет возможность канальной функции, но помогают ей декларированные чудеса в конкретном случае, или нет - отсюда не видать. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2021, 16:41 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
mlc mayton mlc, а сколько исходный файл занимает? В мегабайтах. Хороший размер. Укладывается в memory для типичной рабочей станции. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2021, 17:00 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
booby В заявленном случае умение воспользоваться этим волшебством, содержательно может оказаться отдельным искусством. Вообще-то нет. Если читать доку внимательно и иметь базовое понимание параллельной обработки, то особых проблем нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2021, 18:24 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
mlc Система получает данные в плоском файле, обрабатывает данные, обогащает их и отправляет в ЦБ. Значит ли это, что на входе количество записей совпадает с количеством на выходе? Если да, может, они уже и так отсортированы? Или хотя бы можно потребовать их предварительной сортировки ДО всего процесса? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2021, 19:42 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
Правильный Вася, Вы видимо не поняли о чем я. Этот плоский файл готовится на моей стороне. То есть мне надо отсортировать эти 100кк и затолкать в файл. А принимающая внешняя система обогощяет то, что я там наваял. Если говорить про количество, то они не только обогаюащют мои данные, но и доливают свои по аналогии отсортированные (мои уже не сортируют). Отвечая на ваш вопрос, значит ли это, что на входе количество записей совпадает с количеством на выходе - нет, не совпадает. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 10:37 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
mlc, больше похоже, что это вы не поняли, что вам советует Правильный Вася. (вы же даже общей, приблизительной структуры своего запроса не показываете). В вашем случае, если проблема точно и именно в сортировке (например, параллельно с этим, нет проблем с триллионами вызовов функций из вашего сортируемого набора), то у вас два способа действий, распадающихся на три варианта - А) - передать проблему товарищу: А.1) - обратиться к администратору с просьбой об увеличении доступной процессу памяти для сортировки, чтобы ваша задача не падала на диск в процессе сортировки А.2) заявить потребителю, что файл вы поставляете без сортировки, сортировать его - забота получателя. Б) решать вопрос с необходимой для сортировки памятью доступными разработчику средствами, а именно делить задачу на куски, гарантированно помещающиеся в доступную область сортировки в памяти вашего процесса. Здесь у вас в руках наколенное слияние или, как предлагает Вася, формирование узкого ведущего курсора, сортировка которого гарантированно не падает на диск в ваших условиях. Для образования надежной фигуры достаточно трех пальцев. Но у вас две руки, так что можно манипулировать фигурами, составляемыми сразу на обеих руках. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 11:43 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
andrey_anonymous Да в принципе адекватно для сортировки на временном сегменте, если темп не на SSD. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 12:42 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
mlc Насчёт времени работы сортировки - опираюсь на данные из v$session_longops , v$sql_workarea_active и v$sql_plan_monitor. mlc Запрос с gather_plan_statistics не выполнялся. mlc Сам текст запроса выложить не могу mlc Возможность есть и первая мысль была накрутить параллелей. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 12:47 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
andrey_anonymous - накидать pipelined, принимающую на вход пресортированные датасеты отдельных веток union all и выполняющую объединение в стиле Sort-Merge Join. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 12:51 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
Sayan Malakshinov andrey_anonymous Да в принципе адекватно для сортировки на временном сегменте, если темп не на SSD. 100 лямов - это 100 лямов. У меня был опыт с сортировкой таких наборов, правда, записи, видимо, пошире были, но ~час - время довольно характерное при интенсивном использовании temp. т.е. примерно 15-20 лямов на ручном управлении памятью сортировались считанные минуты, после 20лямов уже без вариантов падало в темп и время резко подскакивало до 20-30 минут на 40 лямов и порядка часа+ на 100 преимущественно за счет direct path read/write. Сортировка в идеальных условиях стоит NLogN от количества элементов, объем за счет ширины записи дает лишь линейный коэффициент. А тут еще ввод-вывод внезапно. ...возможно, ты просто привык работать с более серьезным оборудованием, где оперативка терабайтами меряется и которому эти объемы - что семечки. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 13:00 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
Sayan Malakshinov andrey_anonymous Да в принципе адекватно для сортировки на временном сегменте, если темп не на SSD. 100 лямов - это 100 лямов. У меня был опыт с сортировкой таких наборов, правда, записи, видимо, пошире были, но ~час - время довольно характерное при интенсивном использовании temp. т.е. примерно 15-20 лямов на ручном управлении памятью сортировались считанные минуты, после 20лямов уже без вариантов падало в темп и время резко подскакивало до 20-30 минут на 40 лямов и порядка часа+ на 100 преимущественно за счет direct path read/write. Сортировка в идеальных условиях стоит NLogN от количества элементов, объем за счет ширины записи дает лишь линейный коэффициент. А тут еще ввод-вывод внезапно. ...возможно, ты просто привык работать с более серьезным оборудованием, где оперативка терабайтами меряется и которому эти объемы - что семечки. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 13:00 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
При 100 млн rows, и при размере файла 8 Гб, средняя длина строки будет 8 Гб / 100 000 000 = 8,589,934,592 / 100 000 000 = 85 байт на строку. И при 20 полях средняя длина 1 поля будет 4 байта. Что там внутри? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 13:12 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
Sayan Malakshinov andrey_anonymous - накидать pipelined, принимающую на вход пресортированные датасеты отдельных веток union all и выполняющую объединение в стиле Sort-Merge Join. в принципе, пример такой хинтовки было бы интересно посмотреть, хотя версия целевой системы топикстартером и не была указана. (На 12.1, например, я, скорее всего, не решился бы на подвиги, по посмотреть было бы всё равно интересно). ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 13:16 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
booby (На 12.1, например, я, скорее всего, не решился бы на подвиги, по посмотреть было бы всё равно интересно). https://docs.oracle.com/database/121/VLDBG/GUID-1F4C90F9-3EF5-423A-B55B-2593FB3F1433.htm ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 13:24 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
пока я даже не уверен, что основное время уходит на сортировку. В условиях такого недостатка информации, знать бы хотя бы сколько выполняется по отдельности, скажем CTAS этого запроса без сортировки и сортировка полученной таблицы ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 13:45 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
booby версия целевой системы топикстартером и не была указана. mlc Версия 12.1. смею надеяться, что в 2021-то уж все-таки наверное не 12.1.0.1 хотя и у меня есть пара таких клиентов :( ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 13:47 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
andrey_anonymous booby (На 12.1, например, я, скорее всего, не решился бы на подвиги, по посмотреть было бы всё равно интересно). https://docs.oracle.com/database/121/VLDBG/GUID-1F4C90F9-3EF5-423A-B55B-2593FB3F1433.htm enabled не значит, что автоматически выбирается. Пока мне в 12.1 ни разу нигде не пришлось поставить no_pq_concurrent_union, чтобы предотвратить "новое поведение". 2Sayan Malakshinov и все-таки, было бы интересно, либо увидеть точную хинтовку, либо какие-то пояснения, почему просто pq_concurrent_union, сам по себе обеспечит желаемое в данном случае поведение. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 14:16 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
booby enabled не значит, что автоматически выбирается. ммм? Саян предложил форсировать план, в котором на вход общей сортировки придут параллельно собранные пресортированные наборы. Это делается на базе указанной новофичи. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 14:26 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
andrey_anonymous, я всего лишь хочу увидеть, как именно это делается. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 14:33 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
booby, элементарно же Код: 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. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 14:36 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
booby как именно это делается. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 14:46 |
|
оптимизация сортировки
|
|||
---|---|---|---|
#18+
забыл такой показать: Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 14:52 |
|
|
start [/forum/topic.php?fid=52&msg=40063026&tid=1880280]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
152ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 238ms |
total: | 482ms |
0 / 0 |