執行選擇語句後是否有可能清除緩存?Sql Server 2008清除選擇語句緩存?
我試着用我的一個sql,第一次執行它時,它返回3.15分鐘和第二次(改變任何東西)它返回2.55分鐘。
對我來說,測試sql的實際性能是一種單調乏味的工作。
我發現在Sql Server 2005上有緩存在this後。
我正確的緩存有sql server 2008嗎?
執行選擇語句後是否有可能清除緩存?Sql Server 2008清除選擇語句緩存?
我試着用我的一個sql,第一次執行它時,它返回3.15分鐘和第二次(改變任何東西)它返回2.55分鐘。
對我來說,測試sql的實際性能是一種單調乏味的工作。
我發現在Sql Server 2005上有緩存在this後。
我正確的緩存有sql server 2008嗎?
這是我爲了同樣的目的做:
DBCC FREEPROCCACHE DBCC DROPCLEANBUFFERS GO DROP TABLE [WHATEVER I NEED TO DROP] GO TRUNCATE TABLE [WHATEVER I NEED TO EMPTY] GO UPDATE [WHATEVER HAS TO BE "RESET"] GO [DO REST OF "RESET ACTIONS" HERE] USE [YOUR DATABASE NAME] GO
DECLARE @start_time datetime, @end_time datetime, @miliseconds int
DECLARE @ALL_YOUR_VARS -- _YOU'LL_USE_WHILE_YOU_MEASURE /* BECAUSE YOU DON'T WANT TO MEASURE THE TIME SPENT ON TEMP VARS YOU CREATE FOR MEASURING EXEC TIME ONLY */
-- TODO: SET VARS' VALUES HERE, SAME REASON AS ABOVE
SET @start_time = GETDATE()
-- [EXECUTE ALL YOUR STATEMENTS HERE] -- [YOU WANT TO MEASURE]
SET @end_time = GETDATE() SET @miliseconds = DATEDIFF(ms, @start_time, @end_time) SELECT @start_time, @end_time, CAST(@miliseconds AS VARCHAR(max)) + ' ms' GO
USE master GO
SET NOCOUNT ON DECLARE @DBName varchar(50) DECLARE @spidstr varchar(8000) DECLARE @ConnKilled smallint SET @ConnKilled=0 SET @spidstr = ''
Set @DBName = 'YOURDBNAMEHERE' IF db_id(@DBName) < 4 BEGIN PRINT 'Connections to system databases cannot be killed' RETURN END SELECT @spidstr=coalesce(@spidstr,',')+'kill '+convert(varchar, spid)+ '; ' FROM master..sysprocesses WHERE dbid=db_id(@DBName)
IF LEN(@spidstr) > 0 BEGIN EXEC(@spidstr) SELECT @ConnKilled = COUNT(1) FROM master..sysprocesses WHERE dbid=db_id(@DBName) END
感謝您的回覆。 – Worgon
我試着用代碼DBCC DROPCLEANBUFFERS和DROP FREEPROCCACHE 它返回錯誤,「DBCC命令'DROPCLEANBUFFERS'在此版本的SQL Server中不受支持」,我的SQL Server版本是SqlServer 2008 R2。它的版本是什麼?我試圖在這個鏈接上的Msdn上找到它http://msdn.microsoft.com/en-us/library/ms187762.aspx它似乎缺少2008版本。這不支持? – Worgon
@Worgon 2005支持它,2012也是,但不是2008 ...怪異...試試這些:DBCC FREESYSTEMCACHE,DBCC FREEPROCCACHE,DBCC FREESESSIONCACHE和DBCC FLUSHPROCINDB(db_name),讓我知道這些也是「不支持」。 PS:2008完全從MSDN的「其他版本」列表中丟失,因爲2008應該支持2005年支持的所有內容。很奇怪。現在我記得我爲什麼跳過一個版本:) – 2013-06-19 07:19:44