日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

查詢開銷

系統(tǒng) 2432 0
原文: 查詢開銷

  盡管查詢的執(zhí)行計劃提供了詳細(xì)的處理策略的單獨步驟涉及的估計相對開銷,但是它沒有提供查詢實際的CPU使用、磁盤讀寫或持續(xù)時間等開銷。

  還有其他比運行Profiler更直接手機性能數(shù)據(jù)的方法

一、客戶統(tǒng)計

  客戶統(tǒng)計將計算機作為服務(wù)器的一個客戶端,從這個角度出發(fā)去捕捉執(zhí)行信息。這意味著任何記錄事件包括通過網(wǎng)絡(luò)傳送數(shù)據(jù)的時間,而不僅僅是SQL Server本身所花費的時間。

  要使用客戶統(tǒng)計,只需要單擊=》查詢=》包含客戶統(tǒng)計。

  現(xiàn)在,每當(dāng)運行一個查詢,就會收集一個限定的數(shù)據(jù)集,包括執(zhí)行事件,影響的行數(shù)、到服務(wù)器的往返次數(shù)等。進(jìn)一步,查詢的每次執(zhí)行在客戶統(tǒng)計選項卡上被分別顯示,有一列將多次的執(zhí)行進(jìn)行累加并顯示所收集數(shù)據(jù)的平均值。該統(tǒng)計也以箭頭方式顯示一次運行和下次運行之間事件或計數(shù)是否改變。

查詢開銷

  執(zhí)行查詢語句,顯示的客戶端信息如下:

查詢開銷

  雖然捕捉客戶統(tǒng)計可能收集數(shù)據(jù)的有用手段,但這是個有限的數(shù)據(jù)集,沒有辦法顯示一次執(zhí)行與另一次的差別。甚至可能運行完全不同的一個查詢,它的數(shù)據(jù)可能與其他的混合在一起,從而使平均值失去意義。如果需要這么做可以重置客戶統(tǒng)計=》查詢=》重置客戶端統(tǒng)計實現(xiàn)。

二、執(zhí)行時間

  Duration和CPU都代表著查詢的時間因素。要獲得關(guān)于解析、編譯和執(zhí)行查詢的總時間詳細(xì)信息,可以通過SET STATISTICS TIME實現(xiàn):

查詢開銷

  執(zhí)行時間CPU 時間 = 125毫秒表示Profiler工具和服務(wù)器跟蹤選項所提供的CPU值。相似地對應(yīng)的占用時間 = 1065毫秒表示其他機制提供的Duration值。

  分析和編譯時間意味著優(yōu)化器重用這個查詢現(xiàn)有的執(zhí)行計劃,因此不必花費任何時間來再次解析和編譯時間。如果查詢第一次執(zhí)行,那么優(yōu)化器必須首先解析查詢語法,然后編譯它以生成執(zhí)行計劃。這個可以調(diào)用DBCC FREEPROCCACHE清楚緩存,然后重新運行查詢:

查詢開銷

  不應(yīng)該在生產(chǎn)系統(tǒng)上運行DBCC FREEPROCCACHE,除非準(zhǔn)備胡斐無謂的開銷重新編譯系統(tǒng)上的每個查詢,某種程度上,這個系統(tǒng)重啟的開銷相同。

三、統(tǒng)計IO

  為了減少讀操作總數(shù),發(fā)現(xiàn)查詢中訪問的所有表以及對應(yīng)的讀操作數(shù)量是有用的。

  要獲得執(zhí)行查詢所化花費的IO可以通過操作GUI得到:

  查詢=》查詢選項=》設(shè)置STATISTICS IO:

查詢開銷

查詢開銷

  當(dāng)然也可以通過編程的方式開啟:

查詢開銷

  在解讀STATISTICS IO輸出時,多半會參考邏輯讀操作數(shù)量,有時候也會參考掃描計數(shù)。但即使每個掃描執(zhí)行很少的邏輯讀,STATISTICS IO所提供的邏輯讀總數(shù)仍然可能會很高。如果每個掃描的邏輯讀數(shù)量對于特定的表很小,那么可能無法進(jìn)一步地改進(jìn)該表的索引機制。物理讀操作和預(yù)讀數(shù)量在數(shù)據(jù)無法在內(nèi)存中找到時不為0,但是一旦數(shù)據(jù)填寫到內(nèi)存,物理讀和預(yù)讀將趨近于0。

  知道查詢使用的所有表及其對應(yīng)的讀操作數(shù)量還有另一個好處。SQL Server機器上運行的重要服務(wù)和后臺應(yīng)用通常會影響所觀測的查詢處理時間,Duration和CPU值在表結(jié)構(gòu)或數(shù)據(jù)沒有變化的情況下重新執(zhí)行相同查詢,結(jié)果常常有很大的波動。

  在優(yōu)化各步驟期間,需要一個沒有被動的開銷數(shù)字作為參考。讀操作數(shù)量在固定的表結(jié)構(gòu)和數(shù)據(jù)下的查詢多次執(zhí)行之間不會有變化。例如,如果執(zhí)行SELECT語句10次,可能得到10個不同的Duration和CPU數(shù)值,但Reads每次都保持一致。

  下面還給出一些常用的計數(shù)及清除緩存的方法:

操作 說明
DBCC DROPCLEANBUFFERS 清空數(shù)據(jù)緩存
DBCC FREEPROCCACHE 清空編譯緩存 ?

?  其他統(tǒng)計操作說明:

選項 說明?
SET NOCOUNT 當(dāng)?SET?NOCOUNT?為?ON?時,不返回計數(shù)(表示受?Transact-SQL?語句影響的行數(shù))。當(dāng)?SET?NOCOUNT?為?OFF?時,返回計數(shù)。
SET ARITHABORT 在查詢執(zhí)行過程中發(fā)生溢出或被零除錯誤時終止查詢。
SET NOEXEC 編譯但不執(zhí)行語句
SET SHOWPLAN_TEXT 不執(zhí)行 Transact-SQL 語句。但由 SQL Server 返回有關(guān)如何執(zhí)行語句的詳細(xì)信息。
SET PARSEONLY 解析但不編譯或執(zhí)行語句
SET STATISTICS TIME 統(tǒng)計執(zhí)行語句所消耗時間
SET STATISTICS IO 統(tǒng)計執(zhí)行語句所消耗IO
SET CONCAT_NULL_YIELDS_NULL 控制是將串聯(lián)結(jié)果視為 Null 還是空字符串值。 ON:SELECT 'abc' + NULL; 返回NULL;OFF:SELECT 'abc' + NULL; 返回abc
SET TRANSACTION ISOLATION LEVEL 控制到 SQL Server 的連接發(fā)出的 Transact-SQL 語句的鎖定行為和行版本控制行為。
SET DEADLOCK_PRIORITY 指定當(dāng)前會話與其他會話發(fā)生死鎖時繼續(xù)處理的相對重要性。
SET LOCK TIMEOUT 指定語句等待鎖釋放的毫秒數(shù)。
SET QUERY_GOVERNOR_COST_LIMIT 數(shù)值或整數(shù)值,用于指定可以運行查詢的最長時間。查詢調(diào)控器不允許執(zhí)行估計開銷超過該值的任何查詢。如果指定此選項為 0(默認(rèn)),將關(guān)閉查詢調(diào)控器,并且允許所有查詢無限期運行。

更多的設(shè)置,可以查看MSDN: http://technet.microsoft.com/zh-cn/library/ms186736(v=sql.90).aspx

查詢開銷


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

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

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 海兴县| 保定市| 津南区| 深泽县| 崇左市| 彰化市| 宜黄县| 安仁县| 高陵县| 黄浦区| 德保县| 綦江县| 应城市| 许昌县| 勃利县| 即墨市| 肃北| 彰武县| 澎湖县| 百色市| 东明县| 西丰县| 杭州市| 常熟市| 衡阳市| 内黄县| 周至县| 平度市| 黎川县| 余庆县| 新沂市| 蓬安县| 汕尾市| 沛县| 札达县| 鄂尔多斯市| 沅江市| 商城县| 江西省| 周宁县| 大庆市|