|
запрос из приложения vs запрос из IDE
|
|||
---|---|---|---|
#18+
Всем привет. Вопрос может и ламеркий, но все же. Столкнулся с такой ситуацией, что один и тот же запрос запущенный из бизнес-приложения и SQL Developer'a работает по разному (разный план, разное время выполнения). Запрос срейдний с некоторым количеством скаляров в условиях фильтрации. Порядок тестирования таков: 1. Выполняют определенные действия в приложении, чтобы выполнить запрос. Приложение виснет. 2. В gv$session ищу сессию и SQL_ID (Oracle RAC). Запрос в представлении с замененными скалярами на бинды, так как cursor_sharing=FORCE. 3. Выполняю найденный запрос из SQL Developer'a, затолкав его в REF курсор с подставлением биндов. Запрос работает молниеносно. Собственно вопрос, почему из IDE запрос может идти по другому плану, хотя ничего не меняется? И второй вопрос, как выполнить запрос из IDE так, чтобы он работал также долго? Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2022, 16:58 |
|
запрос из приложения vs запрос из IDE
|
|||
---|---|---|---|
#18+
Из того что сделал я: 1. Пересобрал статистику. 2. Проверил параметры оптимизатора (gv$sql_optimizer_env) у запроса из IDE и из приложения - одинаковые. 3. сравнил на всякий случай параметры инстансов - одинаковые. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2022, 17:05 |
|
запрос из приложения vs запрос из IDE
|
|||
---|---|---|---|
#18+
mlc, 4. Протри монитор чистой тряпочкой 5. Приведи запросы и планы 6. Если запросы имеют один и тот же sql_id => gv$sql_shared_cursor ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2022, 17:27 |
|
запрос из приложения vs запрос из IDE
|
|||
---|---|---|---|
#18+
хотя ничего не меняется? :1, 123, '123' - это можно счесть "ничего не меняется", но меняется. Запрос в представлении с замененными скалярами на бинды Сделайте пример запроса, и покажите, что на что меняете. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2022, 17:28 |
|
запрос из приложения vs запрос из IDE
|
|||
---|---|---|---|
#18+
dmdmdm, я ничего не меняю. Скаляры меняются на бинды из-за cursor_sharing=force. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2022, 17:31 |
|
запрос из приложения vs запрос из IDE
|
|||
---|---|---|---|
#18+
AlexFF__, 4. Спасибо, протёр. 5. Что вам даст запрос из неизвестных вам таблиц? Почему запрос из приложения тормозит я и сам понимаю. Меня интересует почему он может не тормозить из IDE. 6. Сюда ещё на заглядывал, спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2022, 17:35 |
|
запрос из приложения vs запрос из IDE
|
|||
---|---|---|---|
#18+
mlc 5. Что вам даст запрос из неизвестных вам таблиц? Почему запрос из приложения тормозит я и сам понимаю. Меня интересует почему он может не тормозить из IDE Делаешь trace 10053 и не гадаешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2022, 17:38 |
|
запрос из приложения vs запрос из IDE
|
|||
---|---|---|---|
#18+
mlc AlexFF__, 6. Сюда ещё на заглядывал, спасибо. Запрос будет иметь в любом случае другой sql_id, так как мне приходится дописывать схему к объектам. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2022, 17:40 |
|
запрос из приложения vs запрос из IDE
|
|||
---|---|---|---|
#18+
AlexFF__| mlc 5. Что вам даст запрос из неизвестных вам таблиц? Почему запрос из приложения тормозит я и сам понимаю. Меня интересует почему он может не тормозить из IDE Делаешь trace 10053 и не гадаешь. как выполнить 10053 трассу сессии приложения? Через dbms_system.set_ev? Сессия открывается непосредственно перед выполнением SQL запроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2022, 17:43 |
|
запрос из приложения vs запрос из IDE
|
|||
---|---|---|---|
#18+
mlc AlexFF__| пропущено... Делаешь trace 10053 и не гадаешь. как выполнить 10053 трассу сессии приложения? Через bms_system.set_ev? Сессия открывается непосредственно перед выполнением SQL запроса. http://orasql.org/2021/05/20/oracle-diagnostic-events-cheat-sheet/ Код: plsql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2022, 17:50 |
|
запрос из приложения vs запрос из IDE
|
|||
---|---|---|---|
#18+
mlc как выполнить 10053 трассу сессии приложения? Через dbms_system.set_ev? Сессия открывается непосредственно перед выполнением SQL запроса. alter session set events '10053 trace name context forever, level 1'; ................. alter session set events '10053 trace name context off'; Если запрос уже распарсен, что чуда не будет, удали запрос из shared_pool ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2022, 17:50 |
|
запрос из приложения vs запрос из IDE
|
|||
---|---|---|---|
#18+
mlc И второй вопрос, как выполнить запрос из IDE так, чтобы он работал также долго? mlc Запрос будет иметь в любом случае другой sql_id, так как мне приходится дописывать схему к объектам. сделайте alter session set current_schema и запускайте запрос as-is с литералами ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2022, 17:51 |
|
|
start [/forum/topic.php?fid=52&gotonew=1&tid=1879489]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
31ms |
get topic data: |
11ms |
get first new msg: |
8ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 260ms |
total: | 396ms |
0 / 0 |