亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > SQL Server > 正文

SET STATISTICS IO和SET STATISTICS TIME 在SQL Server查詢性能優化中的作用

2024-08-31 00:55:18
字體:
來源:轉載
供稿:網友
SET STATISTICS IO和SET STATISTICS TIME 在SQL Server查詢性能優化中的作用

近段時間以來,一直在探究SQL Server查詢性能的問題,當然也漫無目的的查找了很多資料,也從網上的大神們的文章中學到了很多,在這里,向各位大神致敬。正是受大神們無私奉獻精神的影響,所以小弟也作為回報,分享一下關于SET STATISTICS IO和SET STATISTICS TIME這兩條T_SQL命令,在查詢優化性能中的作用。

首先我想說明一下這篇文章不是關于如何優化SQL Server查詢性能的,因為關于這方面的內容太多,太復雜。另外查看很多關于性能優化(該文章中,指的是查詢性能)的資料的過程中,發現幾乎所有都是用執行時間作為優化指標,但是用執行時間作為性能優劣的指標并不是那么合適。當然,我們優化查詢語句的最終目的就是減少查詢時間。

引起查詢時間不準確的原因,有以下兩個方面:

1.SQL Server會隨著服務器資源的變化,而進行自我調節。

因為我們通常測試的服務器和實際服務器的環境并不完全相同。例如,我們在一臺負載很重的服務器上進行反復的測試。你會發現每次的執行的時間,并不相同,當然差距并不大,但是這個差距足以讓我們的性能調節變得困難許多。當然你也可以反復執行求平均值,但是在負載很大的服務器上,你需要一種多么科學的標準來確定執行時間的平均值呢?

2.SQL Server所要讀取的數據,有沒有在緩沖區中。

因為SQL Server 每次讀取數據都必須從數據緩沖區中讀取,這個也叫邏輯讀。如果要讀的數據沒有在數據緩沖區中,就要從物理磁盤上讀取(物理讀)。

以上兩個原因都會影響執行查詢語句所用的時間。

說了那么多,那我們該用什么作為性能優化的標準呢?

1.CPU的占用時間。

當數據庫執行查詢語句時,會用到很多服務器的資源。其中一種資源就是CPU的占用時間,如果數據庫沒有發生任何的改變,反復的運行同一個查詢,CPU的占用時間都是十分接近的。

2.IO操作的次數。

IO操作的指標有很多,下面會比較詳細的描述。

通過上面的描述,我們知道,一個查詢所需要的CPU、IO資源越少,性能就會越好。如果我們按照這個標準來優化查詢,那么就會很容易的判斷出你的優化措施是降低了性能,還是提高了性能。想到了這,那么我們怎樣才能看到我的服務器資源使用情況呢?這個時候我們就想到了SET STATISTICS IO和SET STATISTICS TIME (之前的內容就算是我賣關子了啊,嘿嘿)

SET STATISTIC IO和SET STATISTIC TIME像很多T_SQL語句那樣屬于開關命令(自己起得名字,就是用ON和OFF打開和關閉)。缺省狀態下是關閉的。接下來我們就開始使用這兩個命令了,好期待。

在這個例子中,我們使用之前建好的Test數據庫,使用Person表

(一)首先我們使用SET STATISTICS TIME

1.首先,為了使每次的執行都在同一個起點上,我們使用下面的兩條命令,來清除SQL Server的數據和過程緩沖區,否則執行的查詢結果就沒有可比性了。

DBCC DROPCLEANBUFFERS

DBCC FREEPROCCACHE

2.執行SET STATISTIC TIME ON 打開CUP統計報表

這些準備工作完成后,我們可以執行下面查詢:

select * from Person where ID=50000

執行完上述命令之后,你可以在消息選項卡中得到下面信息

SQL Server 分析和編譯時間: CPU 時間 = 0 毫秒,占用時間 = 20 毫秒。

SQL Server 分析和編譯時間: CPU 時間 = 0 毫秒,占用時間 = 0 毫秒。

(1 行受影響)

SQL Server 執行時間: CPU 時間 = 235 毫秒,占用時間 = 1508 毫秒。

下面我們來詳細的分析這些時間信息的含義。

第一個“SQL Server 分析和編譯時間”指的是解析“select * from Person where ID=50000”這條查詢語句,并將解析的結果放到過程緩沖區中,SQL Server使用的CPU運行時間和總的時間。

第二個“SQL Server 分析和編譯時間”指的是從過程緩沖區中取出解析結果,并且執行的時間。這個時間會很快。

如果接下來不清空緩沖區而直接運行“select * from Person where ID=50000”,你會發現SQL Server 分析和編譯時間都為0,因為SQL Server這時,會直接使用緩沖區中的解析結果,因此就不需要編譯時間。

第三個“SQL Server執行時間”將會是我們最感興趣的時間,這個時間是執行這次查詢使用了多少CPU運行時間和運行查詢使用了多少時間。CPU運行時間是對運行查詢所需要的CPU資源的一種相對穩定的測量方法,與CPU的忙閑程度沒有關系。但是,每次運行查詢時這一數字也會有所不同,只是變化的范圍很小??倳r間是對查詢執行所需要的時間(不計算阻塞或讀數據的時間),由于服務器上的負載是在不斷變化的,因此這一數據的變化范圍有時會相當地大。

由于CPU占用時間是相對穩定的,所以你可以使用這一數據作為衡量你的優化措施是提高了查詢性能,還是降低了查詢性能。

(二)接下來我們使用SET STATISTICS IO

和上面的準備工作一樣,當我們執行完“select * from Person where ID=50000”時,我們會在消息選項卡中看到以下信息:

(1 行受影響)表 'Person'。掃描計數 5,邏輯讀取 10418 次,物理讀取 105 次,預讀 10418 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預讀 0 次。

這里面的一些信息是非常重要的,另一部分則可以不去考慮。

掃描次數:在查詢中涉及到的表被訪問的次數。在我們的例子中,Person表只被訪問了5次,由于查詢中不包括連接命令,這一信息并不是十分有用,但如果查詢中包含有一個或多個連接,則這一信息是十分有用的。

邏輯讀?。哼@是最有用的數據。我們知道,SQL Server在對任何數據進行操作前,必須先把數據讀取到數據緩沖區中。此外,我們也知道SQL Server何時會從數據緩沖區中讀取數據,并把數據讀取到大小為8k字節的頁中。邏輯讀取得意思就是指SQL Server為得到查詢結果,而必須從數據緩沖區中讀取的頁數。

SQL Server在執行邏輯讀的時候,不會讀取比實際結果多或者少的數據,因此在相同的數據集中,執行同一個查詢,得到的邏輯讀的結果總是相同的。因此,在進行查詢優化時邏輯讀的值就是來衡量你的優化措施是否可行的一個很好的標準。(在查詢時邏輯讀越少,其效率就越高,查詢速度就越快,反之,就慢)

物理讀?。涸趫绦姓嬲牟樵儾僮髑埃琒QL Server必須從磁盤上向數據緩沖區中讀取他所需要的數據。在SQL Server開始執行查詢前,當它發現要讀的數據不再數據緩沖區中時,它會首先把它需要的數據讀到數據緩沖區中。物理讀取的意思就是指SQL Server把所需數據讀到數據緩沖區中時,從物理磁盤上讀取的數據頁數。

遺憾的是,在我們進行查詢優化時,是不需要考慮物理讀的。盡管物理讀要比邏輯讀可能需要更多的服務器資源。因為SQL Server在執行查詢時,是不可能通過性能調節而減少物理讀的次數的。減少物理讀是一項很復雜并且重要的工作,它涉及到的是整個服務器的性能調節,而不僅僅是查詢性能的調節。在進行查詢性能調節時,我們是不能控制數據緩沖區大小或服務器的忙碌程度,以及完成查詢所需要的數據是在數據緩沖區還是在磁盤上,唯一我們可以控制的就是得到查詢結果多需要執行的邏輯讀的次數。因此在進行查詢優化時,我們大可不必在意物理讀的數據。

預讀:指的是SQL Server在進行查詢優化前,預測要讀取的數據頁,根據預讀的準確程度,預讀可能有用也可能沒用。和物理讀一樣,在我們進行查詢優化時是不需要考慮的。

剩下的幾個“lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預讀 0 次”意思和前面說的差不多,只是在進行增、刪、改的時候IO資源的操作情況。

所以呢,我們在做查詢優化的時候,使用SET STATISTICS TIME 和SET STATISTICS IO 是個不錯的選擇。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩亚洲国产一区| 国内外成人免费激情在线视频网站| 亚洲精品日产aⅴ| 一区二区成人av| 欧洲美女免费图片一区| 亚洲高清av在线| 亚洲三级黄色在线观看| 亚洲欧美在线免费| 日韩av第一页| 国产成人短视频| 欧美成人免费va影院高清| 久久精品2019中文字幕| 亚洲成人久久网| 久久精品国产96久久久香蕉| 中文字幕亚洲色图| 欧美一区二区三区精品电影| 中文字幕国产亚洲2019| 疯狂做受xxxx欧美肥白少妇| 久久综合久久美利坚合众国| 国产精品扒开腿做爽爽爽男男| 欧美日韩在线免费| 亚洲国产日韩欧美在线图片| 欧美精品在线播放| 国产中文字幕91| 搡老女人一区二区三区视频tv| 国产v综合ⅴ日韩v欧美大片| 在线午夜精品自拍| 国产精品亚洲精品| 欧美激情视频一区二区三区不卡| 亚洲精品98久久久久久中文字幕| 亚洲aⅴ男人的天堂在线观看| 欧美国产高跟鞋裸体秀xxxhd| 中文字幕欧美精品在线| 久久精品一区中文字幕| 日韩有码片在线观看| 国产性色av一区二区| 久久精品色欧美aⅴ一区二区| 尤物精品国产第一福利三区| 日韩男女性生活视频| 国产精品日本精品| 综合136福利视频在线| 高清欧美一区二区三区| 欧美国产日韩一区二区三区| 亚洲欧美国内爽妇网| 亚洲自拍偷拍一区| 91视频免费在线| 中文字幕欧美专区| 91久久夜色精品国产网站| 日韩美女视频在线观看| 国产精品在线看| 国产精品嫩草影院一区二区| 日韩在线精品一区| 久久免费视频观看| 97人洗澡人人免费公开视频碰碰碰| 亚洲成人亚洲激情| 91精品国产91久久久久久久久| 久久久最新网址| 欧美巨乳在线观看| 91精品久久久久久久| 成人网中文字幕| 97久久国产精品| 97精品一区二区三区| 亚洲色图狂野欧美| 福利视频第一区| 国产网站欧美日韩免费精品在线观看| 中文字幕在线视频日韩| 日韩免费av一区二区| 精品久久中文字幕久久av| 91探花福利精品国产自产在线| 日韩中文视频免费在线观看| 北条麻妃在线一区二区| 亚洲欧美变态国产另类| 日韩欧美国产网站| 日韩精品中文字幕在线| 亚洲成**性毛茸茸| 日韩欧美在线视频日韩欧美在线视频| 亚洲黄色在线观看| 久久久精品久久久久| 激情亚洲一区二区三区四区| 成人精品久久av网站| 91九色精品视频| 欧美另类在线观看| 国产91在线播放九色快色| 精品成人国产在线观看男人呻吟| 成人xxxx视频| 91在线视频九色| 91久久精品国产91久久性色| 国语自产精品视频在线看| 中文字幕亚洲色图| 中文字幕在线看视频国产欧美在线看完整| 久久亚洲影音av资源网| 久久精品国产一区二区三区| 少妇高潮久久77777| 日本高清不卡在线| 成人性教育视频在线观看| 狠狠色狠狠色综合日日小说| 亚洲精品资源美女情侣酒店| 日本在线精品视频| 精品视频在线观看日韩| 国产精品444| 成人精品久久av网站| 日韩h在线观看| 欧美激情视频网址| 青青草精品毛片| 欧美激情亚洲视频| 国内精品美女av在线播放| 欧美最近摘花xxxx摘花| 国产黑人绿帽在线第一区| 亚洲国产中文字幕在线观看| 久久久欧美精品| 欧美激情免费观看| 精品中文字幕乱| 国模吧一区二区三区| 成人精品一区二区三区电影免费| 在线电影中文日韩| 最近2019年日本中文免费字幕| 国产精品在线看| 欧美中文在线字幕| 亚洲欧洲日产国产网站| 国产精品成人一区二区三区吃奶| 成人中文字幕+乱码+中文字幕| 日韩av网站大全| 日韩亚洲精品视频| 久久精品视频导航| 国产精品视频网址| 日本精品久久中文字幕佐佐木| 亚洲欧美国产一本综合首页| 日本一区二区在线播放| 亚洲视频在线观看免费| 中文字幕av一区二区| 一夜七次郎国产精品亚洲| 成人妇女免费播放久久久| 欧美日韩一区二区免费视频| 亚洲精品自拍视频| 亚洲一区av在线播放| 丝袜一区二区三区| 国产97在线|日韩| 国产欧美va欧美va香蕉在线| 国产精品久久精品| 日韩一区二区三区国产| 久久免费精品日本久久中文字幕| 亚洲999一在线观看www| 成人免费看吃奶视频网站| 精品香蕉在线观看视频一| 美女撒尿一区二区三区| 97热精品视频官网| 日韩精品久久久久久久玫瑰园| 91久久在线播放| 91九色视频导航| 2019最新中文字幕| 亚洲伊人一本大道中文字幕| 亚洲欧美日韩图片| 亚洲欧洲日产国码av系列天堂| 色yeye香蕉凹凸一区二区av| 成人国产精品免费视频| 日韩电影网在线| 在线看国产精品| 欧美中文在线观看国产| 国内精品久久久久久久| 日韩人体视频一二区| 亚洲精品视频中文字幕| 69国产精品成人在线播放| 欧美日韩裸体免费视频| 欧美日韩第一视频|