<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    gdufo

     

    Diagnosing Contention for Latches

     

    1、對于閂(Latches)的概覽
    Latches
    是為了保護SGA中的共享數據結構而創建的簡單的底層的序列化機制,是輕量級的鎖。server或后臺進程為了操作或是查看共享數據結構必 須先申請Latches,當操作結束,需要釋放LatchesLatches的爭用是不用tuning的,它是不合理使用SGA資源的征兆,需要 tuning內部的爭用。僅僅是觀察v$LATCH是不足的,但可以將其看做是診斷工具,查找SGA資源爭用的位置。
    1
    Latches的目的:
    控制序列化訪問:保護SGA中的數據結構;保護共享內存的分配。
    序列化執行某些操作:避免同時執行某些關鍵的臨界code;避免corruptions
    2
    )等待Latch
    盡管latch的實現根據不同的OS和平臺而不同,但是其都是內存中的一塊地址空間,當latch空閑時是0,已經被申請了時為非0值。
    在單cpu中,當進程p1申請的latch被占用,p1將釋放cpusleep一小段時間,等待latch被釋放。
    在多cpu中,如果進程p1申請的latchp2占用,很可能p2在其他的cpu上,則p1不會釋放cpu,而是spin計數,重試,spin計數,重試,直到重試次數達到設置數,仍未成功,才會釋放cpu,但這種可能比較小。
    3
    Latch的請求類型:
    latch
    的請求方式有兩類:willing-to-waitimmediate
    willing-to-wait
    :當進程申請一個latch時,如果當前latch已經被占用,該進程會等待片刻再重試,等待-重試,直到獲得latch,這是一般普遍的latch申請方式。
    immediate
    :如果進程申請的latch不能獲得,該進程會繼續執行后續的指令。
    4
    latch 沖突:latch的申請釋放都是Oracle自動實現的,所以速度比較快。latch的資源是有限的。
    在診斷latch時,可利用視圖v$latch,該視圖中主要columns的意義:
    • gets: Number of successful willing-to-wait requests for a latch
    • misses: Number of times an initial willing-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 missed first try but succeeded after spinning
    • immediate_gets: Number of successful immediate requests for each latch.
    • immediate_misses: Number of unsuccessful immediate requests for each latch.
    在使用statspack是,可先查看其reporttop 5 wait events部分,是否有latch free事件,如果有再進行后續的分析。

    2、降低Latches的沖突
    一般,DBA不應該調節latches的數目,自9i以來,Oracle已經可以自己進行latches數量的調節了,這主要是根據DB在建立時設置的初始參數和OS的環境。
    latches
    的沖突是性能問題的表現。最好的解決latches沖突問題的方法是修改application行為。此外,如果觀察到是buffershared poolsize的問題,也需要進行適當的修改。

    3、對DBA而言,幾個重要的latches
    1
    shared pool latchlibrary cache latch:如果沖突出現在這兩類latch上,則表示sql或是pl/sql命令沒有被有效重用,可能是沒有有效的使用綁定變量,或是cursor cache不足。如果是Oracle Shared server模式,如果沒有設置large pool,也可能導致Shared pool Latch的沖突,則需要考慮設置large pool
    2
    cache buffer lru chain latch:當dirty blocks被寫入diskserver進程查找blocks用于寫入操作時會requestlatch。如果它存在較大沖突,則表示buffer cache任務繁重,可能存在較多的cache-based sorts、低效的SQL(使用了不正確的迭代索引)或是較多的全表掃描。此外,也可能是由于DBWn的寫速度跟不上data blocks的變化速度。使得訪問進程不得不為了找到buffer中的free blocks等待。對這個latch的沖突,應該從buffer cacheDBWn的調節入手。
    3
    cache buffers chains latch:當user進程試圖分配buffer cache中的data blocks時,需要申請此latch。它的沖突反映了某些熱塊被重復訪問的情況。

    4、共享池和library cache latch沖突:如上所述,此類沖突的一個主要原因是不必要的解析。其調節方法已經在之前介紹過了。
    1
    )辨識因為拼寫方式而造成的多次解析:
    select sql_text from v$sqlarea where executions=1 order by upper(sql_text);
    2
    )查看是否有不必要的重復解析。
    select sql_text, parse_calls, executions from v$sqlarea order by parse_calls;

     

    posted on 2010-01-12 12:31 gdufo 閱讀(479) 評論(0)  編輯  收藏 所屬分類: Database (oracle, sqlser,MYSQL)

    導航

    統計

    常用鏈接

    留言簿(6)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    收藏夾

    Hibernate

    友情鏈接

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 999久久久免费精品播放| 中中文字幕亚洲无线码| gogo免费在线观看| 日韩免费三级电影| 亚洲狠狠婷婷综合久久| 免费无码看av的网站| 亚洲丶国产丶欧美一区二区三区| 成人人观看的免费毛片| 亚洲国产成人久久精品大牛影视| 午夜a级成人免费毛片| MM1313亚洲国产精品| 亚洲va在线va天堂va不卡下载 | 成年午夜视频免费观看视频| 亚洲AV无码乱码麻豆精品国产| 毛片a级毛片免费播放下载| 亚洲欧洲AV无码专区| 国产一卡二卡≡卡四卡免费乱码| 深夜福利在线免费观看| 伊伊人成亚洲综合人网7777| A毛片毛片看免费| 精品亚洲成AV人在线观看| 中国在线观看免费国语版| 亚洲精品无码久久久久APP | 岛国av无码免费无禁网站| 亚洲精品无码人妻无码| 久久影院亚洲一区| 亚洲av无码片在线观看| 免费无码精品黄AV电影| 理论片在线观看免费| 1024免费福利永久观看网站| 国产亚洲色视频在线| 美丽姑娘免费观看在线观看中文版 | 国产亚洲视频在线观看| 亚洲精品午夜无码专区| 一级毛片成人免费看免费不卡 | 亚洲日本在线观看网址| 精品免费国产一区二区三区| 巨胸狂喷奶水视频www网站免费| 免费观看午夜在线欧差毛片| 国产在线观看xxxx免费| 亚洲高清有码中文字|