тормозит второй коннект
От: aibolit  
Дата: 11.02.05 04:12
Оценка:
БД MS SQL Server
программа устанавливает соединение с базой через OLE DB и держит его до окончания работы.
После запуска программы время исполнения простого запроса в QA увеличивается на 30 сек
(с 0 до 3х), причём если сразу после запуска запроса переключиться в профайлер, то эти
секунд 30 не видно признаков этого запроса, и через 30 сек он также быстро выполняется.
в чём может быть причина такой паузы?
Re: тормозит второй коннект
От: Smirnov.Anton Россия  
Дата: 11.02.05 07:47
Оценка:
Здравствуйте, aibolit, Вы писали:

A>программа устанавливает соединение с базой через OLE DB и держит его до окончания работы.

И что же эта программа делает?
Re: тормозит второй коннект
От: Аноним  
Дата: 11.02.05 08:06
Оценка:
Здравствуйте, aibolit, Вы писали:

A>БД MS SQL Server

A>программа устанавливает соединение с базой через OLE DB и держит его до окончания работы.
A>После запуска программы время исполнения простого запроса в QA увеличивается на 30 сек
A>(с 0 до 3х), причём если сразу после запуска запроса переключиться в профайлер, то эти

Видно что-то с блокировками..
A>секунд 30 не видно признаков этого запроса, и через 30 сек он также быстро выполняется.
A>в чём может быть причина такой паузы?
Re[2]: тормозит второй коннект
От: aibolit  
Дата: 11.02.05 10:02
Оценка:
Здравствуйте, Smirnov.Anton, Вы писали:
SA>И что же эта программа делает?
программа периодически пишет в базу данные, получаемые с com-порта,
в запросе к таблицам обращаюсь с хинтом nolock
Re: тормозит второй коннект
От: Arsu Россия  
Дата: 11.02.05 22:20
Оценка:
A>БД MS SQL Server
A>программа устанавливает соединение с базой через OLE DB и держит его до окончания работы.
A>После запуска программы время исполнения простого запроса в QA увеличивается на 30 сек
A>(с 0 до 3х), причём если сразу после запуска запроса переключиться в профайлер, то эти
A>секунд 30 не видно признаков этого запроса, и через 30 сек он также быстро выполняется.
A>в чём может быть причина такой паузы?

А примерчики обоих запросов мона?
Re[2]: тормозит второй коннект
От: lev.matash  
Дата: 14.02.05 09:55
Оценка:
Здравствуйте, Arsu, Вы писали:

A>А примерчики обоих запросов мона?

из QA вызываю такую функцию

create function fn_getGPS4Period
(
    @objNum int,
    @date1 datetime,
    @date2 datetime
)
returns table
as
return
    select cs.id, cs.SignalTime [time], gs.X, gs.Y
    from CommonSignals cs (nolock) inner join GPSSignals gs (nolock) on cs.id = gs.id
    where cs.ObjectNum = @objNum and cs.SignalTime between @date1 and @date2

разница параметров 2 и 3 — 1 час
программа периодически вызывает процедуру

CREATE PROCEDURE dbo.spAddGPSignal
    (
        @ObjectNum int,
        @RecieverNum tinyint,
        @RecvrLevel tinyint,
        @RetrNum tinyint,
        @RetrLevel tinyint,
        @DepNum tinyint,
        @STime datetime,
        @Latitude float,
        @Longitude float,
        @X float,
        @Y float
    )
AS
    /* SET NOCOUNT ON */
    declare @id int
    
    exec dbo.spAddCommonSignalData @ObjectNum, @RecieverNum, @RecvrLevel, @RetrNum, @RetrLevel, @DepNum, @STime, @id OUTPUT
    
    insert into dbo.GPSSignals 
    values ( @id, @Latitude, @Longitude, @X, @Y )

    RETURN 

CREATE PROCEDURE dbo.spAddCommonSignalData
    (
        @ObjectNum int,
        @RecieverNum tinyint,
        @RecvrLevel tinyint,
        @RetrNum tinyint,
        @RetrLevel tinyint,
        @DepNum tinyint,
        @STime datetime,
        @id int OUTPUT
    )
AS
    /* SET NOCOUNT ON */
    insert into dbo.CommonSignals ( ObjectNum, RecieverNum, RecvrLevel, RetrNum, RetrLevel, DepNum, SignalTime )
    values ( @ObjectNum, @RecieverNum, @RecvrLevel, @RetrNum, @RetrLevel, @DepNum, @STime)
    set @id = @@IDENTITY
    RETURN
Re: тормозит второй коннект
От: _Senya  
Дата: 14.02.05 13:59
Оценка:
Здравствуйте, aibolit, Вы писали:

A>БД MS SQL Server

A>программа устанавливает соединение с базой через OLE DB и держит его до окончания работы.

Скорее всего больше коннекшнов не дает SQL Server

A>После запуска программы время исполнения простого запроса в QA увеличивается на 30 сек

A>(с 0 до 3х), причём если сразу после запуска запроса переключиться в профайлер, то эти
A>секунд 30 не видно признаков этого запроса, и через 30 сек он также быстро выполняется.

Это подтверждает тот факт, что коннекшн второму запросу отдается после освобождения его первым (по 30 сек. таймауту, судя по всему), после получения свободного коннекшна 2-й запрос моментально стартует и тут же выполняется (если Duration в профайлере после выполнения этого 2-го запроса не равно конечно 30 сек.).

П.С. Не утверждаю, что все именно так, но очень похоже на то.
Дураки — не мамонты, они не вымрут...
Re[2]: тормозит второй коннект
От: _Senya  
Дата: 14.02.05 14:11
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Видно что-то с блокировками..


В случае с блокировками Duration 2-го запроса в профайлере был бы около 30 сек., мне кажется, что Айболит должен был бы это заметить.
Дураки — не мамонты, они не вымрут...
Re[3]: тормозит второй коннект
От: lev.matash  
Дата: 18.02.05 06:42
Оценка:
Здравствуйте, _Senya, Вы писали:

_S>В случае с блокировками Duration 2-го запроса в профайлере был бы около 30 сек., мне кажется, что Айболит должен был бы это заметить.

Duration отличается, если пускать запрос без работы программы и с ней и зависит от того, как часто программа пишет в базу.
В программе дочерний поток устанавливает соединение с базой и выполняет тот же самый запрос, так вот он не тормозит
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.