Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 OLEDB+ASP+Oracle тормоза  [new]
jsmth
Member

Откуда:
Сообщений: 28
Добрый день.
Имеется web-сайт, представляющий собой читающий интерфейс к Ораклу через ASP+OLEDB.
Обнаружили довольно странную проблему: некоторые запросы (особенно сложносинтаксические, включающие такие слова как WITH, например) через OLEDB выполняются в сотни раз медленее чем те же запросы под тем же юзером через консоль SQL+ или лягуху (TOAD). Понятно, что OLEDB влечет свои накладные расходы, но не в сотни же раз!!!
Может кто-нибудь стакливался с подобным? Куда копать хотя бы?
P.S. Oracle 9.2.0.8.0. Установлен родной Oracle OLEDB Provider 9.2.0.7.
P.P.S. При использовании провайдера от data direct проблем нет, но он, понятно стоит немаленьких денег.
29 окт 08, 14:32    [6370914]     Ответить | Цитировать Сообщить модератору
 Re: OLEDB+ASP+Oracle тормоза  [new]
jsmth
Member

Откуда:
Сообщений: 28
upd: провайдер 9.2.0.8, а не 9.2.0.7
29 окт 08, 14:50    [6371069]     Ответить | Цитировать Сообщить модератору
 Re: OLEDB+ASP+Oracle тормоза  [new]
jsmth
Member

Откуда:
Сообщений: 28
Интересное наблюдение.
Допустим есть запрос типа
WITH Q AS (SELECT X FROM Y)
SELECT ....
Если заменить его на
WITH Q AS (SELECT X FROM (SELECT X, rownum FROM Y))
SELECT ....
То производительность становится приемлемой.
Известно, что добавление в список выборки rownum жестко материализует запрос. Все бы было понятно, если бы из консоли запрос выполнянлся так же медленно. Отсюда напрашивается бредовая гипотеза - не преобразует ли OLEDB запросы? Не сводит ли синтаксис с WITH к чему-то более простому, например подзаросу типа IN (...). Тогда было бы понятно, что матриализация подзапроса существенно улучшает производительность.
1 ноя 08, 16:13    [6388612]     Ответить | Цитировать Сообщить модератору
 Re: OLEDB+ASP+Oracle тормоза  [new]
wildwind
Member

Откуда: Москва
Сообщений: 1296
jsmth,

Снимите трассировку 8 уровня.
1 ноя 08, 17:17    [6388904]     Ответить | Цитировать Сообщить модератору
 Re: OLEDB+ASP+Oracle тормоза  [new]
jsmth
Member

Откуда:
Сообщений: 28
wildwind,

Из под sys:
sys.dbms_system.set_sql_trace_in_session(SID, serial#, true);
sys.dbms_system.set_ev(SID, serial#, 10046, уровень, '');

проблемный запрос:
call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        4      0.01       0.02          0          3          0           0
Execute      4      0.00       0.00          0          0          0           0
Fetch        4      9.09       9.10          0    4327668          0          61
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total       12      9.10       9.13          0    4327671          0          61

Elapsed times include waiting on following events:
  Event waited on                             Times   Max. Wait  Total Waited
  ----------------------------------------   Waited  ----------  ------------
  SQL*Net message to client                       4        0.00          0.00
  SQL*Net message from client                     4        3.70          7.10
  SQL*Net more data to client                     3        0.00          0.00
4 ноя 08, 16:43    [6394247]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить