本文將介紹利用 SQL Azure Diagnostics Tool,幫助您在 Windows Azure SQL Database 進行查詢的效能調校。
【情境描述】
當您將資料部署到 Windows Azure SQL Database(以下簡稱 WASD)時,不像您在使用 SQL Server 有各種工具(PSSDiag/SQLDiag)可以診斷 Database Engine 的狀態及效能,要了解 WASD 運作的狀態,您可能會使用 Windows Azure 管理入口網站的 Dashboard 或是 Monitor 功能(如下圖)。
或是利用 WASD 管理入口網站所提供的管理功能來查看有關查詢的效能資訊。
基本上這些內建的監控與檢視 WASD 的功能可以說是有點陽春,若您需要更進一步的診斷資訊可能會覺得資訊不夠充足,接下來筆者將介紹一套由 Microsoft Customer Service and Support (CSS) SQL Support 所開發的診斷工具,透過這套工具幫助您更了解在雲端上的 SQL Database 的狀態為何,請見下一節。
【CSS SQL Azure Diagnostics tool,CSAD 】
首先您必須在您要安裝 CSAD 的電腦中安裝 ReportViewer 2010 與 .NET 4.0 Client Profile,接著到這裡下載 CSAD,安裝步驟相當簡單,只要一直按下一步即可,安裝完畢之後啟動 CSAD 您會看到如下圖的畫面,你只要輸入 WASD 的相關伺服器名稱、資料庫名稱以及帳號密碼之後按【GO】。
順利連接之後,您會看到一份由 ReportViewer 所呈現診斷報告,最上面的區塊是一般性的資料庫資訊,您可以從中了解您的資料庫以使用的容量,以及 TempDB 與 Transaction Log 的可用性等等。
接著是幾個 Top 10 的查詢占用 CPU、查詢時間、邏輯 I/O、實體 I/O 甚至建議的索引等資訊,都可以從報表中完整呈現,您不需要自行撰寫 T-SQL 從 DMV 來取得相關資訊,透過 CSAD 提供您各項查詢方面的資訊,讓您可以比較快找到影響效能的 T-SQL 有哪些。另外既然是利用 ReportViewer 來呈現報表,因此諸如列印、匯出、搜尋等功能都有內建。
下圖為 CSAD 所列出的前十大最占用 CPU 資源的查詢。
下圖為 CSAD 所列出的前十大執行時間最長的查詢。
下圖為 CSAD 所列出的前十大 Logic I/O 較高的查詢。
下圖為 CSAD 所列出的前十大 Physical I/O 較高的查詢。
下圖為 CSAD 所列出未正確使用索引的查詢。
透過上述的五種類別的報表內容,相信對於您在進行 WASD 效能調校時會有所幫助。
另外, CSAD 還提供兩個公用程式分別為 Throttling Decoder 與 Schema Compare,您可以從工具列上點選【Utilities】來找到上述的這兩個公用程式。
其中 Throttling Decoder 用來幫助您分析 Throttling Code 或稱為 Reason Code 所對應的原因以及相對應的處理程序,例如 Reject All。
Throttling mode code 描述 不允許處理的T-SQL敘述類型 允許處理的T-SQL敘述類型 0 No throttling None All 1 Reject Update / Insert INSERT, UPDATE, CREATE TABLE | INDEX DELETE, DROP TABLE | INDEX, TRUNCATE 2 Reject All writes INSERT, UPDATE, DELETE, CREATE, DROP
SELECT 3 Reject All All None
而 Schema Comparison 可以用來幫您比對 Database 1 和 Database 2 之間有哪些資料庫物件(Tables、Indexes以及Procedures)的差異,不過功能上並不是那麼完整,該公用程式只能做到資料庫物件層級的比對。
【參考資料】
- SQL Azure Diagnostics Tool Available
- CSS SQL Azure Diagnostics tool released
- 下載 CSS SQL Azure Diagnostics
- SQL Azure – SQL Azure Throttling and Decoding Reason Codes