|
Близкострочные операции
|
|||
---|---|---|---|
#18+
НеофитSQL У вас наверное есть последний и могучий Оракл Держите, сравнивайте Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 17:56 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
env, не знаю, что вы делаете, но if из цикла надо убирать: Код: plsql 1.
отдельно и дополнительно надо понять, а для двух элементов ответ есть или нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 18:14 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
booby env, не знаю, что вы делаете, но if из цикла надо убирать: Код: plsql 1.
отдельно и дополнительно надо понять, а для двух элементов ответ есть или нет? вообще-то, может оказаться неплохо подумать, а как жить на миллиардах и с широкими записями... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 18:15 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
graycode НеофитSQL Я ожидал, что цикл хуже, т.к. не параллелится. Многопоточность в других языках программирования уже отменили? Я понятия не имею как в PL/SQL сделать многопоточный цикл, и будет ли от него толк в этом случае. Многопоточный цикл для линейного поиска по одной таблице звучит как приглашение хорошо получить граблями, даже для опытных кодеров. Вы попробуйте такой код здесь опубликовать, и быстро соберете список недочетов. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 18:55 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
НеофитSQL Я понятия не имею как в PL/SQL сделать многопоточный цикл, и будет ли от него толк в этом случае. Многопоточный цикл для линейного поиска по одной таблице звучит как приглашение хорошо получить граблями, даже для опытных кодеров. Вы попробуйте такой код здесь опубликовать, и быстро соберете список недочетов. Зачем в PL/SQL? В java или C# нет многопоточности? От Оракла требуется только отдать отсортированные данные, хотя можешь и сам отсортировать, дальше уже твоя забота, разбить полученное отсортированное множество на секции и обработать каждую секцию в своем потоке, склеить результат, все. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 19:01 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
env, то есть, ваш цикл с массивами, (если он на самом деле делает то, что подразумевается в задаче) мог бы так выглядеть. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
без проверки. объективно должно быть быстрее. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 19:01 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
НеофитSQL, если на самом деле понятно, что такое авторМногопоточный цикл для линейного поиска по одной таблице то сымитировать его в pl/sql есть, по крайней мере, два пути - канальные функции и джобы. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 19:03 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
booby канальные функции и джобы. IPC не впечатляет... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 20:01 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
env Держите, сравнивайте Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 20:05 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
graycode НеофитSQL Я понятия не имею как в PL/SQL сделать многопоточный цикл, и будет ли от него толк в этом случае. Многопоточный цикл для линейного поиска по одной таблице звучит как приглашение хорошо получить граблями, даже для опытных кодеров. Вы попробуйте такой код здесь опубликовать, и быстро соберете список недочетов. Зачем в PL/SQL? В java или C# нет многопоточности? От Оракла требуется только отдать отсортированные данные, хотя можешь и сам отсортировать, дальше уже твоя забота, разбить полученное отсортированное множество на секции и обработать каждую секцию в своем потоке, склеить результат, все. А, я понял о чем вы. Что для максимальной скорости для такой простой задачи надо данные взять в память и передать во внешнюю процедуру обработки. Тогда это простая задача для другого языка, где больше времени будет потрачено на передачу данных, чем на сам поиск. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 20:09 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
НеофитSQL Я ожидал, что цикл хуже, т.к. не параллелится. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 20:11 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
booby то сымитировать его в pl/sql есть, ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 20:15 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
xtender env Держите, сравнивайте ==>Elapsed: 00:00:01.22 -- SQL ==>Elapsed: 00:00:00.68 -- цикл Простой цикл без кэширования данных побеждает с отрывом вдвое! Если у нет дополнительных SQL секретов, это возможно просто не та задача, где оптимизатор Оракла может помочь. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 20:15 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
НеофитSQL А, я понял о чем вы. Что для максимальной скорости для такой простой задачи надо данные взять в память и передать во внешнюю процедуру обработки. Тогда это простая задача для другого языка, где больше времени будет потрачено на передачу данных, чем на сам поиск. А в чьей светлой головушке вдруг взялись мысли о том чтобы параллелить цикл для такой простой задачи? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 20:18 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
НеофитSQL Если у нет дополнительных SQL секретов, это возможно просто не та задача, где оптимизатор Оракла может помочь. требуется допилить, но мне лень и некогда Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 20:25 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
graycode А в чьей светлой головушке вдруг взялись мысли о том чтобы параллелить цикл для такой простой задачи? да, это самый правильный вопрос во всех темах ТСа ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 20:25 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
xtender booby то сымитировать его в pl/sql есть, баги-то они в нём вылечили со сваливанием всего в один поток? Так-то замечтательно, конечно. Но джобы на коленке и веревочках, б о льшую степень веры в управляемость внушают. И особенно, когда оснастки под них унаследованы от славных предшественников за пару версий до появления dbms_parallel_execute. Оно конечно, - плесень и несовременно. Но свежемолодым подходом потрахивать - это надо глубокой степенью невинности располагать. Не всем это по возрасту положено. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 23:02 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
проходил мимо... booby канальные функции и джобы. IPC не впечатляет... а как она должна быть использована именно в этой задаче? (формулировку которой я не вполне понял - все черти в неозвученных деталях) Там где IPC очевидно нужна - в пользовательских агрегатах - она тщательно представлена чёрным ящиком. Ляпота. Сиди себе, стандартные интерфейсы выписывай и в потолок поплёвывай. Вот недавно совсем человек докладывал, как он с IPC в Oracle боролся и побеждал: https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1326622&msg=22158286 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1326622&msg=22158461 и, как вполне очевидно из текста, до сих пор гордится достигнутыми результатами. (Это не для смеха и хохота ссылки, а на подумать о предметах гордости). Возвращаясь к джобам - если сказано джоб, так за IPC расстрел на месте, без торжественного построения рассматривающих расстрел. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 23:34 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
graycode НеофитSQL А, я понял о чем вы. Что для максимальной скорости для такой простой задачи надо данные взять в память и передать во внешнюю процедуру обработки. Тогда это простая задача для другого языка, где больше времени будет потрачено на передачу данных, чем на сам поиск. А в чьей светлой головушке вдруг взялись мысли о том чтобы параллелить цикл для такой простой задачи? Вообще-то у вас. Я предложил что цикл параллелить непродуктивно, и похоже вы теперь с этим уже согласны. 22219709 Параллелить надо не цикл, а задачу в целом. Не все задачи поддаются параллелизации, и параллельное исполнение - не единственный способ оптимизации. Например, env улучшил скорость цикла, пожертвовав несколькими мегабайтами памяти. Bulk collect в массив и последующий доступ к массиву заметно быстрее чем цикл по таблице. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2020, 00:13 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
Пока цикл неоспоримый лидер, прикладная польза от LAG/LEAD() не вполне понятна. Они делают то же, что и цикл, только медленее? Или бывают задачи, где LAG() не только полезна, но ещё и быстрее простого цикла? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2020, 00:16 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
НеофитSQL Вообще-то у вас. Я предложил что цикл параллелить непродуктивно, и похоже вы теперь с этим уже согласны. 22219709 Где ты предположил что цикл параллелить непродуктивно? Ты напротив написал что цикл хуже , так как не параллелится или ты уже не в состоянии понять то что сам же и написал? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2020, 00:35 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
graycode НеофитSQL Вообще-то у вас. Я предложил что цикл параллелить непродуктивно, и похоже вы теперь с этим уже согласны. 22219709 Где ты предположил что цикл параллелить непродуктивно? Ты напротив написал что цикл хуже , так как не параллелится или ты уже не в состоянии понять то что сам же и написал? Охотно поясню. Я выразил мнение что решение с циклом хуже, т.к. циклы плохо поддаются параллельной оптимизации. Вы сказали что "а у нас в джаве циклы можно параллелить". Но потов вам эта идея разонравилась, и вы стали искать автора. Возможно, я неверно вас понял, и вы все еще хотите эту задачу решать многопоточно через джаву. Я не против, попробуйте. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2020, 02:11 |
|
Близкострочные операции
|
|||
---|---|---|---|
#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.
Это потому, что я индекс включил, или просто у Оракла в старых версиях циклы плохо работали? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2020, 02:35 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
Это потому что у тебя вырожденный случай -- нумерация очередности без пропусков ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2020, 02:37 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
Вячеслав Любомудров Это потому что у тебя вырожденный случай -- нумерация очередности без пропусков Да, мне надо было свою таблицу делать, а не тырить у env. Мне понравилось лаконичное заполнение, и я позаимствовал. Кстати, кто то ещё заметил, насколько близко в разных тестах совпало число минимумов для 1м строк? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2020, 04:20 |
|
|
start [/forum/topic.php?fid=52&msg=40011478&tid=1880775]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
51ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 166ms |
0 / 0 |