利用擴(kuò)展事件進(jìn)行調(diào)優(yōu)和Troubleshooting_第1頁
利用擴(kuò)展事件進(jìn)行調(diào)優(yōu)和Troubleshooting_第2頁
利用擴(kuò)展事件進(jìn)行調(diào)優(yōu)和Troubleshooting_第3頁
利用擴(kuò)展事件進(jìn)行調(diào)優(yōu)和Troubleshooting_第4頁
利用擴(kuò)展事件進(jìn)行調(diào)優(yōu)和Troubleshooting_第5頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、利用擴(kuò)展事件進(jìn)行調(diào)優(yōu)和Troubleshooting議程什么是擴(kuò)展事件為什么使用擴(kuò)展事件擴(kuò)展事件應(yīng)用示例擴(kuò)展事件最佳實(shí)踐什么是擴(kuò)展事件(類比)出門上班這個(gè)過程1、出門(觸發(fā)事件1:鎖門)2、走到停車位,解鎖車(觸發(fā)事件2:用鑰匙開車門)3、啟動(dòng)車(觸發(fā)事件3:啟動(dòng)汽車)全局信息:時(shí)間鎖門事件信息:拿出鑰匙的位置、用的哪個(gè)鑰匙全局信息:時(shí)間解鎖車事件信息:停車位置全局信息:時(shí)間啟動(dòng)汽車事件:無TroubleShooting:我今天是否鎖門了?什么是擴(kuò)展事件 可擴(kuò)展、可高度定制化的事件處理系統(tǒng) 擴(kuò)展事件引擎寄存于sqlserver.exe 擴(kuò)展事件信息的消費(fèi)者可以在該進(jìn)程內(nèi),也可以是其他進(jìn)程 提供

2、了ETW消費(fèi)者,從而可以將SQL Server收集到的信息與Windows信息相結(jié)合 主要應(yīng)用場景 問題診斷&信息收集 審核什么是擴(kuò)展事件 在SQL Server 2008被引入 沒有UI支持! 捕捉結(jié)果為XML,解析需要使用Xquery! 支持的事件少,很多地方有BUG SQL Server 2012&2014增加了大量事件,提供了UI支持,修復(fù)了很多Bug,提供了對(duì)SQL Azure、AlwaysOn、PowerShell的支持。擴(kuò)展事件架構(gòu)擴(kuò)展事件引擎注冊(cè)的Packages和元數(shù)據(jù)EventActionTypesMapsTargetsPredicatesEventSessionEvent

3、sBuffersTargetsDispatcherPoolDispatcherDispatcherDispatcher擴(kuò)展事件架構(gòu)擴(kuò)展事件引擎EventActionTypesMapsTargetsPredicatesEventsBuffersTargets注冊(cè)的Packages和元數(shù)據(jù)sys.dm_xe_packagessys.dm_xe_objectssys.dm_xe_map_valuesEventSessionsys.dm_xe_sessionssys.dm_xe_session_eventsPoolsys.dm_xe_session_targetsPackage(包) Package在

4、運(yùn)行時(shí)由各自的Module載入 默認(rèn)的Package0由擴(kuò)展事件引擎裝載,其中包含與Module無關(guān)的通用對(duì)象 Package是對(duì)象和其定義的容器 不同Package中包含的對(duì)象可以交叉使用。Package示例: sqlservr.exe, sqlos.dllEvent(事件) 事件對(duì)應(yīng)代碼中的特定點(diǎn) 例:事務(wù)結(jié)束、發(fā)生死鎖事件本身包含基本的信息 某些事件可能會(huì)包含一些可選(自定義)列,這些列只有在指定時(shí)才會(huì)收集 事件總是返回所有非自定義列 所有的Trace都可以找到對(duì)應(yīng)匹配事件(http:/ 篩選器支持short-circuit評(píng)估篩選器結(jié)果為False會(huì)阻止事件發(fā)生篩選器表達(dá)式類似SQL,

5、可以是簡單的比較表達(dá)式,也可以更復(fù)雜的文本比較篩選器可以作用于事件列,也可以作用于全局列 當(dāng)篩選器作用于全局列時(shí),需要同步收集數(shù)據(jù)篩選器可以存儲(chǔ)狀態(tài)例: WHERE package0.divides_by_uint64(package0.counter,5)Predicates(篩選器)Action(操作)只有在篩選器結(jié)果為True時(shí),才會(huì)執(zhí)行操作(Action)在線程觸發(fā)事件時(shí),操作執(zhí)行一些額外的步驟操作可以收集額外的狀態(tài)數(shù)據(jù),并附加到事件上一些非收集信息的事件可以執(zhí)行操作類似Memory Dump之類的操作會(huì)產(chǎn)生副作用(DBA不應(yīng)該使用)任何事件都可以使用任何操作。Target(目標(biāo)) 目

6、標(biāo)是事件消費(fèi)者 處理單個(gè)事件或者緩沖區(qū)滿處理 存在同步或異步目標(biāo) 基本目標(biāo) Event File Ring Buffer 基于條件聚合目標(biāo)數(shù)據(jù)的目標(biāo) Event Bucketizer (提供直方圖) Event Counter Event Pairing (用于匹配事件)Target(目標(biāo))示例擴(kuò)展事件生命周期代碼中達(dá)到事件點(diǎn)事件是否激活創(chuàng)建事件負(fù)載篩選器評(píng)估是代碼繼續(xù)執(zhí)行同步目標(biāo)接收事件TrueFlase異步目標(biāo)接收事件默認(rèn)的系統(tǒng)Session預(yù)定義的Event Session收集常見問題的相關(guān)信息Severity20的錯(cuò)誤信息內(nèi)存錯(cuò)誤Non-yielding ProblemsDeadloc

7、ks15秒的latch30秒的lock搶占式等待或外部等待該Event Session的目標(biāo)是Ring BufferAlwaysOn_Health議程什么是擴(kuò)展事件為什么使用擴(kuò)展事件擴(kuò)展事件應(yīng)用示例擴(kuò)展事件最佳實(shí)踐擴(kuò)展事件Trace&Profiler為什么使用擴(kuò)展事件(1) 相比服務(wù)端跟蹤,開銷更低(見http:/ ) 擴(kuò)展事件框架可擴(kuò)展 任何事件產(chǎn)生的結(jié)果都可以由任意Cosumer使用 可以添加新的事件,立即可用 在事件觸發(fā)時(shí)允許采取Action(可以收集額外信息,甚至是采用操作) 豐富的過濾系統(tǒng) 允許更加強(qiáng)大的篩選操作 由于Trace已被標(biāo)記為過時(shí),所以不再會(huì)有任何新功能的開發(fā)。所以盡早轉(zhuǎn)

8、移到擴(kuò)展事件里(AlwaysOn相關(guān)事件就無法用Trace跟蹤,只能是用擴(kuò)展事件) 可以在Microsoft Azure SQL Database中使用擴(kuò)展事件為什么使用擴(kuò)展事件(2) 跟蹤所有SQL Server 2012和之后版本新功能的唯一方式! 我強(qiáng)調(diào)過Trace已經(jīng)過時(shí)了嗎?議程什么是擴(kuò)展事件為什么使用擴(kuò)展事件擴(kuò)展事件應(yīng)用示例擴(kuò)展事件最佳實(shí)踐DEMO:監(jiān)測消耗較高的SQL語句DEMO:PairMatching目標(biāo)的使用Pair_Matching目標(biāo) 特征 利用一個(gè)或多個(gè)數(shù)據(jù)列匹配兩個(gè)事件 如果兩個(gè)事件匹配,則丟棄事件 參數(shù) Max_Orphans-未匹配事件的FIFO列表,默認(rèn)值未1

9、0000 用于匹配的列或操作 當(dāng)面臨內(nèi)存壓力時(shí),停止跟蹤新的孤立事件記錄Timeout查詢記錄Timeout查詢DEMO:SpinLock(自旋鎖)性能調(diào)優(yōu)背景知識(shí)-什么是自旋鎖 鎖 鎖作用于事務(wù),用于保護(hù)不同用戶之間對(duì)數(shù)據(jù)的讀取和更改 栓鎖(Latch) 用于內(nèi)存結(jié)構(gòu)中的線程同步,生命周期只在代碼臨界區(qū)有效背景知識(shí)-什么是自旋鎖 SpinLock(自旋鎖) 自旋鎖用于同步線程對(duì)內(nèi)存結(jié)構(gòu)的訪問 線程不放棄CPU(無上下文切換,保持Running狀態(tài),也被稱為Busy waiting) 線程在獲得SpinLock之前,不會(huì)結(jié)束 主要用于保護(hù)非常繁忙的數(shù)據(jù)結(jié)構(gòu),持續(xù)時(shí)間通常較短 例:Lock_Ma

10、nager(Lock_Hash) 自旋鎖競爭癥狀 高CPU,但沒做實(shí)際工作 sys.dm_os_spinlock_stats中backoffs值高捕捉自旋鎖sqldk.dll!XeSosPkg:spinlock_backoff:Publish+0 x138sqldk.dll!SpinlockBase:Sleep+0 xc5sqlmin.dll!Spinlock:SpinToAcquireWithExponentialBackoff+0 x169sqlmin.dll!lck_lockInternal+0 x841sqlmin.dll!XactWorkspaceImp:GetSharedDBLoc

11、kFromLockManager+0 x18dsqlmin.dll!XactWorkspaceImp:GetDBLockLocal+0 x15bsqlmin.dll!XactWorkspaceImp:GetDBLock+0 x5asqlmin.dll!lockdb+0 x4asqlmin.dll!DBMgr:OpenDB+0 x1ecsqlmin.dll!sqlusedb+0 xebsqllang.dll!usedb+0 xb3sqllang.dll!LoginUseDbHelper:UseByMDDatabaseId+0 x93sqllang.dll!LoginUseDbHelper:FDe

12、termineSessionDb+0 x3e1sqllang.dll!FRedoLoginImpl+0 xa1bsqllang.dll!FRedoLogin+0 x1c1sqllang.dll!process_request+0 x3ecsqllang.dll!process_commands+0 x4a3sqldk.dll!SOS_Task:Param:Execute+0 x21esqldk.dll!SOS_Scheduler:RunTask+0 xa8sqldk.dll!SOS_Scheduler:ProcessTasks+0 x279sqldk.dll!SchedulerManager:WorkerEntryPoint+0 x24csqldk.dll!SystemThread:RunWorker+0 x8fsqldk.dll!SystemThreadDispatcher:ProcessWorker+0 x3absqldk.dll!SchedulerManager:ThreadEntryPoint+0 x226議程什么是擴(kuò)展事件為什么使用擴(kuò)展事件擴(kuò)展事件應(yīng)用示例擴(kuò)展事件最佳實(shí)踐擴(kuò)展事件最佳實(shí)踐目

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論