Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Почему тормозит функция в пакете при многопользовательском обращении?  [new]
еще вопрос
Guest
Есть функция в пакете, внутри функции запрос, как только обращаются десяток пользователей к функции - виснет функция (виснет запрос).
Но делаю копию пакета с функцией, запускаю параллельно той висящей функции, и этот новая функция пролетает на ура быстро.
Т.е. выходит при многопользовательском обращении к пакету он несправляется.
В чем может быть дело?
24 июн 08, 11:09    [5838474]     Ответить | Цитировать Сообщить модератору
 Re: Почему тормозит функция в пакете при многопользовательском обращении?  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
Трейс все расскажет
24 июн 08, 11:27    [5838608]     Ответить | Цитировать Сообщить модератору
 Re: Почему тормозит функция в пакете при многопользовательском обращении?  [new]
Andrey.L
Member

Откуда: Харьков
Сообщений: 1546
И на функцию не мешало бы посмотреть.
24 июн 08, 11:29    [5838614]     Ответить | Цитировать Сообщить модератору
 Re: Почему тормозит функция в пакете при многопользовательском обращении?  [new]
еще вопрос
Guest
Трейсить нет прав, в PL/SQL Developere на вкладке "Profiler" вижу что висит запрос из функции,
когда к этой функции в пакете обращаются много пользователей.
Если я один запускаю копию функции, тот же запрос выполняется быстро при висящих таких же запросах из оригинальной функции!
Чисто теоретически нет предположений почему так?
24 июн 08, 12:10    [5839016]     Ответить | Цитировать Сообщить модератору
 Re: Почему тормозит функция в пакете при многопользовательском обращении?  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
еще вопрос
Трейсить нет прав
Значит просите снять у того, у кого эти права есть.

еще вопрос
Чисто теоретически нет предположений почему так?
Почему непонятно какая функция висит? Вы бы сами стали на такой вопрос отвечать? Вариантов миллион. Может хоть функцию приведете?

ЗЫ: Надеюсь слово for update в запросе не проскакивает?
24 июн 08, 12:21    [5839125]     Ответить | Цитировать Сообщить модератору
 Re: Почему тормозит функция в пакете при многопользовательском обращении?  [new]
мимо проходил...
Guest
а не случается ли в этот момент перекомпиляции первого пакета?
24 июн 08, 12:21    [5839127]     Ответить | Цитировать Сообщить модератору
 Re: Почему тормозит функция в пакете при многопользовательском обращении?  [new]
wildwind
Member

Откуда: Москва
Сообщений: 1296
еще вопрос
Чисто теоретически нет предположений почему так?

Зачем теоретизировать? Если прав нет, идем к DBA и спрашиваем на чем висят такие-то сессии.
24 июн 08, 12:25    [5839178]     Ответить | Цитировать Сообщить модератору
 Re: Почему тормозит функция в пакете при многопользовательском обращении?  [new]
еще вопрос
Guest
wildwind
еще вопрос
Чисто теоретически нет предположений почему так?

Зачем теоретизировать? Если прав нет, идем к DBA и спрашиваем на чем висят такие-то сессии.

А если я вижу на каком запросе они висят, мне все равно идти спрашивать об этом DBA? Выше написал как я это вижу.

CREATE OR REPLACE PACKAGE P_PSGT
IS

   FUNCTION PSGET (
      PS           VARCHAR2,                         
      dstart       DATE,                                      
      dend         DATE                                      
   )
      RETURN NUMBER;                        

END P_PSGT;

CREATE OR REPLACE PACKAGE BODY P_PSGT
IS
   FUNCTION PSGET (
      PS           VARCHAR2,                         
      dstart       DATE,                                      
      dend         DATE                                      
   )
      RETURN NUMBER                            
   IS
      itog    NUMBER;
   BEGIN
 
            SELECT NVL (SUM (x.itog), 0)
              INTO itog
              FROM tabl1 x, tabl2 y
             WHERE x.dt BETWEEN dstart AND dend
               AND x.id = y.id
               AND x.pst = PS;

      RETURN itog;
   END PSGET;
   
END P_PSGT;
Вызывается функция эта из селекта.

мимо проходил...
а не случается ли в этот момент перекомпиляции первого пакета?

а это может возникнуть без участия человека?
24 июн 08, 12:51    [5839418]     Ответить | Цитировать Сообщить модератору
 Re: Почему тормозит функция в пакете при многопользовательском обращении?  [new]
Andrey.L
Member

Откуда: Харьков
Сообщений: 1546
еще вопрос
Вызывается функция эта из селекта.
Может эту простенькую функцию засунуть в SELECT. Будет быстрее работать. Показывай SELECT.
24 июн 08, 12:55    [5839462]     Ответить | Цитировать Сообщить модератору
 Re: Почему тормозит функция в пакете при многопользовательском обращении?  [new]
wildwind
Member

Откуда: Москва
Сообщений: 1296
еще вопрос
[quot wildwind]А если я вижу на каком запросе они висят, мне все равно идти спрашивать об этом DBA?

Я имею в виду не просто на каком запросе, а чего именно они ждут, их ожидания. Если не чего-то одного, то придется трейсить.
24 июн 08, 12:57    [5839478]     Ответить | Цитировать Сообщить модератору
 Re: Почему тормозит функция в пакете при многопользовательском обращении?  [new]
givanov
Member

Откуда:
Сообщений: 757
Блин, ересь, сам не верю, ногами не бейте, но:
Мужики рассказывали, что одна функция работала только на одном процессоре, сколько пользователей ее бы не запускало.
Чем больше раз ее одновременно запускали, тем на большее число ртов делилась производительность этого одного несчастного процессора, а остальные процы простаивали.
У такого не происходит?
24 июн 08, 13:14    [5839605]     Ответить | Цитировать Сообщить модератору
 Re: Почему тормозит функция в пакете при многопользовательском обращении?  [new]
еще вопрос
Guest
Andrey.L
еще вопрос
Вызывается функция эта из селекта.
Может эту простенькую функцию засунуть в SELECT. Будет быстрее работать. Показывай SELECT.

можно, но я понимаю когда тормоза, но ситуация, когда:
Если я один запускаю копию функции, тот же запрос выполняется быстро при висящих таких же запросах из оригинальной функции!
Хочется разобраться, а то еще придется потом всю систему переписывать из за этой непонятки.

Кстати байда случилась после перехода на 10.2.0.3.0 с 8ки. На 8ке такого не было, все работало нормально.
24 июн 08, 13:20    [5839649]     Ответить | Цитировать Сообщить модератору
 Re: Почему тормозит функция в пакете при многопользовательском обращении?  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
То есть смотреть конкретно на чем висим не хочется, хочется просто в угадайку играть? Своеобразный подход...

еще вопрос
Если я один запускаю копию функции, тот же запрос выполняется быстро при висящих таких же запросах из оригинальной функции!
FGAC используется? Но вообще кто знает, что Вы по дороге теряете, когда создаете копию?... Инициализации в пакете нет?
24 июн 08, 14:42    [5840302]     Ответить | Цитировать Сообщить модератору
 Re: Почему тормозит функция в пакете при многопользовательском обращении?  [new]
еще вопрос
Guest
Jannny
FGAC используется?

Что это? Я программист.
Jannny
Но вообще кто знает, что Вы по дороге теряете, когда создаете копию?...

А без разницы. 10 пользователей на копию обращаются, висит копия. Оригиналу обращаюсь один - пашет.

зы. Висим на запросе. тут просили текст функции зачем то, я думал осчисливят
24 июн 08, 16:44    [5841216]     Ответить | Цитировать Сообщить модератору
 Re: Почему тормозит функция в пакете при многопользовательском обращении?  [new]
Andrey.L
Member

Откуда: Харьков
Сообщений: 1546
еще вопрос
тут просили текст функции зачем то, я думал осчисливят
Теперь давай запрос. ;)
24 июн 08, 17:08    [5841433]     Ответить | Цитировать Сообщить модератору
 Re: Почему тормозит функция в пакете при многопользовательском обращении?  [new]
lft
Member

Откуда: Калуга
Сообщений: 615
А v$lock для твоиз сессий можно попросить админа посмотреть?
24 июн 08, 17:30    [5841578]     Ответить | Цитировать Сообщить модератору
 Re: Почему тормозит функция в пакете при многопользовательском обращении?  [new]
еще вопрос
Guest
Andrey.L
еще вопрос
тут просили текст функции зачем то, я думал осчисливят
Теперь давай запрос. ;)

дело в том, что запрос можно написать любой от балды, в любом случае, когда десяток юзверей его запускают виснет, один юзвер на запросе с копией функции - пролетает только так
независимо от запроса,
например:
10 пользователей запускают:
select P_PSGT.PSGET(t.ps,t.dstart,t.dend) from table t 
делаю копию пакета P_PSGT и один запускаю:
select P_PSGT2.PSGET(t.ps,t.dstart,t.dend) from table t 
работает только так
и наоборот 10 пользователей на P_PSGT2 - виснет, а в это время один выполняет P_PSGT - работает!
24 июн 08, 17:32    [5841600]     Ответить | Цитировать Сообщить модератору
 Re: Почему тормозит функция в пакете при многопользовательском обращении?  [new]
вот он
Member

Откуда:
Сообщений: 489
сравни планы, когда ты один запускаешь запрос из функции с планом когда этот запрос работает как ты говоришь в "многопользовательском режиме".
24 июн 08, 20:53    [5842558]     Ответить | Цитировать Сообщить модератору
 Re: Почему тормозит функция в пакете при многопользовательском обращении?  [new]
givanov
Member

Откуда:
Сообщений: 757
По делу уже первым постом предложили трейс смотреть.
Гадать можно сколько угодно.

PS
Конечно, если будет повторяемый тест кейс - это тоже может помочь.
24 июн 08, 21:49    [5842695]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить