Oracle效能測量體系(Parse Time)續

sunsapollos發表於2013-11-05
  
       Parse Time:= Parse CPU Time + Queue Wait Time

      Parse階段幾乎所有操作都在shared pool內進行操作,主要的Queue Wait time包含以下幾種:
      library cache latch|library cache: mutex
      shared pool latch
     row cache objects latch
     library cache pin|cursor pin:mutex
    以及相對少些的library cache lock和library cache load lock
    
   10g之前可以通過v$session_event和v$system_event從對應事件中獲得Queue Time
   10g之後v$latch直接記載了wait_time,那種方式獲得的Queue Time更加準確,還需要測試。

   對於mutex,則在v$mutext_sleep_history中包含了wait_time,可以完成和v$latch一樣的衡量。

   對於parse階段,一個比較重要的問題就是關於spin gets,也就是高速等待gets消耗或者自旋等待,spin gets並不釋放CPU資源,我們平常所說的大量的latch free事件會導致CPU資源消耗很高就指的是spin gets消耗。spin gets的消耗記錄在Parse CPU Time中,而不是在QUeue Wait Time。
   
    很多人可以對於大量的latch free事件會選擇採用增加spin gets來降低latch free事件的消耗,從而提高效能。基本而言,這是個誤會,因為等待時間轉化到了cpu time中去,可能並沒有降低parse的響應時間。但是如果你的系統CPU資源比較廉價,也就是大量空閒,增加spin 次數也是一個選擇項,以大量的資源消耗換取響應時間。當然,誰都知道,高資源消耗無法完成高併發性的需求。
    事實上,latch misses和latch sleep的比例以及CPU開銷是否廉價是否我們決定是否增加或者減少spin次數的衡量因素。

   

   
    

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/92650/viewspace-775758/,如需轉載,請註明出處,否則將追究法律責任。

相關文章