|
|
|
От куда parse, Oracle Forms
|
|||
|---|---|---|---|
|
#18+
Привет всем! Oracle Forms 10, Oracle database 10.2.0.4. Есть форма, на WHEN-BUTTON-PRESSED тригере висит запрос: Код: plaintext 1. 2. 3. Нажимаем кнопку 10 раз и получаем: call count ------- ------ Parse 10 Execute 10 Fetch 10 ------- ------ total 30 Misses in library cache during parse: 0 Для эксперимента переделываем запрос в цикле: for i in 1..10 loop SELECT COUNT (*) INTO :tmpc FROM ASUPPP.CLAIM C WHERE ZEX = :zex AND KOD_BURO = :kod_buro; end loop; Получаем: call count ------- ------ Parse 1 Execute 10 Fetch 10 ------- ------ total 21 Misses in library cache during parse: 0 Помогите, плиз, разобраться, почему в первом случае идет 10 раз soft parse, а во втором - один раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2009, 13:52 |
|
||
|
От куда parse, Oracle Forms
|
|||
|---|---|---|---|
|
#18+
test_79 Помогите, плиз, разобраться, почему в первом случае идет 10 раз soft parse, а во втором - один раз. Во втором случае срабатывает умная PL/SQL машина знает, что можно использовать готовый курсор приложения, в котором уже выполнялся parse зфкыуэтого запроса, который не вытеснен из кэша курсоров сессии ( не путать с разделяемыми курсорами в Shared Pool). В первом случае, видимо из погони за уневерсализацией или еще по каким либо причинам такой механизм не реализован, с FORMS не знаком, возможно надо выполнить какие либо дополнительные настройки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2009, 15:20 |
|
||
|
От куда parse, Oracle Forms
|
|||
|---|---|---|---|
|
#18+
Я и ёжик, Во втором случае срабатывает умная PL/SQL машина знает, что можно использовать готовый курсор приложения, в котором уже выполнялся parse зфкыуэтого запроса, который не вытеснен из кэша курсоров сессии... Я в начале тоже так подумал, и собственно изначальную форму в которой я заметил parsing я попросил программеров для чистоты эксперимента максимально упростить. Поэтому эта форма фактически содержит единственную кнопку с выше описанным запросом. Так вот в начале запуска этой формы я непосредственно выставляю session_cached_cursors=100 , чего за глаза должно хватать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2009, 15:55 |
|
||
|
От куда parse, Oracle Forms
|
|||
|---|---|---|---|
|
#18+
test_79Я в начале тоже так подумал, и собственно изначальную форму в которой я заметил parsing я попросил программеров для чистоты эксперимента максимально упростить. Поэтому эта форма фактически содержит единственную кнопку с выше описанным запросом. Так вот в начале запуска этой формы я непосредственно выставляю session_cached_cursors=100 , чего за глаза должно хватать. Если приложение само в явном виде выдает parse никакой session_cached_cursors сущственно не поможет (хотя несколько облегчит), посмотрите sqlplus, он всегда заново парсит запрос и ничем это не изменить. Forms судя по вашему примеру сделан так же, ну или какая то его подфункциональность. Собственно так и описывается поведение Oracle Forms, в нижкприведенной статье, где он отнесен к приложениям типа 2a, по способу работы с SQL. Переменные связывания и совместное использование курсоров: новые тенденции в СУБД Oracle9i (Bind variables and cursor sharing – new directions in Oracle9i, By Bjorn Engsig, Miracle A/S) (часть I) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2009, 16:07 |
|
||
|
От куда parse, Oracle Forms
|
|||
|---|---|---|---|
|
#18+
Я и ёжик, ...http://www.oracle.com/global/ru/oramag/april2003/dev_cursors.html#_Toc34113319... Спасибо за ссылку, скорее всего так и есть. Интересно, а можно ли поменять такое поведение, ну например, что-то подобное HOLD_CURSOR=YES но для Forms-a... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2009, 17:10 |
|
||
|
От куда parse, Oracle Forms
|
|||
|---|---|---|---|
|
#18+
test_79Я и ёжик, ...http://www.oracle.com/global/ru/oramag/april2003/dev_cursors.html#_Toc34113319... Спасибо за ссылку, скорее всего так и есть. Интересно, а можно ли поменять такое поведение, ну например, что-то подобное HOLD_CURSOR=YES но для Forms-a... Сейчас нет под рукой что бы проверить, посмотрите по точнее какой запрос исполяет оракле под управлением Формса. Как он выглядит и все такое. Потом тоже самое сделайте, но пусть у вас все делает базовый блок формы, а не процедура на pl/sql формса. Если я не ошибаюсь, то в случае с базовым блоком - со связанными переменными будет все в порядке. А вот PL/sql машина формса - я даже не уверен что Вы этот запрос сможете увидать. А если Вы перенесете логику на уровень сервера - то все будет в порядке. Это кстати один из аргументов в пользу переноса от Формса на сторону сервера процедур, требующих быстродействия и масштабирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2009, 20:18 |
|
||
|
|

start [/forum/topic.php?fid=51&gotonew=1&tid=1879110]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
156ms |
get topic data: |
12ms |
get first new msg: |
8ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
| others: | 13ms |
| total: | 268ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...