|
|
|
Оптимизация PL/SQL?
|
|||
|---|---|---|---|
|
#18+
Скажите, а с какого момента нижеследующий тест работает так?: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Test 1 No exception in test 1 Test 2 Exception Всегда использовали конструкции для вызова функции как процедуры: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2017, 11:49 |
|
||
|
Оптимизация PL/SQL?
|
|||
|---|---|---|---|
|
#18+
Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2017, 11:52 |
|
||
|
Оптимизация PL/SQL?
|
|||
|---|---|---|---|
|
#18+
или plsql_debug ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2017, 11:59 |
|
||
|
Оптимизация PL/SQL?
|
|||
|---|---|---|---|
|
#18+
Спасибо. Да, параметр plsql_optimize_level = 2 ставит PLSQL Developer. Исправили - заработало. Непонятно только как мы раньше-то не замечали? Вроде PLSQL Developer давно не инсталлировали... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2017, 12:18 |
|
||
|
Оптимизация PL/SQL?
|
|||
|---|---|---|---|
|
#18+
TRustДа, параметр plsql_optimize_level = 2 ставит PLSQL Developer.Если верить доке по 11.2 , то 2 - это Default value. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2017, 12:28 |
|
||
|
Оптимизация PL/SQL?
|
|||
|---|---|---|---|
|
#18+
TRustСпасибо. Да, параметр plsql_optimize_level = 2 ставит PLSQL Developer. Исправили - заработало. какой кошмар, несчастная контора... никто не не знает, когда кого и за что увольнять. TRustВсегда использовали конструкции для вызова функции как процедуры: if F(..) is null then null;end if; нет . вы всегда использовали конструкции Код: plsql 1. 2. 3. N/N - это на ваша F и даже если бы ваша : Код: plsql 1. 2. 3. 4. 5. Это не обязано вам помочь во всех вариантах использования возможностей plsql Вы имеете дело с оптимизирующим компилятором. А это значит: a) вы всегда не знаете, как на самом выглядит фактически выполняемый код. б) у него собственные представления о программировании. И в том, что вы с ними не согласны, виноваты только вы. В противном случае вы увольняете этот компилятор и нанимаете на работу другой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2017, 12:59 |
|
||
|
Оптимизация PL/SQL?
|
|||
|---|---|---|---|
|
#18+
Очень не советую ставить plsql_optimize_level в значения 1 или 0. Жутко начинают тормозить PLSQL-таблицы! Замедление на минимум 2 порядка! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2017, 12:45 |
|
||
|
Оптимизация PL/SQL?
|
|||
|---|---|---|---|
|
#18+
TRustPLSQL-таблицыПереведи. TRustЗамедление на минимум 2 порядка!Докажи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2017, 12:47 |
|
||
|
Оптимизация PL/SQL?
|
|||
|---|---|---|---|
|
#18+
Устанавливаем Код: plaintext Выполняем Код: 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. Потом устанавливаем Код: plaintext Выполняем тот же TestCase ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2017, 13:14 |
|
||
|
Оптимизация PL/SQL?
|
|||
|---|---|---|---|
|
#18+
Executing a PLSQL Procedure that Implements Assocative Arrays Degrades in Performance After an Upgrade to 11.2 (Doc ID 1481681.1) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2017, 13:50 |
|
||
|
Оптимизация PL/SQL?
|
|||
|---|---|---|---|
|
#18+
По факту не деградирует, если plsql_optimize_level = 2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2017, 14:07 |
|
||
|
Оптимизация PL/SQL?
|
|||
|---|---|---|---|
|
#18+
TRustВсегда использовали конструкции для вызова функции как процедуры: Код: plaintext Для чего вы таким образом вызывали функции как процедуры? Эти функции имеют побочный эффект? Если имеют, то становится непонятным почему компилятор исключает их вызов. Если не имеют, то становится непонятным смысл их вызова. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2017, 14:31 |
|
||
|
Оптимизация PL/SQL?
|
|||
|---|---|---|---|
|
#18+
оптимизированный компилятор, Эти функции могут дать исключение. Его-то и важно поймать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2017, 17:37 |
|
||
|
Оптимизация PL/SQL?
|
|||
|---|---|---|---|
|
#18+
TRust, считай, что в режиме меньше 2 работает фактически интерпретирующий режим В нуле вроде прямо так и есть, (надо поднимать скрижали) Кроме того, в этих режимах работа идет с добавлением debug info Степень замедления при этом может критически зависеть от версии. Ну, и про "быстро" - для той истории, которую ты нарисовал, ни в каких режимах быстро никто не обещал. И, для того, чтобы не рекомендовать , надо сначала разучиться писать IF N/N > 0 THEN. Иначе нет способа избежать "перестало вызываться" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2017, 17:47 |
|
||
|
Оптимизация PL/SQL?
|
|||
|---|---|---|---|
|
#18+
TRustоптимизированный компилятор, Эти функции могут дать исключение. Его-то и важно поймать. Ля Эти функции могут не дать исключение. Расчет на то, что ты его поймаешь в режиме интерпретации в паре с советом использовать plsql_optimize_level >= 2 - это даже не абсурд, а деменция в последней фазе. Компилятор берет на себя право исключать, целиком выбрасывать неиспользуемый код, или такой код, выполнение которого не ведет к изменению состояния вычисления. Код: plsql 1. 2. 3. такой код, с его точки зрения - бессмыслица, не меняющая состояния вычисления. Он целиком выкидывается. Сидеть и ждать после выбрасывания этого кода компилятором исключения - не самое умное дело. И еще раз - не нравится компилятор - возьми другой. Это полезнее, чем жаловаться в Спортлото. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2017, 17:56 |
|
||
|
Оптимизация PL/SQL?
|
|||
|---|---|---|---|
|
#18+
booby, а выбрасывать его или нет он решает (пока) на основе того - использовал ли ты в таком месте собственную функцию, или выражение на базе известных ему стандартных, про которые он знает - детерминированы они или нет. Т.е. If User_Function(N/N) > 0 THEN выброшена (пока) не будет из-за подозрения на возможное побочное действие внутри User_Function ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2017, 18:02 |
|
||
|
Оптимизация PL/SQL?
|
|||
|---|---|---|---|
|
#18+
booby, Но даже вариант If User_Function(N/N) > 0 THEN потенциально можно заставить оказаться полностью исключенный, если креативно воспользоваться подходящей прагмой. Мораль из этого такая - то, что окажется у тебя не выброшенным при plsql_optimize_level = 2 имеет право благополучно испариться в трубу компиляции при plsql_optimize_level = 3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2017, 18:06 |
|
||
|
Оптимизация PL/SQL?
|
|||
|---|---|---|---|
|
#18+
Я не буду спорить с вашими теоретизированиями. Я исхожу их того, что есть сейчас. А есть несколько миллионов строк PL/SQL кода, причём не только серверного... Заниматься выявлением всех подобных мест, анализом того, что хотел программист и заменой на более адекватный код - у меня нет ни времени, ни средств, ни желания. Есть задача заставить этот код работать так, как было задумано автором. Быстро. Потому прошу с подобными советами воздержаться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2017, 21:01 |
|
||
|
Оптимизация PL/SQL?
|
|||
|---|---|---|---|
|
#18+
Прошу модератора сдержанно удалить мои посты из этого топика. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2017, 21:59 |
|
||
|
Оптимизация PL/SQL?
|
|||
|---|---|---|---|
|
#18+
Наговорил-то По идее, компилятор может вообще не вызывать процедуру/функцию если ее результаты игнорируются, а сама она WNDS, WNPS ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2017, 03:22 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39401813&tid=1886450]: |
0ms |
get settings: |
10ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
210ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 219ms |
| total: | 499ms |

| 0 / 0 |
