powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Курсоры в ASE
8 сообщений из 8, страница 1 из 1
Курсоры в ASE
    #38376937
cherrex_Den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ASE 15.7 SP101

Есть простой курсор:
...
Рейтинг: 0 / 0
Курсоры в ASE
    #38376943
cherrex_Den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ASE 15.7 SP101

Есть простой курсор:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
declare crs cursor for   
select distinct x_field
from x_table 
where is_del = 0 
and date_field >= '20130701' and date_field < '20130801'
  
go
declare @sc_id unsigned int  
declare @ii int
declare @iic varchar(8)
set @ii = 0

open crs  
fetch crs into @sc_id  
  
while (@@sqlstatus = 0)   
begin   
    select @ii = @ii +1
	exec x_proc @sc_id
	select @iic = convert (varchar(8),@ii)
    print @iic 
	fetch crs into @sc_id  
end  
close crs  
deallocate crs  




все хорошо! только почему-то падает производительность. каждая следующая итерация замедляется. где-то после 1000 обработанных строк, совсем "опанька".
сама процедура x_proc отрабатывает мгновенно. и поданный в нее параметр не влияет на производительность.
в errorlog появилось вот это
авторIncrease the config parameter 'number of open objects' to avoid descriptor reuse. Reuse may result in performance degradation.
увеличил в четверо, по данным sp_monitorconfig стало достаточно. но на производительность это не повлияло, так же постепенно падает.

что делаю не так?

чтоб как-то ускорить процесс, запускаю скрипт параллельно(в двух коннектах), разбивая месяц на 2 части
and date_field >= '20130701' and date_field < '20130715'
и
and date_field >= '20130715' and date_field < '20130801'
но после того как отработал первый процесс, все равно он ждет когда работу закончит второй.
как будто второй что-то блокирует для первого. но mon_Locks показывает только shared intent по таблице x_table.

чего тогда ждет первый процесс?
...
Рейтинг: 0 / 0
Курсоры в ASE
    #38376970
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cherrex_Den,

Я не знаток ASE но могу предположит, дело в distinct и ошибочно само ожидание постоянного времени выполнения. С продвижением по списку ДБМС просмотривает много строк но не находит новых значений.
...
Рейтинг: 0 / 0
Курсоры в ASE
    #38388355
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cherrex_Den,

авторв errorlog появилось вот это
автор
Increase the config parameter 'number of open objects' to avoid descriptor reuse. Reuse may result in performance degradation.

увеличил в четверо, по данным sp_monitorconfig стало достаточно. но на производительность это не повлияло, так же постепенно падает.


Это тут точно ни при чём, у тебя нет тут роста кол-ва используемых объектов по мере выполнения скрипта.
Просто совпало.
...
Рейтинг: 0 / 0
Курсоры в ASE
    #38388360
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо смотреть внутрь процедуры x_proc,
и ещё я бы убрал PRINT-ы, хотя бы для того, что бы убедится, что они не тормозят.
А они могут. И в таком случае виноват будет не сервер, а клиент, он тормозит.
...
Рейтинг: 0 / 0
Курсоры в ASE
    #38388363
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cherrex_Denчтоб как-то ускорить процесс, запускаю скрипт параллельно(в двух коннектах), разбивая месяц на 2 части
and date_field >= '20130701' and date_field < '20130715'
и
and date_field >= '20130715' and date_field < '20130801'
но после того как отработал первый процесс, все равно он ждет когда работу закончит второй.
как будто второй что-то блокирует для первого. но mon_Locks показывает только shared intent по таблице x_table.

чего тогда ждет первый процесс?

Не должен он ничего ждать.
Если конечно в процедуре нет какой-то ждущей логики.
...
Рейтинг: 0 / 0
Курсоры в ASE
    #38389027
Nashville
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а процедура x_proc не инсёртит или апдейтит в x_table?
...
Рейтинг: 0 / 0
Курсоры в ASE
    #38389721
cherrex_Den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Причина действительна в процедуре x_proc.
Точнее, из-за "select for xml..." в этой процедуре, если это убрать все нормально.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Курсоры в ASE
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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