Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Странное поведение одного и того же запроса.  [new]
VitLF
Member

Откуда:
Сообщений: 339
Из за чего один и тот-же запрос может выполнятся с разным временем длительности? Т.е. в какой-то момент времени он отрабатывает быстро, практически мгновенно, а в другой момент времени он же будет длиться до нескольких секунд, порядка 20-30 сек.
9 окт 12, 15:06    [13290899]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение одного и того же запроса.  [new]
PaulYoung
Member

Откуда: Москва
Сообщений: 2565
VitLF, вы же, поди, не один на сервере...
9 окт 12, 15:08    [13290911]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение одного и того же запроса.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37202
Кеш, нагрузка на диски, блокировки. Все, что угодно.
9 окт 12, 15:09    [13290922]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение одного и того же запроса.  [new]
Ozerov
Member

Откуда: Москва
Сообщений: 3637
смотрите блокировки в момент долгого выполнения.
9 окт 12, 15:10    [13290924]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение одного и того же запроса.  [new]
VitLF
Member

Откуда:
Сообщений: 339
PaulYoung
VitLF, вы же, поди, не один на сервере...


Мониторил сервер, ресурсов хватает. С остальными запросами в порядке. А этот ведёт себя по странному, то быстро, то медленно.
9 окт 12, 15:20    [13291003]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение одного и того же запроса.  [new]
VitLF
Member

Откуда:
Сообщений: 339
Ozerov
смотрите блокировки в момент долгого выполнения.


Это еще гляну. Спасибо.
9 окт 12, 15:21    [13291025]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение одного и того же запроса.  [new]
Crimean
Member

Откуда:
Сообщений: 13147
а запрос или хранимка? и - я бы посмотрел на разницу в connection settings. это для начала
9 окт 12, 15:29    [13291100]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение одного и того же запроса.  [new]
VitLF
Member

Откуда:
Сообщений: 339
Crimean
а запрос или хранимка? и - я бы посмотрел на разницу в connection settings. это для начала


Скорей всего запрос.
9 окт 12, 15:57    [13291366]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение одного и того же запроса.  [new]
Crimean
Member

Откуда:
Сообщений: 13147
VitLF
Crimean
а запрос или хранимка? и - я бы посмотрел на разницу в connection settings. это для начала


Скорей всего запрос.


ну тогда планы и блокировки, больше особо нечему
9 окт 12, 16:05    [13291422]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение одного и того же запроса.  [new]
кеш
Guest
Crimean
VitLF
пропущено...


Скорей всего запрос.


ну тогда планы и блокировки, больше особо нечему

и кеш...
9 окт 12, 17:13    [13291952]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение одного и того же запроса.  [new]
Crimean
Member

Откуда:
Сообщений: 13147
кеш
и кеш...


тоже вариант. память - она не резиновая. если кто-то "выбил" ее "нечастым" запросом..
9 окт 12, 18:13    [13292295]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение одного и того же запроса.  [new]
VitLF
Member

Откуда:
Сообщений: 339
Crimean
кеш
и кеш...


тоже вариант. память - она не резиновая. если кто-то "выбил" ее "нечастым" запросом..


Вероятно, отследил профайлером запрос, выполнялся большую часть времени около полсекунды (если точнее от ~0.1 сек. до ~0.6 сек.) и вдруг в какой-то момент он же стал выполняться 52-54 секунды. Запрос тот-же. Блокировок не наблюдал. Потом обратно в свои так сказать русла возвращается и работает как обычно около полсекунды (~0.1-0.6 сек).
Памяти на сервере 16Гб. Но я её давно ограничил для SQL Server 2008 R2 от 8192 Мб до 13568 Мб. Остальное отдал системе, проблем на остальных запросах так критично не наблюдается, заторы такого образа в основном странным образом на этом запросе.
13 окт 12, 20:39    [13314248]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение одного и того же запроса.  [new]
VitLF
Member

Откуда:
Сообщений: 339
VitLF
Crimean
пропущено...


тоже вариант. память - она не резиновая. если кто-то "выбил" ее "нечастым" запросом..


Вероятно, отследил профайлером запрос, выполнялся большую часть времени около полсекунды (если точнее от ~0.1 сек. до ~0.6 сек.) и вдруг в какой-то момент он же стал выполняться 52-54 секунды. Запрос тот-же. Блокировок не наблюдал. Потом обратно в свои так сказать русла возвращается и работает как обычно около полсекунды (~0.1-0.6 сек).
Памяти на сервере 16Гб. Но я её давно ограничил для SQL Server 2008 R2 от 8192 Мб до 13568 Мб. Остальное отдал системе, проблем на остальных запросах так критично не наблюдается, заторы такого образа в основном странным образом на этом запросе.


Позже постараюсь опубликовать сам запрос и его планы выполнения. Вероятно с понедельника.
13 окт 12, 20:44    [13314267]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение одного и того же запроса.  [new]
VitLF
Member

Откуда:
Сообщений: 339
Вот сам запрос!

select people.pId ,
( case when sd.pid is not null then char ( 4 ) + 'trffc14' when sd2.pid is not null then char ( 4 ) + 'trffc14_ssuda_2012' else '' end ) ,
people.Num_Tab ,
emps.fName ,
( case when people.out_date < '2012-09-30' then char ( 4 ) + 'icw95mbx01' when people.out_date < > '2099-01-01' and people.out_date > = '2012-09-30' then char ( 4 ) + 'icw95mbx03' else '' end ) ,
emps.Wage ,
emps.number_w ,
emps.Date_Trans ,
vpr_WK_TYPE.work_type ,
emps.Code_Regim ,
emps.Code_SysPay ,
vpr_wk_categ.Work_Categ_Name ,
people.Auto_card ,
people.id_Firm ,
( case when people.out_date ! = '2099-01-01' and people.out_date < = '2012-09-30' then 247 else 239 end ) ,
emps.coeff_1 ,
emps.coeff_2 ,
emps.coeff_3 ,
emps.coeff_4 ,
emps.coeff_5 ,
people.pay_location ,
people.avans ,
emps.fName as full_name ,
vpr_WK_TYPE.Work_Status ,
emps.prID ,
emps.calc_n ,
appointments.name_appoint ,
PClass.Text_Prof ,
'(' + structs.name_internal + ') ' + Structs.Struct_Name as struct_name ,
people.in_date ,
people.out_date ,
Setup.Name ,
typ_Regim.Name_Regim ,
structs.name_internal ,
card.SocNumber
from emps ( NOLOCK ) inner join Card on emps.auto_card = Card.auto_card
inner join people on emps.pId = people.pId
inner join Structs on emps.Struct_code = Structs.Struct_code
inner join Setup on emps.id_firm = Setup.id_firm
inner join vpr_WK_TYPE on emps.work_code = vpr_wk_type.work_code
left join appointments on emps.code_appoint = appointments.code_appoint
left join PClass on emps.w_class = PClass.Code_Prof
left join typ_Regim ( NOLOCK ) on emps.Code_Regim = typ_Regim.Code_Regim
left join vpr_wk_categ ( NOLOCK ) on emps.Code_Categ = vpr_wk_categ.Work_Categ
left join ( select distinct pid from user_ssuda_dolg ( ) ) sd on sd.pid = people.pId
left join ( select distinct id_ref as pid from pr_group_value pg ( nolock )
where pg.id_group = 0 and 1 between pg.fromd and pg.Tod ) sd2 on sd2.pid = people.pId
where emps.st = 2 order by emps.fName
15 окт 12, 08:54    [13317834]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение одного и того же запроса.  [new]
VitLF
Member

Откуда:
Сообщений: 339
План выполнения, полученный через профайлер. Запрос в данном плане выполняется быстро.

К сообщению приложен файл (soft.zip - 9Kb) cкачать
15 окт 12, 09:18    [13317908]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение одного и того же запроса.  [new]
VitLF
Member

Откуда:
Сообщений: 339
Тот же запрос, но план чуток другой. И большое оперирование строками при Hash Match! И отсюда время выполнения до 50-54 сек.

К сообщению приложен файл (hard.zip - 9Kb) cкачать
15 окт 12, 09:33    [13317989]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение одного и того же запроса.  [new]
VitLF
Member

Откуда:
Сообщений: 339
Не могу взять в толк. Ведь запрос тот-же. И работает пользователь иногда нормально, а потом начинается такое. А потом вродь опять стабилизация. Т.е. время от времени бывает такое.
15 окт 12, 09:35    [13318006]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение одного и того же запроса.  [new]
Glory
Member

Откуда:
Сообщений: 104751
VitLF
Ведь запрос тот-же. И работает пользователь иногда нормально, а потом начинается такое. А потом вродь опять стабилизация. Т.е. время от времени бывает такое

У одного и того же пользователя из одного и того же приложения на одной и той же машине ?
15 окт 12, 09:48    [13318054]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение одного и того же запроса.  [new]
VitLF
Member

Откуда:
Сообщений: 339
Glory
VitLF
Ведь запрос тот-же. И работает пользователь иногда нормально, а потом начинается такое. А потом вродь опять стабилизация. Т.е. время от времени бывает такое

У одного и того же пользователя из одного и того же приложения на одной и той же машине ?


Нет, практически у всех возникает время от времени такая ситуация.
15 окт 12, 10:33    [13318380]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение одного и того же запроса.  [new]
VitLF
Member

Откуда:
Сообщений: 339
И по сути из сравнения по планам при выполнении строки
select distinct pid from user_ssuda_dolg ( ) ) sd on sd.pid = people.pId из приведённого выше кода начинается какая-то ерунда, если так визуально глянуть.
Может даже при выполнении функции user_ssuda_dolg.
15 окт 12, 10:39    [13318418]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение одного и того же запроса.  [new]
VitLF
Member

Откуда:
Сообщений: 339
Вот сама функция из запроса.

CREATE FUNCTION [dbo].[user_ssuda_dolg]()
RETURNS Table
AS
RETURN

select
isnull(ud.pid,s.pid) as pid
,s.s as s1
,ud.s as s2
,isnull(s.s,0)-isnull(ud.s,0) as s
from (
select pid, sum(summa) as s
from user_ssuda
where date<='2011-12-31' -- только старые судды
group by pid
)s
left join (select pid, sum(summa) as s
from user_ssuda_ud
group by pid
)ud on s.pid=ud.pid
where isnull(s.s,0)-isnull(ud.s,0)<>0
15 окт 12, 10:41    [13318428]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение одного и того же запроса.  [new]
VitLF
Member

Откуда:
Сообщений: 339
Hash Match почему-то начинает оперировать при одном и том же запросе разным количеством строк!
15 окт 12, 10:46    [13318455]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение одного и того же запроса.  [new]
host.13
Member

Откуда:
Сообщений: 263
Если в исходных таблицах данные часто по многу изменяются или добавляются, то меняется статистика - вот оптимизатор и выбирает другой план выполнения.
15 окт 12, 11:29    [13318743]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение одного и того же запроса.  [new]
VitLF
Member

Откуда:
Сообщений: 339
И ещё, что заметно из функции оптимизатор при чтении кода использует Merge Join.
select
isnull(ud.pid,s.pid) as pid
,s.s as s1
,ud.s as s2
,isnull(s.s,0)-isnull(ud.s,0) as s
from (
select pid, sum(summa) as s
from user_ssuda
where date<='2011-12-31' -- только старые судды
group by pid
)s
left join (select pid, sum(summa) as s
from user_ssuda_ud
group by pid
)ud on s.pid=ud.pid
where isnull(s.s,0)-isnull(ud.s,0)<>0

А уже в самом запросе Hash Match. Как так?
15 окт 12, 12:30    [13319132]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение одного и того же запроса.  [new]
Glory
Member

Откуда:
Сообщений: 104751
VitLF
А уже в самом запросе Hash Match. Как так?

Наверное потому, что во внешнем запросе не только эта табличная функция
15 окт 12, 12:34    [13319170]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить