?????? 上一篇:
SQL2005性能分析一些細節功能你是否有用到?
我簡單的提到了些關于SQL性能分析最基本的一些方法,下面的文章我會陸續補充。前面提到了根據SQL的執行IO和執行計劃來分析,還有一個特別重要的參數,就是SET STATISTICS TIME。
?????? 第一: SET STATISTICS TIME
?????????????? 定義: SET STATISTICS TIME (Transact-SQL)? 顯示分析、編譯和執行各語句所需的毫秒數。
?????????????? 語法: SET STATISTICS TIME { ON | OFF }?????????????? 備注: 當 SET STATISTICS TIME 為 ON 時,會顯示語句的時間統計信息。為 OFF 時,不顯示時間統計信息。SET STATISTICS TIME 的設置是在執行或運行時設置,而不是在分析時設置。
?????????????? 權限 : 若要使用 SET STATISTICS TIME,用戶必須具有執行 Transact-SQL 語句的相應權限。但不需要 SHOWPLAN 權限。
?????????????? 作用: 我們可以利用這個參數來查看SQL的CPU開銷情況,進而做出優化方案。
? ? ? ? ? ? ??
效果圖:
? ? ? ? ? ? ??
??????
第二:sp_help
?????????????
定義:
報告有關數據庫對象(sysobjects 表中列出的任何對象)、用戶定義數據類型或 Microsoft? SQL Server? 所提供的數據類型的信息。
??????? 參數 : [@objname =] name 是 sysobjects 中的任意對象的名稱,或者是在 systypes 表中任何用戶定義數據類型的名稱。不能使用數據庫名稱。????????????
? ? ? ? ? ? ? 效果圖:
?? ? ? ? ??
?????????????? 內容:
???????????????? 1:表結構 ,它會列出目標表中所有的字段信息:名稱,數據類型等。???????????????? 2:索引情況 ,包含聚集索引和非聚集索引.索引所對應的字段等。
???????????????? 3:表字段的約束情況 。
???????????????? 4:表的基本信息,表類型,創建時間,表名等。
????????????? ?? 5:主鍵詳細信息。
????????????? 用途一 : 一般對于性能分析關系有直接關系的有 1,2,5 。開發員可以非常快捷清晰的查看表的設計情況.對于查詢來說最重要的就是表的索引情況和表結構.對于其它的用途本人暫不胡說了。
? ? ? ? ? ???
案例:
一次實際開發中,運行一個單表查詢,發面頁面報出SQL05 timeout的錯誤,后來在數據庫中直接運行語句發現時間特別長,達到58m,查看記錄,一個長達9位數的字樣把我嚇到了,沒辦法只能是優化了,sp_help下,發現條件中的字段沒有創建索引, 創建后再試,基本控制在1m左右。
? ? ? ?
第三:SET NOCOUNT
??????????????
定義:
阻止在結果集中返回可顯示受 Transact-SQL 語句或存儲過程影響的行計數的消息。?
?????????????? 語法: SET NOCOUNT { ON | OFF } ??????????
??????????????
備注:
當 SET NOCOUNT 為 ON 時,不返回計數。當 SET NOCOUNT 為 OFF 時,返回計數。即使當 SET NOCOUNT 為 ON 時,也更新 @@ROWCOUNT 函數。當 SET NOCOUNT 為 ON 時,將不向客戶端發送存儲過程中每個語句的 DONE_IN_PROC 消息。如果存儲過程中包含一些并不返回許多實際數據的語句,網絡通信流量便會大量減少,因此,將 SET NOCOUNT 設置為 ON 可顯著提高性能。SET NOCOUNT 指定的設置是在執行或運行時生效,而不是在分析時生效。??????????
??????????????
權限:
要求具有 public 角色的成員身份。
??????????????
注意點:
ExecuteNonQuery();將得不到返回值,此時可以利用存儲過程的返回參數來獲得.
??????????????
缺點
:當我們執行一條更新或者是刪除語句時,一般判斷是否成功都是根據這個返回的受影響的行來判斷,現在當SET NOCOUNT 為 ON 時,不返回計數,只能利用輸出參數來判斷了.
?????????????? 優點: 如果存儲過程中包含一些并不返回許多實際數據的語句,網絡通信流量便會大量減少,因此,將 SET NOCOUNT 設置為 ON 可顯著提高性能。
? ?????
總結:
可能有的朋友會認為本人只是在這一味的copy MSDN,其實從本質上說是這樣,但
copy
并不代表一無是處,經過我的工作經驗來看,我們開發中遇到的很多問題其實在MSDN上都有說明,但
為什么我們總是在MSDN上找不到答案呢?
這就是因為我們不懂搜索相關的關鍵字,為此我將我的一些學習所得寫出來,希望和我一樣不太會用MSDN的朋友共進步.
?注:本文引用MSDN
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
