当前位置: 首页 > 图文教程 > 数据库 > Oracle > Oracle10gR2上遇到了Mutex竞争的问题

Oracle
Oracle数据库技术(32)
Oracle数据库技术(33)
Oracle数据库技术(34)
Oracle数据库技术(35)
Oracle数据库技术(36)
Oracle数据安全面面观
Oracle数据操作和控制语言详解
Oracle数据库数据对象分析
解析Oracle 8i/9i的计划稳定性
使用Oracle实现实时通信
Oracle数据库中索引的维护
Oracle数据库游标使用大全
Oracle9i中监视索引的使用
在Oracle9i中使用多种Block Size
监控Oracle数据库的常用shell脚本
Performance Improvement Tips for Oracle on UNIX
Raw Partitions and Windows NT
How to use OS commands to diagnose Database Performance issues?
Raw Devices and Oracle - 20 Common Questions and Answers
Monitor Oracle Resource Consumption in UNIX

Oracle10gR2上遇到了Mutex竞争的问题


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-30   浏览: 83 ::
收藏到网摘: n/a

最近有客户在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版本中被修正。