如何查看磁碟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 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查看資料庫開啟事務狀態等
比如:查看索引的深度SQL 指令碼如下:
select INDEXPROPERTY (OBJECT_ID('ChargeHeap'),'ChargeHeap_NCInd','IndexDepth')
其中的 'ChargeHeap' 為我們要查看索引所在的表名,'ChargeHeap_NCInd' 為所要查看的索引名,'IndexDepth' 為所要查看的索引屬性。
更多屬性請參看下面頁面的參數說明:
http://technet.microsoft.com/zh-cn/library/ms187729.aspx
或者我們在 SQL Server Management Studio 中選中我們要查看的索引,然後在右鍵菜單中查看索引的屬性。其中 Fragmentation 標籤頁會有很多我們對
這個索引感興趣的內容.