測試中一些常看的指標和清除緩存的方法

如何查看磁盤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
中,我們就使用數據表佔用空間的報表

具體報表可以參考以下鏈接:
SQL Server Management Studio Standard Reports - Overview
http://blogs.msdn.com/buckwoody/archive/2007/10/09/sql-server-management-studio-standard-reports-overview.aspx

測試中,釋放緩存的一些方法

尤其查詢語句性能測試時,數據是否被緩存,這是測試中一個重要點。下面幾個命令幫助我們清除緩存。方便測試。

清除緩存有關的命令:
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查看數據庫打開事務狀態等  

發佈了15 篇原創文章 · 獲贊 4 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章