Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 проблема с запросом к линкованному серверу  [new]
Гость08042013
Guest
Доброго времени суток!
Разбирался с подтормаживанием, отловил тормозящую процедурку. Суть ее в том, что пользователь может указать или не указать номер документа, и при сохранинии док-та она по этому номеру пытается или не пытается выбрать данные из другой базы (прилинкованный сервак).
происходит следующее (проблемный код в упрощенном виде):

declare @num_doc varchar(50)

set @num_doc=''

if len(@num_doc)>0
begin

insert into dbo.MyTable(num_doc, item, q1)
select num_doc, item, q1 from MyLinkedSrv1.Base.dbo.Table1 where num_doc=@num_doc order by item

......

end


вот тут несмотря на то, что внутрь ветки не заходит и запрос к линкованному серваку не выполняется, проца выполняется довольно долго. В то же время если я запрос записываю в переменную и делаю так -

insert into dbo.MyTable(num_doc, item, q1)
exec(@cmd1)


то все быстро,
при выполнении проблемного варианта в профайлере вижу, что 100% Duration и CPU приходится на строчку Perfomance Statistic (подробнее 30% - table insert(dbo.MyTable), 35 % - sort, 35 % - remote query).
Динамический SQL решил проблему, но правильный ли это выход, может по другому с этим бороться?


з.ы. рабочий сервак - Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86),
удаленный (линкованный) - база 6.5 в режиме совместимости на 2000-ом.
8 апр 13, 12:39    [14150681]     Ответить | Цитировать Сообщить модератору
 Re: проблема с запросом к линкованному серверу  [new]
Glory
Member

Откуда:
Сообщений: 104760
Гость08042013
при выполнении проблемного варианта в профайлере вижу, что 100% Duration и CPU приходится на строчку Perfomance Statistic (подробнее 30% - table insert(dbo.MyTable), 35 % - sort, 35 % - remote query).

Оптимизатор пробует построить план выполнения. Для этого пытается прочитать с линкованного сервера статистику, например.
Гость08042013
Динамический SQL решил проблему, но правильный ли это выход, может по другому с этим бороться?

Динамический запрос просто откладывает фазу построения плана до момента фактического выполнения запроса.
8 апр 13, 13:00    [14150836]     Ответить | Цитировать Сообщить модератору
 Re: проблема с запросом к линкованному серверу  [new]
Гость08042013
Guest
Glory
Оптимизатор пробует построить план выполнения. Для этого пытается прочитать с линкованного сервера статистику, например.


Хм, он при каждом запуске это делает.

Glory
просто откладывает фазу построения плана до момента фактического выполнения запроса


В том то и дело, что № документа пустой, в эту ветку не заходим и выбирать в общем ничего не надо, странно что каждый раз такая задержка.
8 апр 13, 13:09    [14150913]     Ответить | Цитировать Сообщить модератору
 Re: проблема с запросом к линкованному серверу  [new]
Glory
Member

Откуда:
Сообщений: 104760
Гость08042013
В том то и дело, что № документа пустой, в эту ветку не заходим и выбирать в общем ничего не надо, странно что каждый раз такая задержка.

План процедуры строится для всех случае. Т.е. все if игнорируются

Гость08042013
Хм, он при каждом запуске это делает.

Завсит от того, будет ли план использоваться повторно или нет.
8 апр 13, 13:11    [14150934]     Ответить | Цитировать Сообщить модератору
 Re: проблема с запросом к линкованному серверу  [new]
Гость08042013
Guest
Glory
Завсит от того, будет ли план использоваться повторно или нет.


Спасибо за ответы! Похоже план и правда не используется повторно. Правильно ли я мыслю, что это м.б. из за разницы в версиях?
8 апр 13, 13:45    [14151209]     Ответить | Цитировать Сообщить модератору
 Re: проблема с запросом к линкованному серверу  [new]
Glory
Member

Откуда:
Сообщений: 104760
Гость08042013
Правильно ли я мыслю, что это м.б. из за разницы в версиях?

Сложно сказать
Нужно мониторить
- попадает ли план в кэш
- жив ли он на момент повтороного вызова
- если жив, то по какой причине пересоздается
8 апр 13, 13:47    [14151226]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить