powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Помогите понять откуда растут ноги.
12 сообщений из 12, страница 1 из 1
Помогите понять откуда растут ноги.
    #32111719
Фотография Cooper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
/topic/23924\r
\r
Вот два дня уже пытал этот вопрос на главном форуме. Может здесь чем поможите?
...
Рейтинг: 0 / 0
Помогите понять откуда растут ноги.
    #32111777
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй так

В все обработки поставь DataSource в событие onUpdateDat

Сначала сделай обновляющий запрос, а потом ReQuery

А потом Abort.

Завтра гляну точно, как это у меня делается - начисто из головы выскочило.
...
Рейтинг: 0 / 0
Помогите понять откуда растут ноги.
    #32113283
Фотография Cooper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Cat2

Не мог бы ты поподробнее рассказать, как это сделать. А то я недогоняю малёха. Особенно вот это не понял:

Сначала сделай обновляющий запрос, а потом ReQuery
А потом Abort.
...
Рейтинг: 0 / 0
Помогите понять откуда растут ноги.
    #32113284
Фотография Cooper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин, чё делать? Все перепробовал.

Убрал все обработки.

Кинул на форму кнопку, в которой обновляю запрос.
И получается таже фигня. Перво нажатие кнопки (первое выполнение запроса) выполняется быстро. А второе тормозит несколько секунд. Так что не понятно почему это происходит. Может сервер выделывается?

Народ ну помогите хоть чем-нибудь!!!

Спасибо.
...
Рейтинг: 0 / 0
Помогите понять откуда растут ноги.
    #32113913
Фотография Cooper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Люди!!! Человеки Вы или хто?

Ну помогите!!! Ну позарез нужно. Это не ради праздного любопытства!!! Все, что мог все перепробовал. Не дайте погибнуть моей программе!!!

P.S. Жители и гости Столицы будут ублажены пивом.

P.S. Я плакаю :((((
...
Рейтинг: 0 / 0
Помогите понять откуда растут ноги.
    #32113972
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какой у тебя в кнопке код? Последовательность должна быть такова

DataSource.Enabled:=false;
DataSet.ReQuery;
DataSource.Enabled:=true;

=========
Что видно в профилере? Где задержка? В период от нажатия кнопки до посылки запроса, или от посылки запроса до получения результата?

=======
Еще вопрос. Как ты тестируешь? У тебя клиент и сервер на одной машине?
...
Рейтинг: 0 / 0
Помогите понять откуда растут ноги.
    #32114155
Фотография Cooper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Cat2

В кнопке такой код:

adostoredproc1.Active:=false;
adostoredproc1.Active:=true; //Вот здесь висит долго (при первом выполнении около 2 секунд, при втором около 5 секунд, при последующих выполняется мгновенно)

Где задержка? В период от нажатия кнопки до посылки запроса, или от посылки запроса до получения результата?

Я так понимаю, что от посылки запроса до получения результата.

Но это все чешуя. Посмотрел в профайлере. Там видно, что тормозит Хр.Процедура.А тормозит вот где:
Я там объявляю 12 Параметров процедуры типа output. И там их меняю и на клиенте естественно получаю новые значения.
Так вот в профайлере вижу:

SP:Completed (Это я не знаю чего значит) (3 секунды)
Код: plaintext
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 @P1 int
set @P1= 0 
declare @P2 float
set @P2= 3 .000000000000000e+ 001 
declare @P3 int
set @P3= 10000001 
declare @P4 int
set @P4= 1 
declare @P5 varchar( 50 )
set @P5='4'
declare @P6 varchar( 50 )
set @P6='USD'
declare @P7 varchar( 50 )
set @P7='OLDI 344'
declare @P8 varchar( 50 )
set @P8='Варшавка'
declare @P9 int
set @P9= 10000001 
declare @P10 datetime
set @P10='Mar  3 2003 10:12AM'
declare @P11 varchar( 50 )
set @P11=''
declare @P12 bit
set @P12= 0 
exec SP_Tapm_tovar_Select  1 ,  0 , @P1 output,  10000017 , @P2 output, @P3 output, @P4 output, @P5 output, @P6 output, @P7 output, @P8 output, @P9 output, @P10 output, @P11 output, @P12 output
select @P1, @P2, @P3, @P4, @P5, @P6, @P7, @P8, @P9, @P10, @P11, @P12


и строку RPC:Completed (4 секунды)
Код: plaintext
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 @P1 int
set @P1= 0 
declare @P2 float
set @P2= 3 .000000000000000e+ 001 
declare @P3 int
set @P3= 10000001 
declare @P4 int
set @P4= 1 
declare @P5 varchar( 50 )
set @P5='4'
declare @P6 varchar( 50 )
set @P6='USD'
declare @P7 varchar( 50 )
set @P7='OLDI 344'
declare @P8 varchar( 50 )
set @P8='Варшавка'
declare @P9 int
set @P9= 10000001 
declare @P10 datetime
set @P10='Mar  3 2003 10:12AM'
declare @P11 varchar( 50 )
set @P11=''
declare @P12 bit
set @P12= 0 
exec SP_Tapm_tovar_Select  1 ,  0 , @P1 output,  10000017 , @P2 output, @P3 output, @P4 output, @P5 output, @P6 output, @P7 output, @P8 output, @P9 output, @P10 output, @P11 output, @P12 output
select @P1, @P2, @P3, @P4, @P5, @P6, @P7, @P8, @P9, @P10, @P11, @P12


Потом убрал в хранимой процедуре у параметров тип output. И Процедура выполняется очень быстро. И эти две строки из профайлера исчезли.

Так что же, получается ХП тормозит (причем на первом и втором выполнении в одном соединении) из-за того, что у параметров стоит output?

Так чтоли? А почему это происходит? И что мне теперь делать?
...
Рейтинг: 0 / 0
Помогите понять откуда растут ноги.
    #32114193
Фотография Cooper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странно, А может дело и не в этом. Есть у меня другая ХП. Там теже параметры и тоже output. Но выполняется быстро.

А могут быть тормоза из-за использования временных таблиц?

Ну типа:

Код: plaintext
1.
2.
3.
4.
insert a, b, c into #table from T

................

select a, b, c from #table
...
Рейтинг: 0 / 0
Помогите понять откуда растут ноги.
    #32114265
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не понял, зачем ты делаешь в SP_Tapm_tovar_Select ввод-выход через OUTPUT-параметры?
Почему просто не делаешь в теле этой процедуры вызов SELECT с требуемыми данными? А ввод параметров константами?
Похоже, что имея передачу параметрами, заданными в виде переменных, сервер каждый раз переделывает план запроса.

Тормоза из-за временных таблиц тоже могут быть. Но это решается увеличением tempdb. И, помоему, это не тот случай.

"Completed" - в данном контексте - "закончено, готово"

=========
Ты не ответил, на чем тестируешь. Если и сервер и клиент на одной машине, особенно если стоит не серверная ОС, то такого рода тормоза могут выскакивать и в QA.
...
Рейтинг: 0 / 0
Помогите понять откуда растут ноги.
    #32114318
Фотография Cooper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Cat2

А ввод параметров константами?

Так я же вроде ввожу параметры константами. Вот так:

Код: plaintext
adostoredpro1.parameters.parambyname('имя параметра').value:= 777 ;


Похоже, что имея передачу параметрами, заданными в виде переменных

В виде переменных, в смысле output?

А почему, если я убираю output, то вот это исчезает из профайлера?:

Код: plaintext
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 @P1 int
set @P1= 0 
declare @P2 float
set @P2= 3 .000000000000000e+ 001 
declare @P3 int
set @P3= 10000001 
declare @P4 int
set @P4= 1 
declare @P5 varchar( 50 )
set @P5='4'
declare @P6 varchar( 50 )
set @P6='USD'
declare @P7 varchar( 50 )
set @P7='OLDI 344'
declare @P8 varchar( 50 )
set @P8='Варшавка'
declare @P9 int
set @P9= 10000001 
declare @P10 datetime
set @P10='Mar  3 2003 10:12AM'
declare @P11 varchar( 50 )
set @P11=''
declare @P12 bit
set @P12= 0 
exec SP_Tapm_tovar_Select  1 ,  0 , @P1 output,  10000017 , @P2 output, @P3 output, @P4 output, @P5 output, @P6 output, @P7 output, @P8 output, @P9 output, @P10 output, @P11 output, @P12 output
select @P1, @P2, @P3, @P4, @P5, @P6, @P7, @P8, @P9, @P10, @P11, @P12


Я чего то не пойму, эта процедура (SP_Tapm_tovar_Select) второй раз что ли запускается?

Код: plaintext
1.
exec SP_Tapm_tovar_Select  1 ,  0 , @P1 output,  10000017 , @P2 output, @P3 output, @P4 output, @P5 output, @P6 output, @P7 output, @P8 output, @P9 output, @P10 output, @P11 output, @P12 output
select @P1, @P2, @P3, @P4, @


На счет временных таблиц:

Когда я в ХП (SP_Tapm_tovar_Select) вместо вот этого:

Код: plaintext
1.
2.
insert a, b, c into #table from T
................
select a, b, c from #table

Пишу вот это:
Код: plaintext
select a, b, c from T


То ХП выполняется мгновенно (всегда).
То есть тормоза могут быть из-за временной таблицы?

Ты не ответил, на чем тестируешь. Если и сервер и клиент на одной машине, особенно если стоит не серверная ОС, то такого рода тормоза могут выскакивать и в QA.

Windows 2000 SERVER + SQL SERVER 2000 PE. Клиента запускал и на этой машине и по сети. Результат одинаковый. Я уверен, что дело в процедуре.

P.S.
А нужно ли в ХП сначала создавать Временную таблицу вот так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
if object_id('tempdb..#table') is not null drop table #table
create table #table
(
a int,
b int,
c int,
......
)*/

Или можно сразу делать так:
Код: plaintext
Insert a,b,c into #Table from T


Спасибо за помощь.
...
Рейтинг: 0 / 0
Помогите понять откуда растут ноги.
    #32114930
Фотография Cooper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Cat2

Ну вобчем, переписал я эту злополучную ХП, убрал временные таблицы. Размер процедуры (запроса) увеличился с 9 страниц до 14. Но зато никаких тормозов. Выполняется мгновенно.

P.S. А параметры все же оставил output.
...
Рейтинг: 0 / 0
Помогите понять откуда растут ноги.
    #32115177
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Созданные в ХП временные таблицы убиваются автоматом, так что проверять их наличие и специально убивать не надо. Причем проверка у тебя сделана неправильно. А как правильно - я не помню. Где-то на форуме был этот вопрос.
Суть в том, что в tempdb временная таблица хранится не под заданным тобой именем, а под своим, что-то типа
#table____________________________________________000000000007

Ты все же глянь размер tempdb. Поробуй его увеличить раза в два. Настроен ли он у тебя на автоувеличение? Даже если настроено - чем в tenpdb больше места, тем лучше для запросов. Меньше фрагментация.

===============
Кинь текст ХП на мыло. Чо-то мне 14 страниц многовато кажется.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Помогите понять откуда растут ноги.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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