powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
25 сообщений из 41, страница 1 из 2
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
    #34580303
Eugeny_M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Время работы кода SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5).
Почему это возможно, что может влиять на это?
В хранимой процедуре на сервере ASE 12.5 создается курсор, открывается и затем обрабатываются результаты. Время выполнения (создание курсора и открытие) составляет порядка 9 сек (запускаю процедуру в Advantage). При выполнении тех же действий в Advantage время выполнения составляет порядка 1 сек. Из-за чего может быть такая разница?
...
Рейтинг: 0 / 0
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
    #34580341
moris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выполните SP с опцией with recompile
...
Рейтинг: 0 / 0
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
    #34580354
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugeny_M пишет:
> Время работы кода SQL в хр.процедуре и в Advantage отличаются на порядок
> (ASE 12.5).

Код давайте, будут советы конкретные.

> Почему это возможно, что может влиять на это?

Запросы в процедурах и вне процедур оптимизируются немного по-разному.
Связано это с тем, что оптимизатор не знает значений переменных, которые
выступают в качестве параметров запросов в процедурах и не
применяет вычисление селективности для этого конкретного значения.


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
    #34580433
Eugeny_M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот код:
Declare cur_my cursor for
select c.division,tn
from zt_register_charges c
where period>=@rp_p and period<=@rp and uperiod=@rp_p and c.enterprise_id = @eid
and c.division in (select div_id from #div)

open cur_my

Пытался вложенный select заменить на inner join - разницы никакой.
...
Рейтинг: 0 / 0
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
    #34580437
Eugeny_M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
morisВыполните SP с опцией with recompile
Спасибо, проверил - не влияет на время.
...
Рейтинг: 0 / 0
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
    #34580469
Rubber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
конечно, надо бы посмотреть на запрос.
У меня в большинстве случаев вопрос решается указанием индекса "в лоб" в ХП.
Т.е. смотришь план запроса в адвантаже и в ХП прописываешь индексы.
Но это не панацея, решение зависит от запроса...
...
Рейтинг: 0 / 0
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
    #34580492
moris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, тут или хинты по использованию индексов надо или использовать абстрактый план. Чтобы АП не писать самому, (утомительно) захватить АП c запроса выполняемого в Advantage, а потом добавить ключевое слово plan после запроса в SP и прописать захваченный ранее АП
запрос получиться типа такого:

select avg(price) from titles
plan
" ( plan
( i_scan type_price_ix titles )
( )
)"
...
Рейтинг: 0 / 0
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
    #34580520
Rubber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
select c.division,tn
from zt_register_charges c
where period>=@rp_p and period<=@rp and uperiod=@rp_p and c.enterprise_id = @eid
and c.division in (select div_id from #div)

какой query plan показывает адантаж?
...
Рейтинг: 0 / 0
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
    #34580543
Eugeny_M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Rubberselect c.division,tn
from zt_register_charges c
where period>=@rp_p and period<=@rp and uperiod=@rp_p and c.enterprise_id = @eid
and c.division in (select div_id from #div)

какой query plan показывает адантаж?

FROM TABLE
zt_register_charges
c
Nested iteration.
Index : ztui_register_charges_tnrpup
Forward scan.
Positioning by key.
Keys are:
enterprise_id ASC
period ASC
Using I/O Size 2 Kbytes for index leaf pages.
With LRU Buffer Replacement Strategy for index leaf pages.
Using I/O Size 2 Kbytes for data pages.
With LRU Buffer Replacement Strategy for data pages.


FROM TABLE
#div
EXISTS TABLE : nested iteration.
Table Scan.
Forward scan.
Positioning at start of table.
Using I/O Size 2 Kbytes for data pages.
With LRU Buffer Replacement Strategy for data pages.
TO TABLE
Worktable1.


STEP 2
The type of query is SELECT.


FROM TABLE
Worktable1.
Nested iteration.
Table Scan.
Forward scan.
Positioning at start of table.
Using I/O Size 16 Kbytes for data pages.
With MRU Buffer Replacement Strategy for data pages.


Server Message: Number 3630, Severity 10
Server 'storm_ds', Line 1:
Total estimated I/O cost for statement 1 (at line 1): 176.


Parse and Compile Time 1.
SQL Server cpu time: 100 ms.
Table: zt_register_charges scan count 1, logical reads: (regular=2660 apf=0 total=2660), physical reads: (regular=0 apf=0 total=0), apf IOs used=0
Table: #div_________00000260009805944 scan count 24975, logical reads: (regular=24975 apf=0 total=24975), physical reads: (regular=0 apf=0 total=0), apf IOs used=0
Table: Worktable1 scan count 1, logical reads: (regular=111 apf=0 total=111), physical reads: (regular=0 apf=0 total=0), apf IOs used=0
Server Message: Number 3631, Severity 10
Server 'storm_ds', Line 1:
Total actual I/O cost for this command: 55492.
Total writes for this command: 0

Execution Time 1.
SQL Server cpu time: 100 ms. SQL Server elapsed time: 153 ms.
(50 rows affected)
...
Рейтинг: 0 / 0
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
    #34580566
Rubber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
попробуй перекомпилить процу с хинтом

select c.division,tn
from zt_register_charges c (index ztui_register_charges_tnrpup)
where period>=@rp_p and period<=@rp and uperiod=@rp_p and c.enterprise_id = @eid
and c.division in (select div_id from #div)
...
Рейтинг: 0 / 0
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
    #34580654
Eugeny_M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Rubberпопробуй перекомпилить процу с хинтом

select c.division,tn
from zt_register_charges c (index ztui_register_charges_tnrpup)
where period>=@rp_p and period<=@rp and uperiod=@rp_p and c.enterprise_id = @eid
and c.division in (select div_id from #div)

Спасибо, меньше секунды!

Вопрос - насколько часто Вы используете принудительное указание индексов в запросах?
Мне говорили, что это не рекомендуется, так как при изменении кол-ва данных выполнение запросов может резко замедлиться?
А если изменится индексное выражение, добавят в начало новое поле?
Или требовать чтобы индексы не меняли, а создавали новый с теми же полями и + новым полем?
...
Рейтинг: 0 / 0
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
    #34580675
Eugeny_M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv
Eugeny_M пишет:
> Время работы кода SQL в хр.процедуре и в Advantage отличаются на порядок
> (ASE 12.5).

Код давайте, будут советы конкретные.

> Почему это возможно, что может влиять на это?

Запросы в процедурах и вне процедур оптимизируются немного по-разному.
Связано это с тем, что оптимизатор не знает значений переменных, которые
выступают в качестве параметров запросов в процедурах и не
применяет вычисление селективности для этого конкретного значения.


Posted via ActualForum NNTP Server 1.4

Код я дал. Какие можете дать советы, как новичку. Как заставить применять вычисление селективности в хр? И нужно ли всегда задавать индексы жестко в хр.процедуре в тексте запроса?
...
Рейтинг: 0 / 0
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
    #34580692
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugeny_M пишет:

Всю процедуру надо, весь код.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
    #34580713
Rubber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
поэтому и говорю - "это не панацея".
Изменение количества данных может замедлить время отработки, для таких вариантов есть разные 'лекарства' от UPDATE STATISTICS до REORG (если схема блокировки не ALL PAGES) и т.п.
[имхо: чтоб база продуктивно работала за ней нужно постоянно "следить" - периодически выполнять профилактику].
А что касается изменения структуры (не важно таблиц или индексов) - так извините, в таком случае - с процедур нужно тоже "смахивать пыль" :)
...
Рейтинг: 0 / 0
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
    #34580719
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugeny_M пишет:

> Вопрос - насколько часто Вы используете принудительное указание индексов
> в запросах?

Процентах в 20. Если запрос не оптимизируется самостоятельно сервером.

> Мне говорили, что это не рекомендуется, так как при изменении кол-ва
> данных выполнение запросов может резко замедлиться?

Причина такой рекомендации в том, что люди часто не знают
последствий указаний хинтов. Не знают, что делают, короче.
Если вы знаете и тщательно все проверили - то ничего плохого в этом
нет.

> А если изменится индексное выражение, добавят в начало новое поле?

То надо переписывать запрос. Убирать хинт, добавлять другой.

> Или требовать чтобы индексы не меняли, а создавали новый с теми же
> полями и + новым полем?

Конечно. Или пусть только в конец новые поля добавляют.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
    #34580731
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugeny_M пишет:

> Код я дал.

Это не код. Это один запрос. Там ничего не видно.

Как заставить
> применять вычисление селективности в хр?

Использовать в качестве параметров запросов параметры
процедуры. Но это не всегда надо, и не всегда помогает.

И нужно ли всегда задавать
> индексы жестко в хр.процедуре в тексте запроса?

Нет, не всегда, а когда только план генерируется плохой.
Как в вашем случае. И нельзя вынести переменные в параметры
процедуры или это не помогает.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
    #34580841
Eugeny_M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Rubberпоэтому и говорю - "это не панацея".
Изменение количества данных может замедлить время отработки, для таких вариантов есть разные 'лекарства' от UPDATE STATISTICS до REORG (если схема блокировки не ALL PAGES) и т.п.
[имхо: чтоб база продуктивно работала за ней нужно постоянно "следить" - периодически выполнять профилактику].
А что касается изменения структуры (не важно таблиц или индексов) - так извините, в таком случае - с процедур нужно тоже "смахивать пыль" :)

Спасибо! Почитаю про UPDATE STATISTICS и REORG.
...
Рейтинг: 0 / 0
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
    #34580879
Eugeny_M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv
Eugeny_M пишет:

> Код я дал.

Это не код. Это один запрос. Там ничего не видно.

Весь код занимает около 4 страниц. Меня интересовал тот код, который тормозил.


Как заставить
> применять вычисление селективности в хр?

Использовать в качестве параметров запросов параметры
процедуры. Но это не всегда надо, и не всегда помогает.

Т.е если в том примере я не использовал бы переменные @rp_p, @eid
а только параметры процедуры (т.е вычислял бы их раньше и передавал
в процедуру, в качестве параметров), то запрос был бы оптимизирован
и выполнился быстро (с подключением индекса)?


И нужно ли всегда задавать
> индексы жестко в хр.процедуре в тексте запроса?

Нет, не всегда, а когда только план генерируется плохой.
Как в вашем случае. И нельзя вынести переменные в параметры
процедуры или это не помогает.
Posted via ActualForum NNTP Server 1.4

Как определить в большой хр. процедуре, где 200 строк + вызов еще десятка других
хранимых процедур, для каких конструкций в хр. процедуре план генерируется плохой,
а для каких хороший?
...
Рейтинг: 0 / 0
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
    #34580880
Rubber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
почитайте :)
а в указанном запросе производительность будет снижаться при увеличении количества записей в таблице #div, так что если такое предусматривается - именно в этой части надо менять запрос уже сейчас...
удачи !
...
Рейтинг: 0 / 0
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
    #34580887
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugeny_M пишет:
> Весь код занимает около 4 страниц. Меня интересовал тот код, который
> тормозил.

Ну и давай . 8 килобайт-то всего. Ну или выкинь все после этого
запроса.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
    #34580889
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rubber пишет:
> Изменение количества данных может замедлить время отработки, для таких
> вариантов есть разные 'лекарства' от UPDATE STATISTICS до REORG (если

При чем здесь это-то?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
    #34580910
Eugeny_M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Rubberпочитайте :)
а в указанном запросе производительность будет снижаться при увеличении количества записей в таблице #div, так что если такое предусматривается - именно в этой части надо менять запрос уже сейчас...
удачи !

В таблице #div не больше 100 записей. А при выполнении подзапроса выбирается не больше 10.
create table #div(
div_id int not null,
...
wrk tinyint default 0 not null,
unique clustered (div_id))

Вы имеете ввиду такой вариант:
select c.division,tn
from zt_register_charges c (index ztui_register_charges_tnrpup), #div
where period>=@rp_p and period<=@rp and uperiod=@rp_p and c.enterprise_id = @eid
and c.division=#div.div_id and #div.wrk<2
...
Рейтинг: 0 / 0
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
    #34580914
Rubber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> При чем здесь это-то?

это к в вопросу "Мне говорили, что это не рекомендуется, так как при изменении кол-ва данных выполнение запросов может резко замедлиться?"
...
Рейтинг: 0 / 0
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
    #34580931
Rubber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Вы имеете ввиду такой вариант:
> select c.division,tn
> from zt_register_charges c (index ztui_register_charges_tnrpup), #div
> where period>=@rp_p and period<=@rp and uperiod=@rp_p and c.enterprise_id = @eid
> and c.division=#div.div_id and #div.wrk<2

не обязательно такой, это зависит от прогнозируемого в будущем кол-ва записей в #div.
если, к примеру, оно перевалит за пару десятков тысяч, то уже сейчас можно это предусмотреть.
...
Рейтинг: 0 / 0
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
    #34580956
Eugeny_M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv
Eugeny_M пишет:
> Весь код занимает около 4 страниц. Меня интересовал тот код, который
> тормозил.

Ну и давай . 8 килобайт-то всего. Ну или выкинь все после этого
запроса.
Posted via ActualForum NNTP Server 1.4

Я ошибся, не 4 страницы, там 54 кб - более 1200 строк. Выкладывать всё, зачем?
Не хочу захламлять ветку и сервер.
Или вы хотите стиль написания запросов посмотреть?
Код писал не я! Что он делает без поллитра не разберешься :)
...
Рейтинг: 0 / 0
25 сообщений из 41, страница 1 из 2
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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