Oracle數據庫性能優(yōu)化實務-閂鎖及閂鎖優(yōu)化_第1頁
Oracle數據庫性能優(yōu)化實務-閂鎖及閂鎖優(yōu)化_第2頁
Oracle數據庫性能優(yōu)化實務-閂鎖及閂鎖優(yōu)化_第3頁
Oracle數據庫性能優(yōu)化實務-閂鎖及閂鎖優(yōu)化_第4頁
Oracle數據庫性能優(yōu)化實務-閂鎖及閂鎖優(yōu)化_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

付費下載

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

Oracle數據庫性能優(yōu)化實務

第四講:閂鎖及閂鎖優(yōu)化主講人:白鱔Oracle的鎖第2頁應用級鎖:應用中對表等資源進行鎖定,保證業(yè)務邏輯正確性數據字典鎖:OracleRDBMS內核程序員使用的用來保證數據字典訪問邏輯正確性的鎖內存控制鎖:用來保護Oracle內部數據結構的鎖(LATCH,MUTEX)應用程序的鎖第3頁應用程序鎖的優(yōu)化取決于應用軟件編寫人員使用v$lock可以觀察鎖的情況(TM,TX)?/rdbms/admin/catblock.sql使用dba_waiters,dba_blockers來查找阻塞數據字典的鎖第4頁OracleRDBMS也是一個“程序”,需要通過鎖機制來保證程序的邏輯比如創(chuàng)建一張表要插入sys.tab$和sys.obj$等數據字典表類似這些操作也會在v$lock看到鎖的名字是特殊的管理共享內存的鎖Oracle的內存結構也必須進行同步互斥保護Oracle通過對訪問核心內存結構的代碼的執(zhí)行進行控制來達到間接的保護核心內存的目的每個LATCH都涉及到特定的內核代碼要執(zhí)行某個代碼,必須先獲得相應的LATCHOracle通過上述過程,可以保證核心內存訪問的高效性和一致性什么是閂鎖Latch可以保證Oracle串行訪問核心內存Latch必須十分高效Latch通過簡單的底層的技術實現,盡可能使用操作系統(tǒng)的底層技術Latch的申請不通過隊列機制閂鎖的使用Ifget_latch(‘latchname’,mode){--執(zhí)行某段內核代碼

release(‘latchname’);}MUTLI-LATCHOracle對特定的內核內存只使用一個LATCH來保護如果某些內核內存太大,Oracle會分為一些子區(qū)域,每個子區(qū)域由一個LATCH來管理,比如:多個相同功能的LRULATCH用來保護多條LRU鏈多個HASHLATCH來保護多條HASH鏈一個LATCH可以保護多個內核內存區(qū)域,但是一個內核內存區(qū)域只有一個LATCHLATCH的模擬算法FunctionGet_Latch(latch_name,mode){IfModeeq‘immediate’{IfFast_Get(latch_name){returnTRUEElse{returnFALSE}}Else{IfFast_Get(latch_name){returnTRUE}Else{while(1==1){ifSpin_Get(latch_name){returnTRUE}Else{Register_Event(“l(fā)atch:$latch”)Sleep(try++)}}}}}FunctionFast_Get(latch_name){Iftry_to_get_latch(latch_name){returnTRUE}Else{returnFALSE}}FunctionSpin_Get(latch_name){fori=1to_spin_count{IfFast_Get(latch_name){returnTRUE}}}FunctionSleep(try){sleeptime=decode(try,0,0,1,10,2,20,3,~40,4,~80,...~2000)sleep(sleeptime)}LATCH相關的時間開銷三個方面消耗的時間:獲取LATCH的時間(SPIN:CPU時間,SLEEP等)持有LATCH的時間(內核代碼:cpu時間,OS調用,鎖等待)LATCH釋放的時間(內核代碼:cpu時間)注意的要點:spin消耗CPU資源,因此提高_spin_count會加大CPU開銷spin不產生等待事件sleep不消耗cpu時間,會記錄latchfree等待調整_SPIN_COUNT調整_SPIN_COUNT是十分危險的動作Oracle9iR2開始支持按照CLASS分類設置_spin_count找到閂鎖:selectlatch#fromv$latchnamewherename='cachebufferschains';altersystemset"_latch_classes"="98:0"scope=spfile;altersystemset"_latch_class_0"=1800scope=spfile;閂鎖使用的例子操作閂鎖等待其他等待CPU時間說明讀取(10/2512)get_latch('cachebufferchains'):spin1獲得閂鎖以便于查找數據搜索bufferchain5查找所需數據db_file_sequential_read等待5正常的IO時間get_latch('cachebufferlruchains'):spin10獲取閂鎖get_latch('cachebufferlruchains'):sleep10獲取不到,休眠get_latch('cachebufferlruchains'):spin10繼續(xù)獲取get_latch('cachebufferlruchains'):sleep20再次休眠get_latch('cachebufferlruchains'):spin5獲取到閂鎖查找可用DBBUFFER3寫入數據1get_latch('cachebufferchains'):spin2獲取閂鎖以便將cache鏈入30537如何發(fā)現閂鎖等待v$session_wait,v$latch,v$latch_children等視圖Statspack報告/AWR報告:最好的工具OEMperformancemanagerdbconsole/ADDM第三方腳本或工具LATCH分析的主要思路理解LATCH的基本原理和算法發(fā)現LATCHFREE問題找出存在嚴重沖突的LATCH找出存在問題的LATCH相關的內核對象分析為什么該閂鎖請求那么高,為什么等待時間那么長綜合系統(tǒng)和應用情況提出優(yōu)化建議一種特殊的閂鎖-MUTEX從Oracle10.2開始使用Mutex來實現部分內存的保護10.2.0.2開始CURSOR操作中替代librarycache,librarycachpinMutex用來保護內存的訪問,保證內存訪問的串行性和LATCH不同,一個Mutex只保護一塊內存比LATCH開銷更小LATCH:150-200條指令MUTEX:35-40條指令對于需要保護一組內存的情況,LATCH效率更高MUTEX也支持OWI在不支持CAS的平臺上慎用MUTEXLATCH設置_kks_use_mutex_pin比如HP-UXPA-RISCSTATSPACK/AWR報告Statspack/AWR報告是最好的LATCH問題分析工具LatchActivityforDBLatchSleepbreakdownforDBLatchMissSourcesforDBChildLatchStatisticsDB閂鎖總體情況閂鎖休眠情況分解閂鎖問題源分析子閂鎖情況共享池相關的閂鎖共享池相關LATCH一般和共享池不足或者分析過于頻繁有關如果共享池命中率不高或者共享池使用率接近于100%使用,需要加大共享池共享池碎片問題也會加大閂鎖競爭sharedpoollibrarycachelibrarycachepinrowcacheobjectsrowcacheenqueuelatchDBCACHE相關閂鎖和LRUCHAINS或者HASHCHAINS相關cachebufferhandlescachebufferschainscachebufferslruchainmultiblockreadobjectsREDOLOG相關閂鎖REDOLOG相關閂鎖競爭一般由于以下原因:LOGBUFFER太小過于頻繁的COMMITREDOLOG的IO性能不佳LOGSWITCH過于頻繁歸檔出現問題或者歸檔過慢主要閂鎖RedoCopyRedo

allocation:9.2:LOG_PARALLELISM10G:_log_parallelism_maxRedowritingredoon-diskSCNSimulatorlrulatch與BUGBUG2452409/BUG5918642simulatorlrulatch閂鎖爭用十分高CPU使用率很高DBCACHE較大,并且訪問負載較大影響多個版本9.2.0.510.1.0.210.2.0.311.1.0.6解決方案9.2,10.1:STATISTICS_LEVEL=BASIC10.2:db_cache_advice=OFF其他閂鎖archivecontrol:和歸檔目錄有關processallocation:和進程狀態(tài)修改有關,在短連接的系統(tǒng)中可能存在競爭sessionallocation:和SESSION信息修改有關sortextentpool:和硬盤排序有關childcursorhashtable:和SQL分析以及CURSORVERSION有關enqueuehashchains和鎖的管理有關modifyparametersvalues:動態(tài)調整參數有關parallelqueryallocbuffer,parallelquerystats:和并行查詢有關GES*:和全局鎖有關GCS*:和全局CACHE有關案例分析-現象CPU使用率突然增加系統(tǒng)變得十分緩慢procsmemorypagefaultscpurbwavmfreereatpipofrdesrinsycsussyid1763014389672355278713000008080510506161404561763014389672335712102500000106059463213381946014010145331423436315320000001094993765137589370140101453314231984107900000125341023721593792801401014533142320065540000013046105209171229370

案例分析-TOPEVENTSTop5TimedEvents~~~~~~~~~~~~~~~~~~%TotalEventWaitsTime(s)ElaTime

latchfree951,180467,35673.70CPUtime53,5598.45dbfilesequentialread9,592,36953,0128.36enqueue10,75129,5804.66dbfilescatteredread2,154,81918,0012.84

平均每次閂鎖等待時間高達481毫秒案例分析:閂鎖情況PctAvgWaitPctGetGetSlpsTimeNoWaitNoWaitLatchRequestsMiss/Miss(s)RequestsMiss

cachebufferhandles4,020,9300.10.21750cachebufferschains1,453,078,2270.10.4######58,923,93915.9cachebufferslruchain1,258,1110.60.245862,163,5503.0案例-子閂鎖情況案例分析:分析結論及采取措施故障原因應用對幾張熱

溫馨提示

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

評論

0/150

提交評論