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

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

Ситуация следующая.

Есть хп на выборку данных. Сделал клиента на Delphi7, в котором поочередно идет вызов этой хп компонентами SDAC (MSStoredProc) и ADO (ADOStoredProc).
Смотрю профайлером, и вижу в нем разное время выполнения хп:
через SDAC - ~1250 мс,
через ADO - ~2200 мс.
Значение Duration такое же, как и время. Остальное все одинаково.

Разное время могу объяснить только разной скоростью приема данных клиентом (fetch). Таким образом, пока данные не дофетчены, для Profiler-а процедура считается невыполненной.
Так или нет?
1 июн 05, 17:28    [1589138]     Ответить | Цитировать Сообщить модератору
 Re: Profiler: время выполнения зависит от клиента?  [new]
BusyMan
Member

Откуда: Москва
Сообщений: 4927

Можно попробовать такой эксперимент: Взять написать ХП, в которой несколько
операторов. А на клиенте устроить так, чтобы посерединке все оборвалось, а
все содержимое обернуть в BEGIN / COMMIT TRANSACTION. И посмотреть,
применится ли вторая половина ХП...


Posted via ActualForum NNTP Server 1.2

1 июн 05, 18:51    [1589519]     Ответить | Цитировать Сообщить модератору
 Re: Profiler: время выполнения зависит от клиента?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37101
BusyMan

Можно попробовать такой эксперимент: Взять написать ХП, в которой несколько
операторов. А на клиенте устроить так, чтобы посерединке все оборвалось, а
все содержимое обернуть в BEGIN / COMMIT TRANSACTION. И посмотреть,
применится ли вторая половина ХП...


Posted via ActualForum NNTP Server 1.2

А при чем здесь это?

По существу вопроса - пожаловался сегодня пользователь, что у него плохо отчеты фурычат. Допустим, 40 секунд работают. Тыкаю - у меня семь. Отчет маленький, 900 строк или что-то околого того. Все делаю из клиента. Начинаю смотреть профайлером, что за фигня. Планы совпадают, а вот дюрэйшн у него в два (местами в три) раза выше моего. При примерном совпадении cpu и reads.

В принципе, все одинаково (системы у нас разные), ходим по tcp/ip ...

Короче, перегрузили комп и все заработало с нужной скоростью. Так что ...
1 июн 05, 19:16    [1589598]     Ответить | Цитировать Сообщить модератору
 Re: Profiler: время выполнения зависит от клиента?  [new]
trayal
Member

Откуда: Пенза
Сообщений: 471
Ммм...
Здесь немного другая ситуация. Клиент один. Просто, грубо говоря, на две разные кнопки посажен вызов одной и той же хп через разные компоненты доступа (SDAC и ADO). Клиент и сервер - на одном компе.
Но это все к вопросу типа "как избавиться от такой ситуации".
А вот почему Profiler показывает разное время? Ведь он же отслеживает работу сервера, а не клиента?
2 июн 05, 08:40    [1590156]     Ответить | Цитировать Сообщить модератору
 Re: Profiler: время выполнения зависит от клиента?  [new]
Vladimir Zheleznyak
Member

Откуда: Devart
Сообщений: 270
Вообще-то в OLE DB одну и ту-же процедуру можно выполнить очень по-разному. В SDAC мы много работали над оптимизацией, и это может сказаться.
3 июн 05, 12:08    [1594455]     Ответить | Цитировать Сообщить модератору
 Re: Profiler: время выполнения зависит от клиента?  [new]
trayal
Member

Откуда: Пенза
Сообщений: 471
to Vladimir Zheleznyak:

Немного не в тему, но все же:

Выполняю ту же хп, но!
У ADOStoredProc ставлю eoExecuteOptions = eoExecuteNoRecords.
Делаю ADOStoredProc.ExecProc.
Время выполнения - 540 мс. Хотя, конечно, к данным обратиться не могу.

Можно ли такое сделать с MSStoredProc?


Совсем OFFTOP:
На сайте www.crlab.com есть форум по SDAC, но он англоязычный.
Есть ли русскоязычное средство общения с разработчиками SDAC?
3 июн 05, 14:18    [1595070]     Ответить | Цитировать Сообщить модератору
 Re: Profiler: время выполнения зависит от клиента?  [new]
Vladimir Zheleznyak
Member

Откуда: Devart
Сообщений: 270
trayal
У ADOStoredProc ставлю eoExecuteOptions = eoExecuteNoRecords.
Делаю ADOStoredProc.ExecProc.
Время выполнения - 540 мс. Хотя, конечно, к данным обратиться не могу.

Можно ли такое сделать с MSStoredProc?


Сейчас SDAC такого не поддерживает. Однако, если сделаете маленький законченный пример (SDAC + ADO + скрипт для процедуры), и пошлете на sdac*crlab*com, то я его посмотрю, и, вполне возможно, оптимизирую SDAC к следующему билду. Билды у нас обычно в конце каждого месяца.

trayal
На сайте www.crlab.com есть форум по SDAC, но он англоязычный.
Есть ли русскоязычное средство общения с разработчиками SDAC?


Время от времения я заглядываю сюда. Но лучше писать письма на sdac*crlab*com по-русски.
3 июн 05, 16:03    [1595631]     Ответить | Цитировать Сообщить модератору
 Re: Profiler: время выполнения зависит от клиента?  [new]
BusyMan
Member

Откуда: Москва
Сообщений: 4927
trayal
Ммм...
Здесь немного другая ситуация. Клиент один. Просто, грубо говоря, на две разные кнопки посажен вызов одной и той же хп через разные компоненты доступа (SDAC и ADO).
В контексте темы нашего обсуждения КЛИЕНТы разные: SDAC и ADO. В одном из номеров MSDN была большая статья, в которой проводились различные тесты, только там сравнивали ADO и ADO.NET
3 июн 05, 19:44    [1596494]     Ответить | Цитировать Сообщить модератору
 Re: Profiler: время выполнения зависит от клиента?  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
У меня как-то не то что время - результаты были разные в зависимости от клиента.
Была какая-то странная библиотечка для РНР, ды вот если внутри процедуры были NULLы, то они как-будто выкидывались посреди процедуры
3 июн 05, 20:04    [1596526]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить