Breaking News
Loading...
06/06/2013

Tìm những câu truy vấn bị recompile plan nhiều lần

Khi một câu truy vấn bị recompile plan tức là nó không sử dụng lại Execution Plan hiện có trong procedure cache, và tạo ra một Execution plan mới, điều này là không tốt nếu có quá nhiều câu truy vấn bị recompile plan.

Dựa vào thông số plan_generation_num. Đã kiểm nghiệm trên SQL Server 2012 và chắc chắn script này cho ra kết quả chính xác.

SELECT --TOP 5
qst.plan_generation_num,
qst.execution_count,
stm.TEXT,
DB_NAME(stm.dbid) AS DbName,
stm.objectid
FROM sys.dm_exec_query_stats qst
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS stm
ORDER BY qst.plan_generation_num DESC

Nếu muốn recompile mỗi khi thực thi một Stored Procedure nào đó:

Option 1:

CREATE PROCEDURE dbo.PersonAge (@MinAge INT, @MaxAge INT)
WITH RECOMPILE
AS
SELECT *
FROM dbo.tblPerson
WHERE Age >= @MinAge AND Age <= @MaxAge
GO

Option 2:

EXEC dbo.PersonAge 65,70 WITH RECOMPILE

Nếu muốn recompile mỗi khi thực thi một SQL script:

USE AdventureWorks2012;
DECLARE @PersonName nvarchar(100);
SET @PersonName = 'Abercrombie';
SELECT * FROM Person.Person WHERE LastName <= @PersonName
OPTION (RECOMPILE);

Tham khảo:

0 comments:

Post a Comment

 
Toggle Footer