SQL性能優化前期準備-清除緩存、開啓IO統計

若是須要進行SQl Server下的SQL性能優化,須要準備如下內容:html

1、SQL查詢分析器設置:緩存

一、開啓實際執行計劃跟蹤。性能優化

二、每次執行需優化SQL前,帶上清除緩存的設置SQL。工具

日常在進行SQL Server性能優化時,爲了確保真實還原性能問題,咱們須要關閉SQL Server自身的執行計劃及緩存。能夠經過如下設置清除緩存。性能

1 DBCC DROPCLEANBUFFERS  --清除緩衝區
2 DBCC FREEPROCCACHE  --刪除計劃高速緩存中的元素

 

三、開啓查詢IO讀取統計、查詢時間統計。優化

SET STATISTICS TIME ON --執行時間
SET STATISTICS IO ON --IO讀取


開啓設置後,執行SQL效果以下:spa

 針對其中的每一個圖標節點,鼠標滑上去的時候,能夠看到具體的執行信息。以下圖:3d

能夠經過查看謂詞、對象、輸出列表,分析問題點或者建立優化索引等。code

固然你也能夠換一種查看方式,點擊右鍵選擇顯示執行計劃XML。htm

還有一點特別說明的是:當你SQL很長邏輯關係很複雜的時候,執行計劃會是一個很大的網狀關係圖,你會發如今右下角有一個加號的按鈕,點擊後一個縮略圖。經過縮略圖你能夠很方便的定位執行節點,用起來還比較好用。

2、針對SQL Server Profile,SQL查詢跟蹤器進行分析。

一、打開方式:SQL Server查詢分析器->工具,SQL Profile。打開方式截圖:

二、鏈接&特殊設置:

打開後界面以下圖:

設置正確鏈接信息後,點擊鏈接,彈出以下界面。按照圖中操做步驟進行設置。

其中DatabaseId、HostName能夠在查詢分析器中進行查詢,腳本以下:

1 SELECT DB_ID()
2 SELECT DB_NAME()
3 SELECT HOST_ID()
4 SELECT HOST_NAME()

實際上HostName就是你的本機計算機名。

最終設置完以後點擊運行。正常跟蹤的效果如圖:

重點關注其中的Duration、Writes、Reads、CPU,分析對象是TextData,及執行的語句。其中Duration爲毫秒數,1000即爲1秒。

——————————————————————————————————————————

應用總結&建議

上面應用配合方式是:

一、先經過SQL查詢跟蹤器,跟蹤出你因此執行的SQL,而後定位其中Duration比較的SQL 或者超過性能標準的SQl(好比頁面訪問3s、5s、8s)、報表30s等。

二、將問題SQL在查詢分析器中進行分析,主要經過執行計劃及IO統計定位耗時佔比高及IO讀取大的地方,而後逐步的調整SQL邏輯關係(好比添加業務條件過濾縮小集合,創建索引、調整like匹配等),優化後再從新進行跟蹤看看是否有效果,最終達到SQL的優化目的。

寫到這裏,基本上我經常使用的SQL性能優化的方式就已經講完了,但願給你們能提供幫助。

絕對乾貨,轉載請註明出處。原文地址

相關文章
相關標籤/搜索