SQL 語句執行時間分析

2021-07-05 01:18:48 字數 2244 閱讀 5403

以下語句可以進行sql 語句執行時間分析,兩個go之間就是sql查詢語句

use work--資料庫名

goset statistics profile on

set statistics io on

set statistics time on

go-----(sql執行語句)

goset statistics profile off

set statistics io off

set statistics time off

go

執行一次後就可以在查詢結果的資訊標籤下看到統計資訊

sql server 的查詢過程為根據sql表中的統計資訊分析執行計畫,然後才是編譯,最後執行。

其中一共用到了三條statistics相關語句

一、statistics time選項

(1)cpu時間是指該句cpu占用的時間,即語句占用了多少cpu資源。在多個cpu的系統中,這個cpu時間是所有cpu上時間的總和。與profiler工具和伺服器跟蹤選項所提供的cpu值一致

(2)占用時間是指該語句總共用的時間,包括可能存在的i/o等待時間等。這個與profiler中的duration值一致

通常資料需要從磁碟中讀取,還可能遇到i/o阻塞,因此大部分情況下看到的是占用時間大於cpu時間,這個很容易理解,但有時候cpu時間是可能大於占用時間的,這是由於該句使用了多個cpu,但是等待時間又很短

那麼個sql語句的cpu時間就是分析編譯裡的cpu時間加上執行時間裡的cpu時間之和,整個語句的執行時間就是所有占用時間之和。通常編譯主要就是cpu的運算,那麼cpu時間和占用時間應該是比較接近的。如果在執行過程,就可能需要將資料從磁碟讀入記憶體,那麼i/o等待時間的消耗就可能造成占用時間很長。

2、在存在快取的情況下,執行計畫可以重用,因此分析編譯時間可能都為零;執行過程中的資料也不需要從磁碟上讀取,所以執行時間中的中占用時間很短,快取使得效能大提高。

二、statistics io選項

用於sql server 顯示有關由 transact-sql 語句生成的磁碟活動量的資訊。

1、「表 'productlite'。掃瞄計數 1,邏輯讀取 3077 次,物理讀取 0 次,預讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預讀 0 次。」這條結果中出現的概念在sql server幫助文件中都有解釋

2、邏輯讀取與profiler中的reads值是乙個概念,但是由於profile日跟蹤顯示的reads隨著該查詢使用的set語句而增長,但是statistics io顯示的邏輯讀數量不包含set語句所訪問的附加頁面,因此,statistics io提供的讀運算元量一致。

3、當記憶體中還沒有需要查詢的資料時,需要從磁碟讀取,因此物理讀取和預讀都不會為零;一旦經過一次查詢後,該數值放入快取,那麼這兩個值將保持為零。

三、statistics profiler

顯示語句的配置檔案資訊。statistics profile 對即席查詢、檢視和儲存過程有效。

引數說明

rows:執行計畫的每一步返回的實際行數

executes:執行計畫的每一步被執行了多少次

stmttext:執行計畫的具體內容。執行計畫以一棵樹的形式顯示。每一行都是執行的一步,都會有結果集返回,也都會有自己的cost

estimaterows:sqlserver根據**上的統計資訊,預估的每一步的返回行數。

estimateio:sqlserver根據estimaterows和統計資訊裡記錄的字段長度,預估的每一步會產生的i/o cost

estimatecpu:sqlservr根據estimaterows和統計資訊裡記錄的字段長度,以及要做的事情的複雜度,預估每一步會產生的cpu cost

totalsubtreecost:sqlserver根據estimateio和estimatecpu通過某種計算公式,計算出每一步執行計畫子樹的cost

warnings:警告資訊

parallel:是否使用了並行的執行計畫

獲得sql 語句執行時間

showexecuttime.aspx頁面 movie2 的摘要說明 public class movie2 private static readonly string connectionstring private string title private string director pu...

檢視SQL語句執行時間

通過設定statistics我們可以檢視執行sql時的系統情況。選項有profile,io time。介紹如下 set statistics profile on 顯示分析 編譯和執行查詢所需的時間 以毫秒為單位 set statistics io on 報告與語句內引用的每個表的掃瞄數 邏輯讀取數...

mysql語句執行時間分析

檢視mysql版本 select version 方法一 show profiles。1.show profiles是5.0.37之後新增的,要想使用此功能,要確保版本在5.0.37之後。檢視方法 show variables like pro 檢視profiling是否開啟 設定開啟方法 set ...