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

Откуда:
Сообщений: 143
Я тут провёл пару тестов и оказалось, что вот такой вызов процедуры:

USE master
exec pubs.dbo.MyStoredProc

работает заметно медленней чем вот такой:

USE pubs
exec dbo.MyStoredProc

Сходу не могу объяснить почему вызов настолько медленней, что это заметно даже неевооружённым глазом.
Неужели один только фактор поиска в пространстве имён так влияет?
23 дек 04, 15:34    [1204916]     Ответить | Цитировать Сообщить модератору
 Re: Вызов процедур не из текущей БД.  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
автор
что это заметно даже неевооружённым глазом


а если вооруженным глазом на планы выполнения посмотреть. Планы одинаковые?
23 дек 04, 16:02    [1205099]     Ответить | Цитировать Сообщить модератору
 Re: Вызов процедур не из текущей БД.  [new]
Stupindo
Member

Откуда:
Сообщений: 143
pkarklin
автор
что это заметно даже неевооружённым глазом


а если вооруженным глазом на планы выполнения посмотреть. Планы одинаковые?


Посмотреть вооружённым глазом на план такого скрипта:
USE pubs
exec dbo.MyStoredProc
не предсталяется возможным, поскольку QA выдаёт
Could not find stored procedure 'dbo.MyStoredProc'
24 дек 04, 11:47    [1207065]     Ответить | Цитировать Сообщить модератору
 Re: Вызов процедур не из текущей БД.  [new]
Glory
Member

Откуда:
Сообщений: 104760
А вы смотрите не предварительный план(estimated execution plan) а действительный(execution plan)
24 дек 04, 11:49    [1207082]     Ответить | Цитировать Сообщить модератору
 Re: Вызов процедур не из текущей БД.  [new]
Stupindo
Member

Откуда:
Сообщений: 143
Да одинаковый вроде бы.
24 дек 04, 12:03    [1207162]     Ответить | Цитировать Сообщить модератору
 Re: Вызов процедур не из текущей БД.  [new]
Breakneck
Member

Откуда: Kiev
Сообщений: 2454
Stupindo
Да одинаковый вроде бы.

Что, и query cost одинаковый? Тогда где "работает заметно медленней"?
24 дек 04, 12:05    [1207175]     Ответить | Цитировать Сообщить модератору
 Re: Вызов процедур не из текущей БД.  [new]
Stupindo
Member

Откуда:
Сообщений: 143
Breakneck
Что, и query cost одинаковый? Тогда где "работает заметно медленней"?


А вот в клиентской программе, написаной на Делфи работает заметно медленней.
24 дек 04, 12:19    [1207250]     Ответить | Цитировать Сообщить модератору
 Re: Вызов процедур не из текущей БД.  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
Так может дело тогда не в вызове процедуры, а именно в
Stupindo
в клиентской программе, написаной на Делфи
?
24 дек 04, 12:20    [1207253]     Ответить | Цитировать Сообщить модератору
 Re: Вызов процедур не из текущей БД.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37101
Stupindo
Breakneck
Что, и query cost одинаковый? Тогда где "работает заметно медленней"?


А вот в клиентской программе, написаной на Делфи работает заметно медленней.

Отследите профайлером, что там клиент посылает на сервер.
24 дек 04, 12:21    [1207257]     Ответить | Цитировать Сообщить модератору
 Re: Вызов процедур не из текущей БД.  [new]
Breakneck
Member

Откуда: Kiev
Сообщений: 2454
GreenSunrise
Так может дело тогда не в вызове процедуры, а именно в
Stupindo
в клиентской программе, написаной на Делфи
?

Вот-вот, настройки сессии, вызывающий пользователь и т.п.
24 дек 04, 12:21    [1207259]     Ответить | Цитировать Сообщить модератору
 Re: Вызов процедур не из текущей БД.  [new]
Stupindo
Member

Откуда:
Сообщений: 143
pkarklin

а если вооруженным глазом на планы выполнения посмотреть. Планы одинаковые?


А можно сразу дополнительный вопрос? :)
А что вообще ожидалось, что такие планы выполнения могут быть разными???
Ваще ситуация по-моему стандартная - вызов одной и той же процедуры из текущей БД и не из текущей БД.
Т.е. насколько я понимаю, притормаживание или принципиально есть или принципиально его быть не может и копать надо в сторону, что клиент как-то коряво работает.
24 дек 04, 12:24    [1207273]     Ответить | Цитировать Сообщить модератору
 Re: Вызов процедур не из текущей БД.  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Теоретически различий быть не должно. Трудно представить, cross database ownership chains так тормозят. А чтоб в этом убедиться, надо проверить запуск этих хп в QA с анализом реального плана выполнения. если в QA планы и время выполнения будут одинаковы, значит дело в клиенте.
24 дек 04, 12:28    [1207297]     Ответить | Цитировать Сообщить модератору
 Re: Вызов процедур не из текущей БД.  [new]
Stupindo
Member

Откуда:
Сообщений: 143
Гавриленко Сергей Алексеевич
Отследите профайлером, что там клиент посылает на сервер.


Да, получается что надо в сторону клиента копать. Ок, ща посмотрю и напишу. :)
24 дек 04, 12:32    [1207313]     Ответить | Цитировать Сообщить модератору
 Re: Вызов процедур не из текущей БД.  [new]
Stupindo
Member

Откуда:
Сообщений: 143
Вообщем проведя несколько экспериментов я выяснил, что всё не так просто:
- на простеньких примерах, типа клиента с одной кнопкой, открывающей и закрывающей запрос эффект торможения не наблюдается вообще;
- при попытках исследовать тормоза в реальных ситуациях - они(тормоза) начинают то появляться то пропадать в самые неожиданные моменты при всех прочих тех же условиях. :)

В результате такой сложной пятницы я решил исследования отложить до более чистой головы. :)
24 дек 04, 17:06    [1208637]     Ответить | Цитировать Сообщить модератору
 Re: Вызов процедур не из текущей БД.  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
Очень похоже на блокировки. Копайте в эту сторону. Попытайтесь проанализировать, какие блокировки висят в момент тормозов, потому что раз это проявляется периодически, то очень смахивает на то, что ваш запрос ждет освобождения каких-то ресурсов. Например, записи или индексы, блокированные другими запросами.
24 дек 04, 17:27    [1208743]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить