Sql Server中執行計畫的緩衝機制

來源:互聯網
上載者:User

標籤:結果   機制   img   記憶體   計劃   back   nbsp   round   很多   

Sql查詢過程      

當執行一個Sql語句或者預存程序時, Sql Server的大致過程是

1. 對查詢語句進行分析,將其產生邏輯單元,並進行基本的語法檢查

2. 產生查詢樹(會將查詢語句中所有操作轉換為對基表的操作,比如將視圖轉換為基表查詢)

3. 產生執行計畫(針對查詢樹會產生很多不同的執行計畫)

4. 查詢最佳化工具基於每個執行計畫的查詢成本和資料庫中的統計資訊,選擇一個最優執行計畫

5. 最優執行計畫會被緩衝在資料庫的緩衝池中。當再次執行相同Sql語句時,緩衝的執行計畫會被直接使用。這樣可以提高效能。

查看緩衝執行計畫DMV  

通過sys.dm_exec_cached_plans可以查詢到當前系統緩衝的執行計畫。比如:如下代碼可以查詢快取的所有為預存程序產生的最優執行計畫

select * from sys.dm_exec_cached_plans where objtype = ‘Proc‘

查詢結果中顯示了該執行計畫被重複使用的次數。

註:普通的預存程序是在第一次被執行的的時候才會被編譯,然後產生執行計畫並緩衝。

通過上面對查詢過程的描述,我們通過Management Studio直接執行的語句的執行計畫也會被緩衝。

通過如下查詢可以得到緩衝的列表

select * from sys.dm_exec_cached_plans where objtype = ‘Adhoc‘

同時,通過查詢sys.dm_exec_text_query_plan可以得到某個查詢計劃的詳細資料。比如:以下代碼可以查詢上面所描述預存程序的執行計畫的詳情

declare @planHandle varbinary(64)SELECT @planHandle = plan_handle from sys.dm_exec_cached_plans where bucketid = 6124select * from sys.dm_exec_text_query_plan(@planHandle,0,-1)

結果如下:

query_plan列的值是描述執行計畫詳情的xml

執行計畫的管理    

1. 當資料庫重啟時會被清空。然後我們也可以通過執行DBCC FREEPROCCACHE來清空緩衝。

2. 而當資料庫記憶體不足時,也會通過特定的機制將使用頻率低的執行計畫從緩衝中清除。

 

Sql Server中執行計畫的緩衝機制

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.