1. 程式人生 > >sqlserver清空快取

sqlserver清空快取

測試中,釋放快取的一些方法 
尤其查詢語句效能測試時,資料是否被快取,這是測試中一個重要點。下面幾個命令幫助我們清除快取。方便測試。 
清除快取有關的命令: 
SQL 2000裡面除了dbcc unpintable好像就沒有了 而且這個操作也不會立即釋放表記憶體Buffer 
(DBCC UNPINTABLE does not cause the table to be immediately flushed from the data cache. It specifies that all of the pages for the table in the buffer cache can be flushed if space is needed to read in a new page from disk.) 
SQL 2005/2008讓DBA能夠更自由的對SQL所佔用的記憶體空間做處理 如: 
CHECKPOINT 
將當前資料庫的全部髒頁寫入磁碟。“髒頁”是已輸入快取區快取記憶體且已修改但尚未寫入磁碟的資料頁。CHECKPOINT 可建立一個檢查點,在該點保證全部髒頁都已寫入磁碟,從而在以後的恢復過程中節省時間。 
DBCC DROPCLEANBUFFERS 
從緩衝池中刪除所有清除緩衝區。 
DBCC FREEPROCCACHE 
從過程快取中刪除所有元素。 
DBCC FREESYSTEMCACHE 
從所有快取中釋放所有未使用的快取條目。SQL Server 2005 資料庫引擎會事先在後臺清理未使用的快取條目,以使記憶體可用於當前條目。但是,可以使用此命令從所有快取中手動刪除未使用的條目。 
另外還可以 sp_cursor_list 檢視全部遊標 
DBCC OPENTRAN檢視資料庫開啟事務狀態等

sqlserver 中一些常看的指標和清除快取的方法 如何檢視磁碟I/O操作資訊 
SET STATISTICS IO ON 命令是一個 使 SQL Server 顯示有關由 Transact-SQL 語句生成的磁碟活動量的資訊。 
我們在分析索引效能的時候,會非常有用。 
啟用了這個屬性後,我們在執行 SQL 語句後,會收到類似如下的資訊,這有利於我們分析SQL的效能: 
(3999 row(s) affected) 
表 'ChargeCL'。掃描計數 1,邏輯讀取 9547 次,物理讀取 0 次,預讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預讀 0 次。 
其中的 lob 邏輯讀取、lob 物理讀取、lob 預讀 這三個指標是 讀取 text、ntext、image 或大值型別 (varchar(max)、nvarchar(max)、varbinary(max)) 時的指標。 
而 邏輯讀取、物理讀取、預讀 是對普通資料頁的讀取。 
使用 SQL Server Management Studio Standard Reports 
我們在 SQL Server Management Studio 中,選擇資料庫伺服器,或者具體資料庫,或者Security -- Logins 時,或者Management 時,Notification Services 或者 SQL Server Agent 物件時候,都會看到SQL Server 替我們提供的一些現成報表,這些報表的資料,有利於我們分析資料庫的狀態。 
比如在 SQL Server 索引基礎知識(1)--- 記錄資料的基本格式 

http://blog.joycode.com/ghj/archive/2008/01/02/113290.aspx 
中,我們就使用資料表佔用空間的報表

補充:1.檢視一條語句執行效率

SET STATISTICS IO  ON