Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Помогите понять откуда растут ноги. / 12 сообщений из 12, страница 1 из 1
26.02.2003, 18:40
    #32111719
Cooper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите понять откуда растут ноги.
/topic/23924\r
\r
Вот два дня уже пытал этот вопрос на главном форуме. Может здесь чем поможите?
...
Рейтинг: 0 / 0
26.02.2003, 22:10
    #32111777
Cat2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите понять откуда растут ноги.
Попробуй так

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

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

А потом Abort.

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

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

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

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

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

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

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

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

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

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

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

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

=======
Еще вопрос. Как ты тестируешь? У тебя клиент и сервер на одной машине?
...
Рейтинг: 0 / 0
04.03.2003, 11:42
    #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
04.03.2003, 12:15
    #32114193
Cooper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите понять откуда растут ноги.
Странно, А может дело и не в этом. Есть у меня другая ХП. Там теже параметры и тоже output. Но выполняется быстро.

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

Ну типа:

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

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

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

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

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

=========
Ты не ответил, на чем тестируешь. Если и сервер и клиент на одной машине, особенно если стоит не серверная ОС, то такого рода тормоза могут выскакивать и в QA.
...
Рейтинг: 0 / 0
04.03.2003, 14:06
    #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
05.03.2003, 15:27
    #32114930
Cooper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите понять откуда растут ноги.
2 Cat2

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

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

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

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


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