oracle性能调整的九大要点:四诊断latch竞争
??? Latch是簡(jiǎn)單的、低層次的序列化技術(shù),用以保護(hù)SGA中的共享數(shù)據(jù)結(jié)構(gòu),比如并發(fā)用戶(hù)列表和buffer cache里的blocks信息。一個(gè)服務(wù)器進(jìn)程或后臺(tái)進(jìn)程在開(kāi)始操作或?qū)ふ乙粋€(gè)共享數(shù)據(jù)結(jié)構(gòu)之前必須獲得對(duì)應(yīng)的latch,在完成以后釋放latch。不必對(duì)latch本身進(jìn)行優(yōu)化,如果latch存在競(jìng)爭(zhēng),表明SGA的一部分正在經(jīng)歷不正常的資源使用。
??? 1)Latch的作用:
??? A、序列化訪(fǎng)問(wèn):保護(hù)SGA中的共享數(shù)據(jù)結(jié)構(gòu);保護(hù)共享內(nèi)存的分配。
??? B、序列化執(zhí)行:避免同時(shí)執(zhí)行某些關(guān)鍵代碼;避免互相干擾。
??? 2)Latch請(qǐng)求的兩種類(lèi)型:
??? A、willing-to-wait:請(qǐng)求的進(jìn)程經(jīng)過(guò)短時(shí)間的等待后再次發(fā)出請(qǐng)求,直到獲得latch
??? B、immediate:如果沒(méi)有獲得latch,請(qǐng)求的進(jìn)程不等待,而是繼續(xù)處理其他指令。
??? 2、檢查L(zhǎng)atch競(jìng)爭(zhēng)
??? 檢查latch free是不是主要的wait event:
??? Select * from v$system_event order by time_waited;
??? 檢查latch的使用情況:
??? Select * from v$latch:
??? 與willing-to-wait請(qǐng)求有關(guān)的列:gets、misses、sleeps、wait_time、cwait_time、spin_gets
??? 與immediate請(qǐng)求有關(guān)的列:immediate_gets、immediate_misses
??? Gets: number of successful willing-to-wait requests for a latch;
??? Misses: number of times an initial wiling-to-wait request was unsuccessful;
??? Sleeps: number of times a process waited after an initial willing-to-wait request;
??? Wait_time: number of milliseconds waited after willing-to-wait request;
??? Cwait_time: a measure of the cumulative wait time including the time spent spinning and sleeping,the overhead of context switches due to OS time slicing and page faults and interrupts;
??? Spin_gets: gets that misses first try but succeed after spinning.
??? Immediate_gets: number of successful immediate requests for each latch;
??? Immediate_misss: number of unsuccessful immediate requests for each latch;
??? 一般無(wú)需調(diào)整latch,但是下列的措施是有用的:
??? A、對(duì)處于競(jìng)爭(zhēng)中的latch做進(jìn)一步的調(diào)查
??? B、如果競(jìng)爭(zhēng)主要存在于shared pool和library cache中,可以考慮調(diào)整應(yīng)用
??? C、如果進(jìn)一步的調(diào)查顯示需要調(diào)整shared pool和buffer cache,就進(jìn)行調(diào)整
??? Select * from v$latch where name like ‘%shared pool%’ or name like ‘%library cache%’;
??? 如果競(jìng)爭(zhēng)是在shared pool或library cache上,表示下列集中情況:
??? A、不能共享的sql,應(yīng)檢查他們是否相似,考慮以變量代替sql中的常量:
??? Select sql_text from v$sqlarea where executions=1 order by upper(sql_text);
??? B、共享sql被重新編譯,考慮library cache的大小是否需要調(diào)整:
??? SELECT sql_text,parse_calls,executions FROM v$sqlarea where parse_calls>5;
??? C、library cache不夠大。
轉(zhuǎn)載于:https://www.cnblogs.com/zndavid/archive/2009/04/08/1431848.html
總結(jié)
以上是生活随笔為你收集整理的oracle性能调整的九大要点:四诊断latch竞争的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 得到Raster的一些基本信息(高程值,
- 下一篇: Asp.net動態添加控件(转)