程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> 更多數據庫知識 >> Oracle10gR2上遇到了Mutex競爭的問題

Oracle10gR2上遇到了Mutex競爭的問題

編輯:更多數據庫知識

最近有客戶在Oracle10gR2上遇到了Mutex競爭的問題。

  Mutex是Oracle在Oracle10g中引入的串行機制,逐漸會用來替代一些存在性能問題的Latch.和Latch相比,一個Mutex Get大約僅需要30~35個指令,而Latch Get則需要大約150~200個指令,同時在大小上,每個Mutex僅占用大約16 Bytes空間,而一個latch在10gR2中要占用大約112 Bytes空間。

  Mutex首先替代了Library Cache Latch以及Library Cache Pin,在Oracle 10.2.0.2上通過隱含參數_kks_use_mutex_pin的調整可以限制是否使用Mutex機制來實現Cursor Pin:


  SQL> set linesize 120
  SQL> col name for a30
  SQL> col value for a20
  SQL> col describ for a60
  SQL> SELECT x.ksppinm NAME, y.ksppstvl VALUE, x.ksppdesc describ
  2 FROM SYS.x$ksppi x, SYS.x$ksppcv y
  3 WHERE x.indx = y.indx
  4 AND x.ksppinm LIKE '%&par%'
  5 /
  Enter value for par: mutex
  old 4: AND x.ksppinm LIKE '%&par%'
  new 4: AND x.ksppinm LIKE '%mutex%'
  NAME VALUE DESCRIB
  ------------------------------ -------------------- ------------------------------------------------------------
  _kks_use_mutex_pin TRUE Turning on this will make KKS use mutex for cursor pins.

  在新的Mutex Pins機制下,以下等待事件可能變得常見:


  cursor: mutex S
  cursor: mutex X
  cursor: pin S
  cursor: pin S wait on X
  cursor: pin X

  由於Mutex使用CAS(Compare and Swap)機制,所以在不支持CAS的HP Unix平台上就可能出現CPU消耗過高的情況。

  這作為一個Bug在10.2.0.4版本中被修正。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved