powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Скорость вызова ХП (ASA 9.0.2.3044)
10 сообщений из 10, страница 1 из 1
Скорость вызова ХП (ASA 9.0.2.3044)
    #33847973
moteus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте!

Вот возник такой вопрос.

Из ХП в цикле вызываеться функция которая принимает 1 UINT и возвращает тоже UINT(return).

Так вот у меня профайлер показывает что время вызова ХП (из цикла) примерно в 30 раз больше чем время выполнения самой ХП.
При этом если вызывать не функцию, а процедуры возвращающие набро данных (примерно 15 строковых полей) то все становиться очень плохо.

У меня клиент вызывает не большое кол-во процедур, в которых и производиться вся обработка. При этом используеться большое кол-во маленьких процедур, которые инкапсулируют в себе некую операцию логика которой может быть изменена в дальнейшем, а пока реализуеться по средствам одного простого селекта и возвращаемого набора данных.
Конечно я могу их все развернуть но как-то мне это не очень охото делать. Может есть способ избежать таких тормозов?

Заранее спасибо.
...
Рейтинг: 0 / 0
Скорость вызова ХП (ASA 9.0.2.3044)
    #33848082
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
moteus wrote:

> Так вот у меня профайлер показывает что время вызова ХП (из цикла)
> примерно в 30 раз больше чем время выполнения самой ХП.

Бред полный. Вызов процедуры из процедуры как таковой не весит
практически ничего.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Скорость вызова ХП (ASA 9.0.2.3044)
    #33848168
moteus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dim2000Бред полный. Вызов процедуры из процедуры как таковой не весит
практически ничего.

Ваше заявление всиляет надежду. :)

Может тогда я чего не понимаю в параметрах профайлера.
Он показывает что
______________#Exes.____#msecs.
SP_Call 1 176
SP_Test 10000 30

Конечно я понимаю что время вызова(скорее всего) постоянно и увеличивая процедуры можно уменьшить его влияние, но как я сказал у меня имееться большое кол-во маленьких процедур.
...
Рейтинг: 0 / 0
Скорость вызова ХП (ASA 9.0.2.3044)
    #33848219
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
moteus wrote:

> Может тогда я чего не понимаю в параметрах профайлера.
> Он показывает что
> ______________#Exes.____#msecs.
> SP_Call 1 176
> SP_Test 10000 30

А теперь нужно смотреть внутрь Sp_call (я правильно понял, что она
гоняет sp_test в цикле?).

> Конечно я понимаю что время вызова(скорее всего) постоянно

Оно крайне малО: например, я отловил у себя место, где на 41 000 вызовов
ХП ушла 41 миллисекунда. А ведь сама ХП тоже не пустая ;).
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Скорость вызова ХП (ASA 9.0.2.3044)
    #33848273
moteus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
begin
    declare i unsigned integer;
    declare v unsigned int;
    set i =  0 ;
    while (i<inCount)loop
      set v = DBA."SP_Test"( 123 );    
      set i = i +  1 ;
    end loop;
    return  1 ; 
end
При этом профайлер показывает что 100% времени уходит на строку
Код: plaintext
set v = DBA."SP_Test"( 123 );    
...
Рейтинг: 0 / 0
Скорость вызова ХП (ASA 9.0.2.3044)
    #33848338
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
moteus wrote:

> При этом профайлер показывает что 100% времени уходит на строку
>
> set v = DBA."SP_Test"(*123*);

А можно полный текст обеих процедур?



Кстати, у меня ASA8, но не думаю, что в 9-й версии что-то кардинально хуже.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Скорость вызова ХП (ASA 9.0.2.3044)
    #33848644
moteus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
ALTER FUNCTION "DBA"."SP_Test_2"(
	in InFake unsigned integer)
returns unsigned integer
begin
  declare vNewPriceListID unsigned integer;
  declare vCurDateTime datetime;
  set vCurDateTime = now();
l_break:
  begin
    for l_Period as cPeriod
      NO SCROLL CURSOR FOR
            select beg as @BeginPeriod, en as @EndPeriod, idnewt as @idnewt
              from DBA."Period"
              where (IdList =  45 )
    do 
      if((vCurDateTime >= vBeginPeriod)and(vCurDateTime <= vEndPeriod)) then
        set vNewPriceListID = @idnewt;
        leave l_break;
      end if
    end for;
  end; --l_break
  return vNewPriceListID;     
end

Порезал процедуру под влиянием цензуры. :)
В общем остальной код примерно в томже духе плюс еще 2 цикла for и много IF.
...
Рейтинг: 0 / 0
Скорость вызова ХП (ASA 9.0.2.3044)
    #33848787
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
moteus
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
ALTER FUNCTION "DBA"."SP_Test_2"(
	in InFake unsigned integer)
returns unsigned integer
begin
  declare vNewPriceListID unsigned integer;
  declare vCurDateTime datetime;
  set vCurDateTime = now();
l_break:
  begin
    for l_Period as cPeriod
      NO SCROLL CURSOR FOR
            select beg as @BeginPeriod, en as @EndPeriod, idnewt as @idnewt
              from DBA."Period"
              where (IdList =  45 )
    do 
      if((vCurDateTime >= vBeginPeriod)and(vCurDateTime <= vEndPeriod)) then
        set vNewPriceListID = @idnewt;
        leave l_break;
      end if
    end for;
  end; --l_break
  return vNewPriceListID;     
end

Порезал процедуру под влиянием цензуры. :)
В общем остальной код примерно в томже духе плюс еще 2 цикла for и много IF.
А в этой функции есть какой то скрытый смысл ? Пока я вижу не известно зачем сделанный цикл, который по условию ищет запись, втиснутый в функцию, вместо того, чтобы просто получить это запросом/подзапросом прямо по месту без всяких функций и циклов.

P.S. Естественно вызов ХП или функции не влияет на скорость. А вот открытие и закрытие курсора, да еще с изначально полным построением всех записей и перебором до нахождения подходящей, да еще и в функции и подозреваю на каждую запись где то выше - это как раз и есть прямой синоним тормозу от камаза.
...
Рейтинг: 0 / 0
Скорость вызова ХП (ASA 9.0.2.3044)
    #33848829
moteus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то у меня как-то с математикой или как?
Щас запускаю процедуру SP_Call.
В Central показывает что отрабатывает в течении 7 с.
На вкладке Profile написано 177(мс).
На глаз время всего запроса call SP_Call скорее ближе к 7с.
В теле SP_Call 100% стоит именно на строке вызова SP_Test.
А в теле SP_Test в 4мс.
....
Сделал цикл внутри SP_Test;(т.е. заключил все ее тело в цикл)
и время в central'e показал 6,89 с. а на вкладке Profile - 5 мс.

Из этого я заключил(пока временно), что все дело не в скорости вызова, а в погрешности измерения :). Может надо настроить что-то в БД/СУБД/Централе чтобы было получше, но пока как-то все это мне доверия не внушает.
...
Рейтинг: 0 / 0
Скорость вызова ХП (ASA 9.0.2.3044)
    #33848889
moteus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASCRUSА в этой функции есть какой то скрытый смысл ? Пока я вижу не известно зачем сделанный цикл, который по условию ищет запись, втиснутый в функцию, вместо того, чтобы просто получить это запросом/подзапросом прямо по месту без всяких функций и циклов.
Я же написал что эта не вся функция. Там внутри цикла в орегинале более сложная логика прописана, и запрос тоже побольше. Да и записей для одного IDList не более 5-6 бывает и то редко, поэтому и не стал замарачиваться .
Но все дело в том что профайлер показывает что тормозит иненно вызывающая ф. а не вызываемая (176 мс против 30 мс). и все 176 на вызове.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Скорость вызова ХП (ASA 9.0.2.3044)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]