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

Откуда:
Сообщений: 13
Здравствуйте, SQL2005 имеется ХП:

--Входит: 
@Whomid int

With Ps(idt, typet, datet)
AS
(
	Select idt, typet, Max(datet)
	From dbo.Total
	Group by idt, typet
)
Select @ex=count(t.idt)
From dbo.Total as t Inner Join Ps as p ON t.idt=p.idt and t.typet=p.typet and t.datet=p.datet
Where t.statet in (1,2) and t.opt=3 and t.whomid=@Whomid

if @ex>0 Select 'Есть такие строки' else Select 'Нет ни одной строки'



Total - очень большая вьюха, в которая содержит ВСЁ содержимое нескольких таблиц (досталось по наследству)

Вопрос в следующем - при запуске этой процедуры из менеджмент-студии она выполняется 1-2 секунды.
Она же, вызванная из проги, написанной на C# с удаленного компа - отрабатывается секунд 30-минуту.

Отчего такая разница? По сети же никакие данные не гонятся!

p.s. Подобной проблемы с другими ХП (а их около 500) не наблюдалось
28 мар 12, 10:09    [12325074]     Ответить | Цитировать Сообщить модератору
 Re: ХП через студию отрабатывает значительно быстрее чем при запросе из внешки  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5124
сравните параметры подключения
28 мар 12, 10:18    [12325114]     Ответить | Цитировать Сообщить модератору
 Re: ХП через студию отрабатывает значительно быстрее чем при запросе из внешки  [new]
Neogenn
Member

Откуда:
Сообщений: 13
Дедушка, сравнивал естественно
				connLists.Open();
                SqlCommand comm1 = new SqlCommand("myProc", connLists);
                comm1.CommandType = CommandType.StoredProcedure;
                comm1.CommandTimeout = 0;
                comm1.Parameters.AddWithValue("@Whomid", int.Parse(Whomid));
				
                SqlDataReader rdr = comm1.ExecuteReader(); //Повисает прога и ждет ответа естественно тут.
				
                if (rdr.HasRows)
                {
                    while (rdr.Read())
                    {
                        errmsg = rdr[0].ToString();
                    }
                }
                rdr.Close();
                rdr.Dispose();
                comm1.Dispose();
                connLists.Close();
                if (errmsg.Length > 0) { MessageBox.Show(errmsg); }


Даже копипастил на всякий случай с других мест...
28 мар 12, 10:23    [12325152]     Ответить | Цитировать Сообщить модератору
 Re: ХП через студию отрабатывает значительно быстрее чем при запросе из внешки  [new]
SamMan
Member

Откуда: Moscow
Сообщений: 759
Neogenn,

Студия и "прога" запускаются с одной машины, разумеется?
"Прога", получив резал-сет с сервера, не парсит его, не делит, не сливает с другим, не... , а сразу "вываливает" на экран, разумеется?
28 мар 12, 10:24    [12325157]     Ответить | Цитировать Сообщить модератору
 Re: ХП через студию отрабатывает значительно быстрее чем при запросе из внешки  [new]
Glory
Member

Откуда:
Сообщений: 104751
Neogenn
сравнивал естественно

Это текст вашей программы для подключения
А не параметры созданного соединения
DBCC USEROPTIONS
28 мар 12, 10:27    [12325172]     Ответить | Цитировать Сообщить модератору
 Re: ХП через студию отрабатывает значительно быстрее чем при запросе из внешки  [new]
Neogenn
Member

Откуда:
Сообщений: 13
SamMan, Студию запускаю на серваке, а прогу на УДАЛЕННОМ компе в локалке. Она отсылает в этот момент 1 запрос и принимает 1 строку ответа (Данные не гоняются), я даже пакетики считал =)
У других процедур (даже самых тяжелых) такой разницы по времени не наблюдается
28 мар 12, 10:27    [12325175]     Ответить | Цитировать Сообщить модератору
 Re: ХП через студию отрабатывает значительно быстрее чем при запросе из внешки  [new]
Neogenn
Member

Откуда:
Сообщений: 13
Glory, Вся прога (а она не малая) работает на тех же самых подключениях, зачастую эти строки - копипаст из одного блока проги в другой. Таких проблем нет.
28 мар 12, 10:29    [12325184]     Ответить | Цитировать Сообщить модератору
 Re: ХП через студию отрабатывает значительно быстрее чем при запросе из внешки  [new]
Glory
Member

Откуда:
Сообщений: 104751
Neogenn
Glory, Вся прога (а она не малая) работает на тех же самых подключениях, зачастую эти строки - копипаст из одного блока проги в другой. Таких проблем нет.

И поэтому не надо сравнивать параметры созданных коннектов что ли ?
28 мар 12, 10:30    [12325191]     Ответить | Цитировать Сообщить модератору
 Re: ХП через студию отрабатывает значительно быстрее чем при запросе из внешки  [new]
Neogenn
Member

Откуда:
Сообщений: 13
Glory, сейчас раберусь и сделаю, посмотрим.
Просто есть 500 компов. Такая проблема у всех и именно с этой процедурой. Но только если в выборке есть строки (чем больше - тем дольше висим)
так что проблема, я так думаю непосредственно в процедуре?
28 мар 12, 10:39    [12325247]     Ответить | Цитировать Сообщить модератору
 Re: ХП через студию отрабатывает значительно быстрее чем при запросе из внешки  [new]
Glory
Member

Откуда:
Сообщений: 104751
Neogenn
Студию запускаю на серваке, а прогу на УДАЛЕННОМ компе в локалке.

Так у вас уже разные условия тестирования
28 мар 12, 10:40    [12325257]     Ответить | Цитировать Сообщить модератору
 Re: ХП через студию отрабатывает значительно быстрее чем при запросе из внешки  [new]
Neogenn
Member

Откуда:
Сообщений: 13
Glory
Neogenn
Студию запускаю на серваке, а прогу на УДАЛЕННОМ компе в локалке.

Так у вас уже разные условия тестирования

Ну да.
Цель то собственно - минимизировать время ожидания клиента. Я полез оптимизировать код функции, а она то отрабатывает идеально (в менеджмент студии на серве) и данных много НЕ передает.... Сейчас буду смотреть параметры подключения. больше то ничего не остается...
Но, опять же, не могут же параметры подключения ТАК грузить проц серва?
28 мар 12, 10:43    [12325270]     Ответить | Цитировать Сообщить модератору
 Re: ХП через студию отрабатывает значительно быстрее чем при запросе из внешки  [new]
Glory
Member

Откуда:
Сообщений: 104751
Neogenn
Ну да.
Цель то собственно - минимизировать время ожидания клиента.

Чего ну да.
Как сравнивать результаты НЕодинаковых тестовых сред ?
28 мар 12, 10:44    [12325280]     Ответить | Цитировать Сообщить модератору
 Re: ХП через студию отрабатывает значительно быстрее чем при запросе из внешки  [new]
Glory
Member

Откуда:
Сообщений: 104751
Neogenn
Но, опять же, не могут же параметры подключения ТАК грузить проц серва?

Параметры подключения могут менять план выполнения запросов
28 мар 12, 10:45    [12325284]     Ответить | Цитировать Сообщить модератору
 Re: ХП через студию отрабатывает значительно быстрее чем при запросе из внешки  [new]
SamMan
Member

Откуда: Moscow
Сообщений: 759
Neogenn
а прогу на УДАЛЕННОМ компе в локалке

Neogenn
По сети же никакие данные не гонятся


"Путается в показаниях, уходит от ответа..." (C)

Давайте ваш "не гоняющий" код. Во всех постах выше его НЕТ.
28 мар 12, 10:50    [12325327]     Ответить | Цитировать Сообщить модератору
 Re: ХП через студию отрабатывает значительно быстрее чем при запросе из внешки  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31985
Neogenn
Но, опять же, не могут же параметры подключения ТАК грузить проц серва?
Да тут много вариантов.

Для начала хотя бы посмотрите, в чём дело - в передаче результата или в самом выполнении процедуры.

Сравните вызовы в профайлере - если ЦПУ и IO одинаковые, значит, дело в сети или в клиенте.

Если разные, то видимо дело всё таки в параметрах подключения.

Neogenn
Но, опять же, не могут же параметры подключения ТАК грузить проц серва?
В тыщу раз легко может отличаться. Просто из за разных параметров создаются разные планы выполнения.
28 мар 12, 10:56    [12325386]     Ответить | Цитировать Сообщить модератору
 Re: ХП через студию отрабатывает значительно быстрее чем при запросе из внешки  [new]
Neogenn
Member

Откуда:
Сообщений: 13
SamMan
Neogenn
а прогу на УДАЛЕННОМ компе в локалке

Neogenn
По сети же никакие данные не гонятся


"Путается в показаниях, уходит от ответа..." (C)

Давайте ваш "не гоняющий" код. Во всех постах выше его НЕТ.

Код в первом посте (Бегин и энд дописать?)
28 мар 12, 11:02    [12325438]     Ответить | Цитировать Сообщить модератору
 Re: ХП через студию отрабатывает значительно быстрее чем при запросе из внешки  [new]
Neogenn
Member

Откуда:
Сообщений: 13
Профилер выдает что время уходит на чтение данных из таблиц. это логично. Есть что переделывать. Там все понятно. Строк просто немеряно и во вьюхе Тотал и, соответственно во временной таблице.

НЕлогично, имхо, то что такая немалая выборка отрабатывает из под студии за 1-2 секунды =)

p.s. Я не ухожу от ответа, просто выдаю всю инфу постепенно, не успеваю за Вами.
Еще не разбрался с DBCC useroptions для конкретного соединения, хотя ответить хочется =D
28 мар 12, 11:08    [12325475]     Ответить | Цитировать Сообщить модератору
 Re: ХП через студию отрабатывает значительно быстрее чем при запросе из внешки  [new]
Glory
Member

Откуда:
Сообщений: 104751
Neogenn
Профилер выдает что время уходит на чтение данных из таблиц. это логично.

Профайлер дает _число_ чтений, а не их время
Время дается для всей команды.
28 мар 12, 11:11    [12325500]     Ответить | Цитировать Сообщить модератору
 Re: ХП через студию отрабатывает значительно быстрее чем при запросе из внешки  [new]
Neogenn
Member

Откуда:
Сообщений: 13
Glory, ну вот где мало чтений - там мало время выполнения ;)
Я просто никак не пойму - если чтений 1'250'000 КАААК он може выполниться за 1 секунду из под студии =)


А вот данные подключения:
textsize|2147483647
language|us_english
dateformat|mdy
datefirst|7
lock_timeout|-1
quoted_identifier|SET
ansi_null_dflt_on|SET
ansi_warnings|SET
ansi_padding|SET
ansi_nulls|SET
concat_null_yields_null|SET
isolation level|read committed

Оно?
28 мар 12, 11:22    [12325625]     Ответить | Цитировать Сообщить модератору
 Re: ХП через студию отрабатывает значительно быстрее чем при запросе из внешки  [new]
Glory
Member

Откуда:
Сообщений: 104751
Neogenn
Glory, ну вот где мало чтений - там мало время выполнения ;)

Если число чтений меняется, то значит меняется план выполнения

Neogenn
А вот данные подключения:

Был совет - _сравнить_ параметры подключения
28 мар 12, 11:26    [12325673]     Ответить | Цитировать Сообщить модератору
 Re: ХП через студию отрабатывает значительно быстрее чем при запросе из внешки  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31985
Neogenn
Я просто никак не пойму - если чтений 1'250'000 КАААК он може выполниться за 1 секунду из под студии =)
1'250'000 чтений страниц - это 10 гигабайт, даже на домашнем компе из памяти прочитается меньше чем за секунду. Сервер не ламеры писали :-)
28 мар 12, 11:36    [12325774]     Ответить | Цитировать Сообщить модератору
 Re: ХП через студию отрабатывает значительно быстрее чем при запросе из внешки  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31985
Neogenn
Профилер выдает что время уходит на чтение данных из таблиц. это логично. Есть что переделывать. Там все понятно. Строк просто немеряно и во вьюхе Тотал и, соответственно во временной таблице.

НЕлогично, имхо, то что такая немалая выборка отрабатывает из под студии за 1-2 секунды =)
Количество чтений одинаковое для этих 2-х вариантов запуска? И сколько данных возвращается клиенту?
28 мар 12, 11:38    [12325796]     Ответить | Цитировать Сообщить модератору
 Re: ХП через студию отрабатывает значительно быстрее чем при запросе из внешки  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31985
Neogenn
p.s. Я не ухожу от ответа, просто выдаю всю инфу постепенно, не успеваю за Вами.
Выдайте инфу сразу:

По отдельности для вызова из SSMS и из вашего клиента напишите цпу, количество чтений, дюрейшен и количество возвращаемых строк.

Должны получиться 2 строки по 4 цифры.
28 мар 12, 11:40    [12325810]     Ответить | Цитировать Сообщить модератору
 Re: ХП через студию отрабатывает значительно быстрее чем при запросе из внешки  [new]
Serega gRAY
Member

Откуда:
Сообщений: 2
Neogenn,

В SSMS есть кэширование запросов, погуглите. Это объясняет "чтений 1'250'000 КАААК он може выполниться за 1 секунду из под студии". Студия просто еще раз выдает ранее подсчитанный результат.
28 мар 12, 12:34    [12326276]     Ответить | Цитировать Сообщить модератору
 Re: ХП через студию отрабатывает значительно быстрее чем при запросе из внешки  [new]
Glory
Member

Откуда:
Сообщений: 104751
Serega gRAY
В SSMS есть кэширование запросов

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