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