Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Анализирую вот профайлером вызов SP - непонятки...
|
|||
|---|---|---|---|
|
#18+
MSSQL2k SP2 на W2kPro SP2 процедура ищет в табличке запись по трем полям (Like): Вход: 4 параметра - 3 критерия и максимальное количество возвращаемых записей (для RowCount) Выход: результирующий рекордсет и общее число записей, соответствующих критерию. Поля поиска проиндексированы. Пускаю ее из проги на VB6 (с той же машины, где сервак). Максимально возвращается записей - всегда 50. Все работает. В процессе отладки заметил некоторую странность: в профайлере задаю пару событий SP:Starting и SP:Completed. Дык вот, эта парочка при одном вызове выскакивает как минимум, дважды. Почему из проги вызываю один раз, а в профайлере регистрится 2 вызова??? Причем данные возвращает только последний вызов... Это так и должно быть, или я что-то не так делаю? Вот примерная статистика количества вызовов в зависимости от числа удовлетворяющих критериям записей: 1 запись --- 2 вызова 2 записи --- 3 вызова 5 записей --- 12 вызовов ... ... больше 60 тыс. --- 51 вызов (процедура возвращает в этом сл. 50 записей, но рассчитывает общее число) Вот код вызова: Set cn = New ADODB.Connection cn.Open "Provider=sqloledb;Data Source=SERGE;Initial Catalog=MyBase; Trusted_connection=Yes; " Set cm = New ADODB.Command Set cm.ActiveConnection = cn cm.CommandType = adCmdStoredProc cm.CommandText = "my_SP" 'Тут я готовлю параметры для cm ..... ' Set rstPF = New ADODB.Recordset rstPF.CursorLocation = adUseClient rstPF.CursorType = adOpenDynamic rstPF.Properties("Bookmarkable") = True Set rstPF = cm.Execute ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2002, 04:38 |
|
||
|
Анализирую вот профайлером вызов SP - непонятки...
|
|||
|---|---|---|---|
|
#18+
А текст процедуры? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2002, 09:07 |
|
||
|
Анализирую вот профайлером вызов SP - непонятки...
|
|||
|---|---|---|---|
|
#18+
Думаете, в ней дело? Кстати - зацените, может есть какие-нибудь типичные для новичка ошибки/помарки? CREATE PROCEDURE my_SP @p1 varchar(30) ='', @p2 varchar(20)='', @p2 varchar(7)='', @toprec int = 50, @rt int output AS set nocount on set ROWCOUNT @toprec select t1.fld1, t1.fld2, t1.fld3, t1.fld4, t2.restr FROM tbl1 t1 left join tbl2 t2 on (t1.restr_fk=t2.restr_id) where (t1.fld1 like @p1 + '%') and (t1.fld2 like @p2+ '%') and (t1.fld3 like @p3+ '%' ) SELECT @rt = COUNT (*) FROM tbl1 where (fld1 like @p1 + '%') and (fld2 like @p2 + '%') and (fld3 like @p3 + '%' ) return 0 set nocount off GO (кстати, параметр @rt не возвращался, пока я не поставил return 0, но я склонен винить в этом VB...) Я чуток упростил первый запрос - там несколько полей из tbl1 сливаются в одно (ну типа t1.fld1 + ', ' + t1.fld2 as bigfld), и вызывается UDF, форматирующая одно из полей (номер телефона, вставляет символы '-') ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2002, 10:15 |
|
||
|
Анализирую вот профайлером вызов SP - непонятки...
|
|||
|---|---|---|---|
|
#18+
<В процессе отладки заметил некоторую странность: в профайлере задаю пару событий SP:Starting и SP:Completed. <Дык вот, эта парочка при одном вызове выскакивает как минимум, дважды. <Почему из проги вызываю один раз, а в профайлере регистрится 2 вызова??? Причем данные возвращает только последний <вызов... Это вызовы "чего"? В каком профайлере, я чего-то не дойду малость Чего такое SP:Starting и SP:Completed ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2002, 10:23 |
|
||
|
Анализирую вот профайлером вызов SP - непонятки...
|
|||
|---|---|---|---|
|
#18+
Извинямся... Дабы не ломать язык и не морочить голову: >В каком профайлере SQL Profiler, тулза такая для сервера, стандартная >Это вызовы "чего"? В этой тулзе мона наблюдать вызовы хранимой процедуры (и много еще чего, наверное ) из клиента, если для трассы (Trace) установить следующие регистрируемые события (Events): >Чего такое SP:Starting и SP:Completed Event class для них - Stored Procedures. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2002, 10:50 |
|
||
|
Анализирую вот профайлером вызов SP - непонятки...
|
|||
|---|---|---|---|
|
#18+
Вы, наверное издеваетесь, да? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2002, 10:52 |
|
||
|
Анализирую вот профайлером вызов SP - непонятки...
|
|||
|---|---|---|---|
|
#18+
SPID у двойных вызовов разный или один ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2002, 11:06 |
|
||
|
Анализирую вот профайлером вызов SP - непонятки...
|
|||
|---|---|---|---|
|
#18+
>Вы, наверное издеваетесь, да? Нет, я просто по событиям не отслеживал никогда (не нужно было), только внутри процедуры трассировал. Сорри :-0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2002, 11:16 |
|
||
|
Анализирую вот профайлером вызов SP - непонятки...
|
|||
|---|---|---|---|
|
#18+
2Glory: >SPID у двойных вызовов разный или один ? Да, один. Более того, все столбцы совпадают, за исключением столбца Duration - он только в SP:Completed, который возвращает данные, отличен от нуля. TextData для последнего события SP:Completed выглядит так (потому я и решил, что возврат данных идет в этой строке): declare @P1 int set @P1=61844 exec my_SP '', '', '', '50', @P1 output select @P1 Это в случае, когда запрос без критериев и рассчитывается колич. записей во всей табличке (61844 записей). Ну и вот - 51 вызов. Во второй строке у всех остальных вызовов стоит set @P1=NULL Ощущение такое, что провайдер долбит сервер запросами непрерывно, а тот отстреливается холостыми, пока не выполнится самый первый запрос... Да, забыл сказать - SP:Starting и SP:Completed чередуются, за исключением начала (2 шт. SP:Starting) и конца (2 шт. SP:Completed) 2tygra: >Нет, я просто по событиям не отслеживал никогда (не нужно было), А мне вот понадобилось - на клиента не передавался параметр, хотел подсмотреть... Метод тыка все-таки помог, но озадачился я сильно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2002, 00:55 |
|
||
|
Анализирую вот профайлером вызов SP - непонятки...
|
|||
|---|---|---|---|
|
#18+
Ощущение такое, что провайдер долбит сервер запросами непрерывно, а тот отстреливается холостыми, пока не выполнится самый первый запрос... Режим выполнения запросов асинхронный ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2002, 06:53 |
|
||
|
|

start [/forum/topic.php?fid=46&gotonew=1&tid=1824003]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
50ms |
get topic data: |
8ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
| others: | 248ms |
| total: | 397ms |

| 0 / 0 |
