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

Откуда: Київ
Сообщений: 10428
Есть кусок трэйса,
выполняется одна процедура, в ней вторая, на таблице работает триггер

к какому объекту относится SP:Recompile ?


RPC:Starting exec dbo.create_obj
SP:Starting exec dbo.create_obj
SP:Starting EXEC @status = dbo.create_small_obj
SP:Recompile

SP:Starting INSERT INTO dbo.obj(id, p_id) FROM #t_obj WHERE p_id=@p_id
SP:Completed INSERT INTO dbo.obj(id, p_id) FROM #t_obj WHERE p_id=@p_id
SP:Starting INSERT INTO dbo.obj(id, p_id) FROM #t_obj WHERE p_id=@p_id
SP:Completed INSERT INTO dbo.obj(id, p_id) FROM #t_obj WHERE p_id=@p_id
...
SP:Starting INSERT INTO dbo.obj(id, p_id) FROM #t_obj WHERE p_id=@p_id
SP:Completed INSERT INTO dbo.obj(id, p_id) FROM #t_obj WHERE p_id=@p_id
4 авг 05, 18:05    [1765074]     Ответить | Цитировать Сообщить модератору
 Re: Какой объект компилируется?  [new]
WiRuc
Member

Откуда: Воронеж
Сообщений: 1280
Если все указано для одного SPID, то recompile относится к
SP:Starting EXEC @status = dbo.create_small_obj
4 авг 05, 18:37    [1765194]     Ответить | Цитировать Сообщить модератору
 Re: Какой объект компилируется?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
WiRuc
Если все указано для одного SPID, то recompile относится к
SP:Starting EXEC @status = dbo.create_small_obj


Ага, т.е. процедура каждый раз компилируется?
Но это не хорошо....
4 авг 05, 19:00    [1765257]     Ответить | Цитировать Сообщить модератору
 Re: Какой объект компилируется?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Что может приводить к перекомпиляции процедуры каждый раз?

Использование #таблиц ?
4 авг 05, 19:15    [1765302]     Ответить | Цитировать Сообщить модератору
 Re: Какой объект компилируется?  [new]
Breakneck
Member

Откуда: Kiev
Сообщений: 2454
Recompiling a Stored Procedure
BOL
As a database is changed by such actions as adding indexes or changing data in indexed columns, the original query plans used to access its tables should be optimized again by recompiling them. This optimization happens automatically the first time a stored procedure is run after Microsoft® SQL Server™ 2000 is restarted. It also occurs if an underlying table used by the stored procedure changes. But if a new index is added from which the stored procedure might benefit, optimization does not automatically happen (until the next time the stored procedure is run after SQL Server is restarted).

SQL Server provides three ways to recompile a stored procedure:

The sp_recompile system stored procedure forces a recompile of a stored procedure the next time it is run.

Creating a stored procedure that specifies the WITH RECOMPILE option in its definition indicates that SQL Server does not cache a plan for this stored procedure; the stored procedure is recompiled each time it is executed. Use the WITH RECOMPILE option when stored procedures take parameters whose values differ widely between executions of the stored procedure, resulting in different execution plans to be created each time. Use of this option is uncommon, and causes the stored procedure to execute more slowly because the stored procedure must be recompiled each time it is executed.


You can force the stored procedure to be compiled by specifying the WITH RECOMPILE option when you execute the stored procedure. Use this option only if the parameter you are supplying is atypical or if the data has significantly changed since the stored procedure was created.

Note If an object referenced by a stored procedure is deleted or renamed, an error is returned when the stored procedure is executed. If, however, an object referenced in a stored procedure is replaced with an object of the same name, the stored procedure executes without having to be recompiled.
4 авг 05, 19:30    [1765319]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить