SQL Server 索引基礎知識(3)—-測試中一些常看的指標和清除緩衝的方法自蟈蟈俊.net)

來源:互聯網
上載者:User

之前的兩篇部落格中有2個例子,來示範要講述的內容。其中提到了部分查看資料庫狀態的方法,那裡並不是很全面,這篇部落格羅列幾個我們在後面系列部落格中會用到查看這些狀態,資料的地方。以及測試中清除緩衝的方法。
前面兩篇部落格的連結地址如下:

SQL Server 索引基礎知識(1)--- 記錄資料的基本格式
http://blog.joycode.com/ghj/archive/2008/01/02/113290.aspx

SQL Server 索引基礎知識(2)----叢集索引,非叢集索引
http://blog.joycode.com/ghj/archive/2008/01/02/113291.aspx


如何獲得索引的一些資訊

比如:查看索引的深度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 標籤頁會有很多我們對
這個索引感興趣的內容,比如:

我們可以在這裡看到索引的深度,子節點數,資料頁數等等資訊。這些資訊對我們分析查詢語句的效能非常有協助。

 

如何查看磁碟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查看資料庫開啟事務狀態等  

參考資料:
CSDN 這個文章的 rouqu(石林#黃果樹)的回複
http://topic.csdn.net/u/20070404/14/6ee765a4-fc32-4d2c-a62c-6d51291e6007.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.