亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳解SQL Server 2008工具SQL Server Profiler

 更新時(shí)間:2015年05月19日 09:26:27   投稿:junjie  
這篇文章主要介紹了詳解SQL Server 2008工具SQL Server Profiler,本文逐一講解了SQL Server Profiler提供的功能,需要的朋友可以參考下

一、SQL Profiler工具簡(jiǎn)介

SQL Profiler是一個(gè)圖形界面和一組系統(tǒng)存儲(chǔ)過(guò)程,其作用如下:

1.圖形化監(jiān)視SQL Server查詢(xún);

2.在后臺(tái)收集查詢(xún)信息;

3.分析性能;

4.診斷像死鎖之類(lèi)的問(wèn)題;

5.調(diào)試T-SQL語(yǔ)句;

6.模擬重放SQL Server活動(dòng);

也可以使用SQL Profiler捕捉在SQL Server實(shí)例上執(zhí)行的活動(dòng)。這樣的活動(dòng)被稱(chēng)為Profiler跟蹤。

  1、Profiler跟蹤

  從開(kāi)始=》所有程序=》Microsoft SQL Server 2008=》性能工具打開(kāi)Profiler工具,也可以打開(kāi)SQL Server Management Studio=》工具=》SQL Server Profiler。

  然后選擇文件=》新建=》跟蹤打開(kāi)一個(gè)連接窗口,選擇將要跟蹤的服務(wù)器實(shí)例然后連接。打開(kāi)如下“跟蹤屬性”對(duì)話(huà)框。

  

  如果有許多跟蹤,可以提供一個(gè)跟蹤名稱(chēng)來(lái)幫助在以后進(jìn)行分類(lèi)。不同的跟蹤模板可幫助建立用于不同目的的跟蹤。

  打開(kāi)跟蹤屬性窗口后,單擊“事件選擇”選項(xiàng)卡,為跟蹤提供更詳細(xì)的定義。

  

  2、事件

  一個(gè)事件表現(xiàn)SQL Server中執(zhí)行的各種活動(dòng)。這些活動(dòng)可以簡(jiǎn)單地分類(lèi)為事件類(lèi),游標(biāo)事件,鎖事件,存儲(chǔ)過(guò)程事件和T-SQL事件是常見(jiàn)的事件類(lèi)。

  對(duì)于性能分析,主要對(duì)SQL Server上執(zhí)行的各種活動(dòng)的資源壓力水平的事件感興趣。資源壓力主要包含如下內(nèi)容:

SQL活動(dòng)涉及哪一類(lèi)的CPU使用?使用了多少內(nèi)存?涉及多少I(mǎi)/0操作?SQL活動(dòng)執(zhí)行了多長(zhǎng)時(shí)間?特定的查詢(xún)執(zhí)行的頻率有多高?查詢(xún)面對(duì)哪類(lèi)錯(cuò)誤和警告?

  下面給出跟蹤查詢(xún)結(jié)束的事件:

事件類(lèi) 事件 說(shuō)明
Stored Procedures RPC:Completed RPC完成事件
  SP:Completed 存儲(chǔ)過(guò)程完成事件
  SP:StmtCompleted 在存儲(chǔ)過(guò)程中一條SQL語(yǔ)句完成事件
T-SQL SQL:BatchCompleted T-SQL批完成事件
  SQL:StmtCompleted 一條T-SQL語(yǔ)句完成事件

  RPC事件表示存儲(chǔ)過(guò)程使用遠(yuǎn)程過(guò)程調(diào)用(RPC)機(jī)制通過(guò)OLEDB命令執(zhí)行。如果一個(gè)數(shù)據(jù)庫(kù)應(yīng)用程序使用T-SQL EXECUTE語(yǔ)句執(zhí)行一個(gè)存儲(chǔ)過(guò)程,那么存儲(chǔ)過(guò)程將被轉(zhuǎn)化為一個(gè)SQL批而不是一個(gè)RPC。RPC請(qǐng)求通常比EXECUTE請(qǐng)求快,因?yàn)樗@過(guò)了SQL Server中的許多語(yǔ)句解析和參數(shù)處理。

  T-SQL由一條或多條T-SQL語(yǔ)句組成。語(yǔ)句或T-SQL語(yǔ)句在存儲(chǔ)過(guò)程中也是單獨(dú)和離散的。用SP:StmtCompleted或SQL:StmtCompleted事件捕捉單獨(dú)的語(yǔ)句可能是代價(jià)很高的操作,這取決于單獨(dú)語(yǔ)句的數(shù)量。假設(shè)系統(tǒng)中的每個(gè)存儲(chǔ)過(guò)程包含且只有一條T-SQL語(yǔ)句。在這種情況下,完成的語(yǔ)句集合相當(dāng)小。現(xiàn)在假定過(guò)程中有多條語(yǔ)句,而且這些過(guò)程中有些使用其他語(yǔ)句調(diào)用其他過(guò)程。收集所有這些額外的數(shù)據(jù)現(xiàn)在變成系統(tǒng)上非常厲害的負(fù)載。在生產(chǎn)機(jī)上一定要慎用。

  現(xiàn)在回到那個(gè)事件選擇面板,只有已經(jīng)被選擇的事件才會(huì)被顯示。如果想顯示所有可供選擇的事件,則只需選中“顯示所有事件”單選框,要添加一個(gè)跟蹤事件,在Event列中查找一個(gè)事件類(lèi)下的事件,并單擊其左邊的檢查框;要?jiǎng)h除不需要的事件,取消選中的事件選擇框。

  光分類(lèi)就有好多的說(shuō):

  

  下面給出其他一些與性能診斷有關(guān)的事件:

事件類(lèi) 事件 說(shuō)明
Security Audit(安全審計(jì)) Audit Login(登錄審計(jì)) 記錄用戶(hù)連接到SQL Server或斷開(kāi)連接時(shí)數(shù)據(jù)庫(kù)的連接
Audit Logout(注銷(xiāo)審計(jì))
Sessions(會(huì)話(huà)) ExistingConnection(現(xiàn)有連接) 表示所有在跟蹤開(kāi)始之間連接到SQL Server的用戶(hù)
Cursors(游標(biāo)) CursorImplicitConversion(游標(biāo)隱含轉(zhuǎn)換) 表明創(chuàng)建的游標(biāo)類(lèi)型與所請(qǐng)求的類(lèi)型個(gè)不同
Errors and Warnings(錯(cuò)誤和警告) Attention(注意) 表示由于客戶(hù)端撤銷(xiāo)查詢(xún)或者數(shù)據(jù)庫(kù)連接破壞引起請(qǐng)求中斷
Exception(異常) 表明SQL Server發(fā)生了異常
Execution Warning(執(zhí)行警告) 表明在查詢(xún)或存儲(chǔ)過(guò)程執(zhí)行期間出現(xiàn)了警告
Hash Warning(哈希警告) 表明hash操作發(fā)生了錯(cuò)誤
Missing Column Statistics(列統(tǒng)計(jì)丟失) 表明優(yōu)化器要求的確定處理策略用的類(lèi)統(tǒng)計(jì)丟失
Missing Join Predicate(連接斷言丟失) 表明查詢(xún)?cè)趦蓚€(gè)表沒(méi)有連接斷言情況下執(zhí)行
Sort Warning(排序警告) 表明像SELECT這樣的查詢(xún)中執(zhí)行排序操作沒(méi)有合適的內(nèi)存
Locks(鎖) Lock:Deadlock(死鎖) 標(biāo)志著死鎖的出現(xiàn)
Lock:Deadlock Chain(死鎖鏈) 顯示產(chǎn)生死鎖的查詢(xún)鏈條
lock:Timeout(鎖超時(shí)) 表示鎖已經(jīng)超過(guò)其超時(shí)參數(shù),該參數(shù)由SETLOCK_TIMEOUT timeout_perious(ms)命令設(shè)置
Stored Procedures(存儲(chǔ)過(guò)程)    SP:Recompile(重編譯) 表明用于一個(gè)存儲(chǔ)過(guò)程的執(zhí)行計(jì)劃必須重編譯,原因是執(zhí)行計(jì)劃不存在,強(qiáng)制的重編譯,或者現(xiàn)有的執(zhí)行計(jì)劃不能重用

 SP:Starting(開(kāi)始)

 SP:StmtStarting(語(yǔ)句開(kāi)始)

分別表示一個(gè)SP:StmtStarting存儲(chǔ)過(guò)程和存儲(chǔ)過(guò)程中的一條SQL語(yǔ)句的開(kāi)始。他們對(duì)于識(shí)別開(kāi)始單因?yàn)橐粋€(gè)操作導(dǎo)致Attention事件未能結(jié)束的查詢(xún)很有用 
 Transactions(事物) SQLTransaction(SQL事務(wù))  提供數(shù)據(jù)庫(kù)事務(wù)的信息,包括事務(wù)開(kāi)始/結(jié)束的時(shí)間、事務(wù)持續(xù)事件等信息 

  3、事件列

   事件以不同的特性(被稱(chēng)為數(shù)據(jù)列)來(lái)表現(xiàn)。數(shù)據(jù)列表現(xiàn)一個(gè)事件的不通特性,如事件的類(lèi)、用于該事件的SQL語(yǔ)句、事件的資源開(kāi)銷(xiāo)以及事件來(lái)源。

數(shù)據(jù)列 說(shuō)明
EventClass(事件類(lèi)) 事件類(lèi)型,如SQL:StatementCompleted
TextData 事件所用的SQL語(yǔ)句,如SELECT * FROM Person
CPU 事件的CPU開(kāi)銷(xiāo)(以ms表示),如對(duì)一個(gè)SELECT語(yǔ)句,CPU=100表示該語(yǔ)句執(zhí)行100ms
Reads 為一個(gè)事件所執(zhí)行的邏輯讀操作數(shù)量。例如對(duì)一個(gè)SELECT語(yǔ)句,Reads=800表示該語(yǔ)句需要800次邏輯讀操作
Writes 為一個(gè)事件所執(zhí)行的邏輯寫(xiě)操作數(shù)量
Duration 事件的執(zhí)行時(shí)間(ms)
SPID 用于該事件的SQL Server進(jìn)程標(biāo)識(shí)符
StartTime 事件開(kāi)始的時(shí)間

   以上是常用的數(shù)據(jù)列,另外還有一些不太常用的數(shù)據(jù)列:

  BinaryData(二進(jìn)制數(shù)據(jù))  IntegerData(整數(shù)數(shù)據(jù))  EventSubClass(事件子類(lèi))  DatabaseID(數(shù)據(jù)庫(kù)標(biāo)識(shí)符)  ObjectID(對(duì)象標(biāo)識(shí)符)  IndexID(索引標(biāo)識(shí)符)  TransactionID(事務(wù)標(biāo)識(shí)符)  Error(錯(cuò)誤)  EndTime(結(jié)束時(shí)間)

  列數(shù)據(jù)可以重新安排以符合你自己所喜歡的風(fēng)格,要控制列數(shù)據(jù)的安放,單擊組織列按鈕,將打開(kāi)如下對(duì)話(huà)框??梢詥螕鬠p和Down按鈕修改列的位置,將列移入Groups意味著它將成為一個(gè)合計(jì)列。

   

  4、列篩選器

  除了為一個(gè)Profiler跟蹤定義事件和數(shù)據(jù)列之外,還可以定義各種過(guò)濾條件。這些條件幫助縮小跟蹤的輸出,這往往是一個(gè)好主意。下面給出常用過(guò)濾條件列表。

事件 過(guò)濾條件實(shí)例 用處
ApplicationName(應(yīng)用程序名稱(chēng)) Not like:SQL Profiler 過(guò)濾Profiler生成的事件。這是默認(rèn)的行為
DatabaseID(數(shù)據(jù)庫(kù)標(biāo)識(shí)符) Equals:<ID of the database to monitor> 過(guò)濾特定數(shù)據(jù)庫(kù)生成的事件。數(shù)據(jù)庫(kù)ID:SELECT DB_IC('Northwind')
Duration(持續(xù)時(shí)間) Greater than or equal:2   對(duì)于性能分析,經(jīng)常會(huì)為一個(gè)大的工作負(fù)載捕捉跟蹤,在大的跟蹤中,許多事件日志具有比所感興趣更小的持續(xù)周期(Duration)。過(guò)濾這個(gè)事件日志,因?yàn)閹缀鯖](méi)有可用于優(yōu)化這些SQL活動(dòng)的余地
Reads(讀操作數(shù)) Greater than or equal"2 過(guò)濾讀操作較小的事件
SPID

Equals:<Database users to monitor>

定位由特定的數(shù)據(jù)庫(kù)用戶(hù)發(fā)送的查詢(xún)

   下面給出設(shè)置過(guò)濾列的方式:

  

   5、跟蹤模板

  SQL Server Profiler可以用自定義事件、數(shù)據(jù)列和過(guò)濾器創(chuàng)建一個(gè)跟蹤模板,然后定義一個(gè)新的跟蹤,然后重用跟蹤個(gè)模板來(lái)捕捉一個(gè)跟蹤。定義新跟蹤模板的過(guò)程類(lèi)似于定義新跟蹤,步驟如下:

創(chuàng)建一個(gè)新的跟蹤。和前面一樣定義事件,數(shù)據(jù)列和過(guò)濾器。從文件=》另存為菜單將跟蹤定義保存為跟蹤模板。

  SQL Server Profiler將自動(dòng)將新的模板加入到其模板列表中。

  新建模板:

  

  保存模板:

  

  查看:

  

  6、跟蹤數(shù)據(jù)

  定義了跟蹤以后,單擊運(yùn)行按鈕將開(kāi)始捕捉事件并將其顯示在屏幕上,可以看到一系列滾動(dòng)事件,可以在我們稱(chēng)之為SQL TV的屏幕上看到系統(tǒng)的運(yùn)行,可以像DVD播放機(jī)一樣或多或少地控制跟蹤,可以使用工具欄上的按鈕暫停、開(kāi)始和停止跟蹤,甚至可以在工作室暫停跟蹤并修改它。

  一旦完成了SQL Server活動(dòng)的捕捉,就可以將跟蹤輸出保存為一個(gè)跟蹤文件或一個(gè)跟蹤表。保存到跟蹤文件的跟蹤輸出是一個(gè)原生的格式,可以由Profiler打開(kāi)以分析SQL查詢(xún)。將跟蹤的輸出保存為一個(gè)表,也可以使Profiler在跟蹤表上用SELECT語(yǔ)句來(lái)分析其中的SQL查詢(xún)。

  具體的操作為 文件 =》 另存為 =》 跟蹤表。選擇你希望存入的的數(shù)據(jù)庫(kù)和表,然后你就可以像普通表一樣執(zhí)行各種SQL查詢(xún)。

二、跟蹤的自動(dòng)化

  Profiler GUI簡(jiǎn)化了Profiler跟蹤的收集。不幸的是,這種簡(jiǎn)易性有其代價(jià)。Profiler工具捕捉的事件進(jìn)入內(nèi)存中的緩沖以便通過(guò)網(wǎng)絡(luò)反饋給GUI。GUI依賴(lài)網(wǎng)絡(luò),網(wǎng)絡(luò)流量可能降低系統(tǒng)的速度并導(dǎo)致緩沖被填滿(mǎn)。這將在較小的程度上影響服務(wù)器的性能。進(jìn)一步地,當(dāng)緩沖被填滿(mǎn),服務(wù)器將開(kāi)始丟棄事件以避免嚴(yán)重地影響服務(wù)器性能。

  1、使用GUI捕捉跟蹤

  可以以?xún)煞N方法兩創(chuàng)建一個(gè)腳本化跟蹤-手工或者使用GUI。在輕松地滿(mǎn)足腳本的所有要求之間,最簡(jiǎn)易的方法就是使用Profiler工具的GUI,需要如下步驟:

定義一個(gè)跟蹤;單擊文件=》導(dǎo)出=》腳本跟蹤定義;必須選擇目標(biāo)服務(wù)器類(lèi)型, SQL Server2005/2008;未文件命名,并保存它;

  這些不走將生成所有步驟跟蹤并將其輸出到一個(gè)文件所需的所有腳本命令。

  使用Management Studio手工啟動(dòng)新的跟蹤:

打開(kāi)文件;使用系統(tǒng)的相關(guān)名稱(chēng)和路徑替換InsertFileNameHere;執(zhí)行腳本,它將返回帶有TraceId的單列結(jié)果集;

  可以通過(guò)SQL Agent自動(dòng)化這個(gè)腳本的執(zhí)行,甚至可以使用sqlcmd.exe使用程序從命令行運(yùn)行這個(gè)腳本。不管使用哪種方法,這個(gè)腳本將啟動(dòng)跟蹤。如果沒(méi)有定義跟蹤停止時(shí)間,就必須使用TraceId手工停止跟蹤。

  2、使用存儲(chǔ)過(guò)程捕捉跟蹤

  查看上一節(jié)中定義的腳本,會(huì)看到以特定順序條用的一系列命令:

sp_trace_create:創(chuàng)建一個(gè)跟蹤定義;sp_trace_setevent:添加事件和事件列到跟蹤中;sp_trace_setfilter:將過(guò)濾器應(yīng)用到跟蹤;

  一旦定義了SQL跟蹤持續(xù)到跟蹤被停止。因?yàn)镾QL跟蹤作為一個(gè)后端進(jìn)程持續(xù)運(yùn)行,Managerment Studio會(huì)話(huà)不需要保持打開(kāi)。可以使用SQL Server內(nèi)建函數(shù)fn_trace_getinfo確定正在運(yùn)行的跟蹤,查詢(xún)?nèi)缦拢?/p>

復(fù)制代碼 代碼如下:

SELECT * FROM ::fn_trace_getinfo(default);

  輸出圖:

  

  fn_trace_getinfo函數(shù)的輸出中,不同的traceid的數(shù)量表示SQL Server上活動(dòng)跟蹤的數(shù)量。

第三列(value)表示跟蹤是否正在運(yùn)行(value=1)或者停止(value=0)??梢酝ㄟ^(guò)執(zhí)行存儲(chǔ)過(guò)程sp_trace_setstatus停止特定的跟蹤,如traceid=1,如下所示:

復(fù)制代碼 代碼如下:

EXEC sp_trace_setstatus 1,0;

在跟蹤停止之后,它的定義必須執(zhí)行sp_trace_setstatus關(guān)閉并且從服務(wù)器中刪除,如下所示:

復(fù)制代碼 代碼如下:

EXEC sp_trace_setstatus 1,2;

  為了驗(yàn)證跟蹤成功地停止,重新執(zhí)行fn_trace_getinfo函數(shù),并確定該函數(shù)的輸出不包含該traceid。

  這種技術(shù)所創(chuàng)建的跟蹤文件的格式與Profiler創(chuàng)建的跟蹤文件相同。因此,這種跟蹤文件可以與Profiler創(chuàng)建的文件以相同的方式進(jìn)行分析。

  使用前一小節(jié)所概述的存儲(chǔ)過(guò)程捕捉SQL跟蹤,避免了與Profiler GUI相關(guān)的開(kāi)銷(xiāo)。而且還比Profiler工具提供了管理SQL跟蹤計(jì)劃的更大靈活性。

三、結(jié)合跟蹤和性能監(jiān)視器輸出

  如果自動(dòng)化了性能監(jiān)視器捕捉到文件,又自動(dòng)化了Profiler數(shù)據(jù)捕捉到一個(gè)文件。它們覆蓋相同的時(shí)間段,那么就可以在SQL Profiler GUI中一起使用它們。確定跟蹤有StartTime和EndTime數(shù)據(jù)字段,按照以下步驟進(jìn)行:

打開(kāi)跟蹤文件(當(dāng)然前提是你曾經(jīng) 另存為=》跟蹤文件);單擊 文件=》 導(dǎo)入性能數(shù)據(jù);選擇導(dǎo)入的性能監(jiān)視器文件;

  執(zhí)行上面的操作將打開(kāi)如下所示對(duì)話(huà)框,這里允許選擇包含性能監(jiān)視器計(jì)數(shù)器。

 

  選擇了想要包含的計(jì)數(shù)器之后,單擊OK按鈕將一起打開(kāi)Profiler和性能監(jiān)視器數(shù)據(jù)?,F(xiàn)在,可以開(kāi)始一起使用跟蹤數(shù)據(jù)和性能監(jiān)視器數(shù)據(jù)。如果在頂部窗口選擇一個(gè)時(shí)間,它將在性能 監(jiān)視器中放置一條紅線(xiàn),顯示數(shù)據(jù)中事件發(fā)生的時(shí)間。相反,可以單擊性能監(jiān)視器數(shù)據(jù),表示那段 時(shí)間的事件將被選中。這些性能工作得很好,將可以在調(diào)整過(guò)程中定時(shí)使用它們以確認(rèn)瓶頸和壓力 點(diǎn),并確定導(dǎo)致這些壓力的特定查詢(xún)。

四、SQL Profiler使用要點(diǎn)

  SQL Profiler使用建議如下:

限制事件和數(shù)據(jù)列的數(shù)量;拋棄用于性能分析的啟動(dòng)事件;限制跟蹤的輸出大小;避免聯(lián)機(jī)數(shù)據(jù)列排序;遠(yuǎn)程運(yùn)行Proflier;

  1、限制事件和數(shù)據(jù)列

  在跟蹤SQL查詢(xún)時(shí),可以通過(guò)過(guò)濾事件和數(shù)據(jù)列來(lái)決定哪些SQL活動(dòng)應(yīng)該被捕捉。選擇更多的事件造成了大量的跟蹤開(kāi)銷(xiāo)。數(shù)據(jù)列不會(huì)增加太多的開(kāi)銷(xiāo),因?yàn)樗鼈冎皇且粋€(gè)事件類(lèi)的特性。因此,知道每個(gè)所希望跟蹤事件的原因,并根據(jù)必要性來(lái)選擇事件是很重要的。

  最小化捕捉的事件數(shù)量避免SQL Server浪費(fèi)寶貴的資源帶寬去生成所有的事件。捕捉像鎖和執(zhí)行計(jì)劃這樣的事件時(shí)應(yīng)該小心進(jìn)行,因?yàn)檫@些事件會(huì)使跟蹤輸出變得非常大并降低SQL Server的性能。

  過(guò)濾分兩個(gè)階段:預(yù)過(guò)濾由SQL Server執(zhí)行,后過(guò)濾由用戶(hù)執(zhí)行。預(yù)過(guò)濾是捕捉SQL Server活動(dòng)的聯(lián)機(jī)階段,預(yù)過(guò)濾提供多種溢出:

降低了SQL Server的性能影響,因?yàn)樯捎邢迶?shù)量的時(shí)間;降低跟蹤輸出大小;簡(jiǎn)化后過(guò)濾操作,首先因?yàn)橐蹲降氖录倭耍?/p>

  預(yù)過(guò)濾的唯一缺點(diǎn)是,可能丟失一些徹底分析中需要的重要信息。

  2、丟棄性能分析所用的啟動(dòng)事件

  所用于性能分析的信息圍繞一個(gè)查詢(xún)的資源開(kāi)銷(xiāo)。想SP:StmtStarting這樣的啟動(dòng)事件不提供這種信息,因?yàn)橹挥性谑录瓿芍螅拍苡?jì)算I/O量、CPU負(fù)載和查詢(xún)的持續(xù)時(shí)間。所以,在跟蹤運(yùn)行緩慢的查詢(xún)以進(jìn)行性能分析時(shí),不需要捕捉啟動(dòng)事件。這種信息由對(duì)應(yīng)的完成事件來(lái)提供。

  什么情況下適合捕捉啟動(dòng)事件呢?應(yīng)該在預(yù)期某些SQL查詢(xún)因?yàn)殄e(cuò)誤而不能結(jié)束執(zhí)行,或者頻繁發(fā)現(xiàn)Attention事件的時(shí)候捕捉啟動(dòng)事件。Attention事件一般表示用戶(hù)中途撤銷(xiāo)了查詢(xún)或者查詢(xún)超時(shí),可能因?yàn)椴樵?xún)運(yùn)行了太長(zhǎng)時(shí)間。

  3、限制跟蹤輸出大小

  除了預(yù)過(guò)濾事件和數(shù)據(jù)列,其他過(guò)濾條件也會(huì)限制跟蹤輸出的大小。同樣,限制大小可能丟失所關(guān)注的總體系統(tǒng)狀態(tài)中感興趣的事件。但是,如果關(guān)注于開(kāi)銷(xiāo)較大的查詢(xún),過(guò)濾器是有幫助的。

  通過(guò)過(guò)濾器,能夠篩選執(zhí)行事件》=2或邏輯讀數(shù)量》=100的查詢(xún),因?yàn)橄奶偷牟樵?xún)基本上不需要優(yōu)化。

  4、避免在線(xiàn)數(shù)據(jù)列排序

  在性能分析期間,一般在不同的數(shù)據(jù)列(如Duration、CPU、Reads)上排序以確定相應(yīng)數(shù)字最大的查詢(xún)。如果脫機(jī)排序,就能降低在與SQL Server交互時(shí)必須進(jìn)行的Profiler活動(dòng)。排序捕捉到的SQL跟蹤輸出的方法如下:

捕捉跟蹤,不做任何排序或分組;另存為跟蹤輸出到一個(gè)跟蹤文件;打開(kāi)跟蹤文件并按照需要在特定的數(shù)據(jù)列上排序或分組跟蹤文件輸出;

  5、遠(yuǎn)程運(yùn)行Profiler

  直接在生產(chǎn)服務(wù)器上運(yùn)行測(cè)試工具一般不是一個(gè)好辦法。Profiler有一個(gè)大型的用戶(hù)界面,因此,在其他機(jī)器上運(yùn)行它更好。與系統(tǒng)監(jiān)視器相似,Profiler不應(yīng)該通過(guò)終端服務(wù)會(huì)話(huà)來(lái)運(yùn)行,因?yàn)檫@樣工具的主要部分仍然在服務(wù)器上運(yùn)行。在直接將跟蹤輸出收集到一個(gè)文件時(shí),保存在Profiler運(yùn)行的本地文件上。這仍然是比通過(guò)系統(tǒng)存儲(chǔ)過(guò)程將Profiler作為服務(wù)器端跟蹤來(lái)運(yùn)行更加資源密集的操作。使用系統(tǒng)存儲(chǔ)過(guò)程仍然是最好的選擇。

  6、限制使用某些事件

  某些事件的開(kāi)銷(xiāo)比其他的事件大。由于生成的查詢(xún)的特性,語(yǔ)句完成事件的開(kāi)銷(xiāo)可能非常大。需要謹(jǐn)慎地使用,特別是在已經(jīng)遇到壓力的系統(tǒng)上,必須謹(jǐn)慎使用的事件有:Showplan XML事件,Performance:Showplan XML、Performance:Showplan XML for Query Compile和Performance:Showplan XML sTATISTICS Prifile。雖然這些事件可能有用,但是不要在生產(chǎn)機(jī)器上使用它們。

五、沒(méi)有Profiler的情況下查詢(xún)性能度量

  建立一個(gè)跟蹤能收集許多數(shù)據(jù)供以后使用,但是這種收集可能代價(jià)很大,必須等待結(jié)果。

  如果要立即捕捉系統(tǒng)的性能度量,特別是關(guān)于查詢(xún)性能的度量,那么動(dòng)態(tài)管理視圖sys.dm_exec_query_stats正式所需要的。如果還需要查詢(xún)運(yùn)行及其單獨(dú)開(kāi)銷(xiāo)的歷史記錄,那么跟蹤仍然是更好的工具。但是,如果只需要知道這時(shí)候運(yùn)行時(shí)間最長(zhǎng)的查詢(xún)或者最多的物理讀操作,則可以從sys.dm_exec_query_stats得到這些信息。

  因?yàn)閟ys.dm_exec_query_stats只是一個(gè)視圖,可以簡(jiǎn)單地對(duì)其進(jìn)行查詢(xún)并獲得服務(wù)器上查詢(xún)計(jì)劃統(tǒng)計(jì)的信息。

描述
Plan_handle 引用執(zhí)行計(jì)劃的指針
Creation_time 計(jì)劃創(chuàng)建的時(shí)間
Last_execution time 查詢(xún)最后一次使用的計(jì)劃時(shí)間
Execution_count 計(jì)劃已經(jīng)使用的次數(shù)
Total_worker_time 從創(chuàng)建起計(jì)劃使用的CPU時(shí)間
Total_logical_reads 從創(chuàng)建器計(jì)劃使用的讀操作數(shù)量
Total_logical_writes 從創(chuàng)建器計(jì)劃使用的寫(xiě)操作數(shù)量
Query_hash 可用于識(shí)別有相似邏輯的查詢(xún)的一個(gè)二進(jìn)制hash
Query_plan_hash 可用于識(shí)別有相似邏輯的計(jì)劃的一個(gè)二jinzhihash

  為了過(guò)濾從sys.dm_exec_query_stats返回的信息,需要將其連接到其他動(dòng)態(tài)管理函數(shù)上,如sys.dm_exec_sql_text可以顯示與計(jì)劃相關(guān)的查詢(xún)文本,sys.dm_query_plan顯示用于查詢(xún)的執(zhí)行計(jì)劃。一旦連接到其他DMF,可以限制希望過(guò)濾得數(shù)據(jù)庫(kù)或過(guò)程。

相關(guān)文章

最新評(píng)論