|
необходимые характеристики функции для ее детерминизации
|
|||
---|---|---|---|
#18+
Есть некоторая UDF, использующая внутри запрос к таблице, на основании результата которого функция возвращает значение. Есть мнение, что делать функцию, использующую объекты БД для получения результата, детерминированной - априори неправильный подход, судя по канонам документации (мол, Oracle не гарантирует верный результат..). Я же считаю, что если есть уверенность в том, вышеупомянутые объекты изменяются не так часто (в масштабах длительности запроса, использующего функцию, изменений данных нет), то нет и подобных рисков. Кто-нибудь может сказать что-то дельное? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2019, 15:12 |
|
необходимые характеристики функции для ее детерминизации
|
|||
---|---|---|---|
#18+
--Eugene-- Кто-нибудь может сказать что-то --Eugene-- дельное? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2019, 15:22 |
|
необходимые характеристики функции для ее детерминизации
|
|||
---|---|---|---|
#18+
--Eugene-- Есть некоторая UDF, использующая внутри запрос к таблице, на основании результата которого функция возвращает значение. Есть мнение, что делать функцию, использующую объекты БД для получения результата, детерминированной - априори неправильный подход, судя по канонам документации (мол, Oracle не гарантирует верный результат..). Я же считаю, что если есть уверенность в том, вышеупомянутые объекты изменяются не так часто (в масштабах длительности запроса, использующего функцию, изменений данных нет), то нет и подобных рисков . Кто-нибудь может сказать что-то дельное? Tы похоже путаешь мягкое с теплым - детерминированность c statement level read consistency. UDF использующая внутри запрос к таблице потенциально нарушaет statement level read consistency а не с детерминированность и посему даст (с точки зрения read consistency) неправильный результат если запрос внутри UDF использует данные закоммиченные после начала запросa. A лечить это детерминированностью мягко говоря не то. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2019, 15:59 |
|
необходимые характеристики функции для ее детерминизации
|
|||
---|---|---|---|
#18+
--Eugene--, потом кто-нибудь создаст индекс по этой функции и будет вообще интересно :) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2019, 16:21 |
|
необходимые характеристики функции для ее детерминизации
|
|||
---|---|---|---|
#18+
SY лечить это детерминированностью мягко говоря не то ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 11:35 |
|
необходимые характеристики функции для ее детерминизации
|
|||
---|---|---|---|
#18+
--Eugene-- а если функция будет обычная, но обернута в (select udf(a, b) from dual) ? Все будет зависеть от оптимайзера. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 17:58 |
|
необходимые характеристики функции для ее детерминизации
|
|||
---|---|---|---|
#18+
--Eugene--, ты бы объяснил, что конкретно ты хочешь? Если просто statement level read consistency, то создай оператор для этой функции: http://orasql.org/2014/03/31/deterministic-functions-result_cache-and-operators/ ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2019, 18:53 |
|
необходимые характеристики функции для ее детерминизации
|
|||
---|---|---|---|
#18+
xtender ты бы объяснил, что конкретно ты хочешь? Код: plsql 1. 2. 3. 4. 5. 6.
к такому виду: Код: plsql 1. 2. 3. 4. 5. 6.
или: Код: plsql 1. 2. 3. 4. 5. 6.
функцию уровня схемы мне делать никто не даст. оператор создавать мне тоже никто не позволит. прикручивать result_cache - еще более сомнительное мероприятие ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2019, 11:51 |
|
необходимые характеристики функции для ее детерминизации
|
|||
---|---|---|---|
#18+
--Eugene-- никто не даст ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2019, 12:08 |
|
необходимые характеристики функции для ее детерминизации
|
|||
---|---|---|---|
#18+
12.2.0.1 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2019, 12:16 |
|
необходимые характеристики функции для ее детерминизации
|
|||
---|---|---|---|
#18+
--Eugene-- 12.2.0.1 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2019, 12:18 |
|
необходимые характеристики функции для ее детерминизации
|
|||
---|---|---|---|
#18+
Elic с функцией - не? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2019, 12:23 |
|
необходимые характеристики функции для ее детерминизации
|
|||
---|---|---|---|
#18+
--Eugene-- Elic с функцией - не? Код: plsql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2019, 13:48 |
|
необходимые характеристики функции для ее детерминизации
|
|||
---|---|---|---|
#18+
Elic Код: plsql 1.
не, не канает у меня там INSERT SELECT насколько я понял, DML with function не работает (могу ошибаться, и буду благодарен рабочему примеру) но, сколько я не пробовал, у меня не вышло ее туда присунуть, хотя это первое о чем я подумал ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2019, 13:53 |
|
необходимые характеристики функции для ее детерминизации
|
|||
---|---|---|---|
#18+
--Eugene-- у меня ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2019, 13:56 |
|
необходимые характеристики функции для ее детерминизации
|
|||
---|---|---|---|
#18+
--Eugene-- хотя это первое о чем ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2019, 14:00 |
|
необходимые характеристики функции для ее детерминизации
|
|||
---|---|---|---|
#18+
Elic Ты хочешь кого-то наи&ать ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2019, 14:08 |
|
необходимые характеристики функции для ее детерминизации
|
|||
---|---|---|---|
#18+
--Eugene--, дока -> хинт ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2019, 15:13 |
|
необходимые характеристики функции для ее детерминизации
|
|||
---|---|---|---|
#18+
--Eugene-- не понял наезда ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2019, 15:31 |
|
необходимые характеристики функции для ее детерминизации
|
|||
---|---|---|---|
#18+
123йй --Eugene--, дока -> хинт Код: 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.
я что-то делаю не так? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2019, 15:41 |
|
необходимые характеристики функции для ее детерминизации
|
|||
---|---|---|---|
#18+
t.column_1 * (select <similar-non-trivial-query-using-column_1-and-literal_1>) выполнится по правилу statement level read consistency, т.е. на SCN начала основного SELECTа. А вот t.column_1 * deterministic_function(t.column_1,literal_1), даже если предположить что вызов deterministic_function выполнится один раз, выполнится он не на SCN начала основного SELECTа а на SCN моментa FETCHa данной строки. Вариант (select regular_function(t.column_1,literal_1) from dual) выполнится на SCN начала основного SELECTа хотя для dual это по-барабану, а вот select <similar-non-trivial-query-using-column_1-and-literal_1> который будет засунут в regular_function(t.column_1,literal_1) на (грубо говоря) SCN моментa FETCHa данной строки. Так-что еще раз determinisitic и statement level read consistency это теплое и мягкое. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2019, 15:46 |
|
необходимые характеристики функции для ее детерминизации
|
|||
---|---|---|---|
#18+
--Eugene-- я что-то делаю не так? Скорее всего у тебяверсия клиента старая и не поддерживает WITH FUNCTION. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2019, 15:48 |
|
необходимые характеристики функции для ее детерминизации
|
|||
---|---|---|---|
#18+
SY грубо говоря) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2019, 15:51 |
|
необходимые характеристики функции для ее детерминизации
|
|||
---|---|---|---|
#18+
SY --Eugene-- я что-то делаю не так? Скорее всего у тебяверсия клиента старая и не поддерживает WITH FUNCTION. SY. Упс, не заметил та используешь WITH FUNCTION в PL/SQL - не поддерживается да и смысла никакого. Просто определи ф-цию в PL/SQL. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2019, 15:54 |
|
необходимые характеристики функции для ее детерминизации
|
|||
---|---|---|---|
#18+
SY Упс, не заметил та используешь WITH FUNCTION в PL/SQL - не поддерживается да и смысла никакого. Просто определи ф-цию в PL/SQL. SY. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2019, 16:01 |
|
|
start [/forum/topic.php?fid=52&msg=39909764&tid=1881695]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
54ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 165ms |
0 / 0 |