- 浏览: 4370144 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (634)
- Oracle日常管理 (142)
- Oracle体系架构 (45)
- Oracle Tuning (52)
- Oracle故障诊断 (35)
- RAC/DG/OGG (64)
- Oracle11g New Features (48)
- DataWarehouse (15)
- SQL, PL/SQL (14)
- DB2日常管理 (9)
- Weblogic (11)
- Shell (19)
- AIX (12)
- Linux/Unix高可用性 (11)
- Linux/Unix日常管理 (66)
- Linux桌面应用 (37)
- Windows (2)
- 生活和工作 (13)
- 私人记事 (0)
- Python (9)
- CBO (15)
- Cognos (2)
- ORACLE 12c New Feature (2)
- PL/SQL (2)
- SQL (1)
- C++ (2)
- Hadoop大数据 (5)
- 机器学习 (3)
- 非技术 (1)
最新评论
-
di1984HIT:
xuexilee!!!
Oracle 11g R2 RAC高可用连接特性 – SCAN详解 -
aneyes123:
谢谢非常有用那
PL/SQL的存储过程和函数(原创) -
jcjcjc:
写的很详细
Oracle中Hint深入理解(原创) -
di1984HIT:
学习了,学习了
Linux NTP配置详解 (Network Time Protocol) -
avalonzst:
大写的赞..
AIX内存概述(原创)
Oracle 10g/11g Latch机制的变化:
前面曾经提到,Oracle的Latch机制采用spin来进行持有CPU的不断尝试,虽然通常Latch的获取会非常快(一般在微秒级),但是很多时候Latch竞争还是会引发极为严重的CPU争用。所以从Oracle 10g开始,Oracle尝试引入一种新的机制来代替传统的Latch机制,这就是Mutex机制,也就是互斥机制。和Latch相比,一个Mutex Get大约仅需要30~35个指令,而Latch Get则需要大约150~200个指令,同时在大小上,每个Mutex仅占大约16Bytes空间,而Latch在10gR2中要占用大约112Bytes空间。
在Oracle 10.2..0.1中一个新的参数_kks_use_mutex_pin被引入,不过缺省值为False:
sys@TQGZS> 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: kks
old 4: and x.ksppinm like '%&par%'
new 4: and x.ksppinm like '%kks%'
NAME VALUE DESCRIB
------------------------- --------------- --------------------------------------------------------
_kks_use_mutex_pin FALSE Turning on this will make KKS use mutex for cursor pins.
这意味着新的Mutex机制已经准备好了用于应付Cursor Pin处理。在Oracle 10gR2/11gR1随后的版本中,这个参数被设置为Ture:
sys@CCDB> select * from v$version where rownum < 2;
BANNER
----------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
sys@CCDB> @GetHidPar.sql
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机制首先被引入用于替代Library Cache Latch以及Library Cache Pin等机制。使用Mutex Pin机制Oracle能够使用更少的CPU资源获得更好的性能。由于Mutex Pin机制带来的Cursor管理上性能提升,所以曾经用来缓解Cursor Latch竞争的参数CURSOR_SPACE_FOR_TIME从Oracle 10.2.0.5和Oracle 11.1.0.7开始将不再被支持。
在Oracle 11.1.0.6中,以下是数据库中Library Cache相关的Latch与等待:
sys@CCDB> select * from v$version where rownum < 2;
BANNER
----------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
sys@CCDB> select name from v$latch where name like '%library%';
NAME
------------------------------
library cache load lock
sys@CCDB> select name from v$event_name where name like '%library%';
NAME
------------------------------
library cache pin
library cache lock
library cache load lock
library cache: mutex X
library cache: mutex S
OSD IPC library
library cache revalidation
library cache shutdown
8 rows selected.
在Oracle Database 11g中,和Mutex相关的数据库描述已经被引入,首先的变化是和Library Cache相关的Latch仅余library cache load lock:
sys@CCDB> select * from v$version where rownum < 2;
BANNER
----------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
sys@CCDB> select name from v$latch where name like '%library%';
NAME
------------------------------
library cache load lock
其次是等待事件引入了Library Cache:Mutex S/X等待,用以描述因为Mutex竞争而导致的Library Cache等待:
sys@CCDB> select name from v$event_name where name like '%library%';
NAME
------------------------------
library cache pin
library cache lock
library cache load lock
library cache: mutex X
library cache: mutex S
OSD IPC library
library cache revalidation
library cache shutdown
8 rows selected.
虽然在Oracle Database 11gR1中,这些变化已经可以清晰地看到,但是一些问题仍然存在,Oracle仍然在通过一系列不断努力和改进使得这些新的变化走向成熟。
当然Library Cache Latch在某些条件下仍然会被用到,Oracle数据库的很多内容还在不断变化中。关于Mutex的信息主要可以通过两个视图来查询:v$mutex_sleep和v$mutex_sleep_history。以下是一个Oracle 11g生产环境中的查询示范输出:
sys@CCDB> select SLEEP_TIMESTAMP,MUTEX_TYPE,GETS,SLEEPS,LOCATION,MUTEX_VALUE
2 from v$mutex_sleep_history where rownum <10;
SLEEP_TIMESTAMP MUTEX_TYPE GETS SLEEPS LOCATION MUTEX_VALUE
------------------------------ --------------- ---------- ---------- -------------------- ----------------
11-MAY-10 08.46.15.176426 PM Cursor Pin 20439381 80 kksfbc [KKSCHLPIN1] 00
13-MAY-10 04.01.19.066757 PM Library Cache 39098 113171 kglhdgn1 62 0000021E00000000
13-MAY-10 04.50.40.279082 PM Library Cache 172560 1384786 kgllkdl1 85 00
06-MAY-10 09.34.57.393852 PM Library Cache 76718 43 kgllkdl1 85 000001CC00000000
06-MAY-10 10.24.47.734523 PM Library Cache 103771 383024 kglhdgn1 62 0000031B00000000
13-MAY-10 04.50.40.328295 PM Library Cache 150176 46662 kgllkdl1 85 000001C200000000
13-MAY-10 04.50.40.291834 PM Library Cache 208155 45 kgllkdl1 85 00
09-MAY-10 01.00.03.163520 AM Library Cache 155 1 kglhdgn1 62 00
07-MAY-10 03.33.35.071512 PM Library Cache 2933 5 kgllkdl1 85 0000029700000000
9 rows selected.
- The End -
参考至:http://www.dbtan.com/2010/05/oracle-10g11g-latch.html
如有错误,欢迎指正
邮箱:czmcj@163.com
发表评论
-
Oracle 锁与锁争用
2015-05-08 02:13 4085大多数的锁都是行级 ... -
Oracle SQL Parsing
2014-07-30 22:24 1904Stages of SQL Processing Fig ... -
Oracle 11g中的direct path read(原创)
2014-06-16 23:01 5712在11g中,全表扫描可能使用direct path rea ... -
深入解析direct path read
2014-06-16 22:35 2524传统读取数据的 ... -
ORA-01555和延迟块清除
2014-06-16 21:13 201001555, 00000, "snapshot t ... -
Oracle(block clean out)的块清除
2014-06-16 21:09 1243Oracle(block clean out)的块清除Cl ... -
SCN之fast cleanout
2014-06-07 16:13 1697SQL> select dbms_rowid.row ... -
SCN之delayed block cleanout
2014-06-07 16:09 1154Block的cache header部分 ... -
Oracle rman change tracking CTWR(原创)
2014-04-25 11:10 2933block change tracking介绍Block c ... -
SSM自动段空间管理 简介
2014-03-27 19:46 1313因为ASSM的官方文档很少,经过多次的查证之后,终于弄明白了 ... -
undo表空间相关(原创)
2014-03-25 21:48 2075DML语句与undo ... -
Bitmap Index vs B-tree Index(原创)
2014-03-08 21:09 1485Introduction Conventional wi ... -
bitmap索引的深入研究
2014-03-08 14:59 1405位图(bitmap)索引是另外一种索引类型,它的组织形式与 ... -
ASM内部原理(原创)
2012-12-24 21:55 9883ASM的SGA组成 ASM实例 ... -
ASM的元数据(原创)
2012-12-18 21:16 3030概述 ASM Filesystem是建立在ASM D ... -
Oracle数据块深入分析总结
2012-04-23 12:51 7856最近在研究块的内部结构,把文档简单整理了一下,和大家分享一下。 ... -
深入理解重建索引(原创)
2012-04-10 16:58 20734什么时候需要重建索引 ... -
Oracle中B-TREE索引的深入理解(原创)
2012-04-09 20:59 15853索引概述 索引与表一样,也属于段(segment)的 ... -
深入理解Oracle中的latch(原创)
2012-04-04 18:17 11095串行化 概述 串行化 - 数据库系统本 ... -
深究Oracle中的锁之锁管理经验总结
2012-03-29 23:37 0锁的申请与释放 锁的申请: 1.使用hash算法将 ...
相关推荐
- latch是一种Oracle低级别的内存保护机制,用于序列化对于非常短时间的内存结构的并发访问。 - latch是一种简单的内存结构。 - latch的大小通常在100-200B左右(取决于Oracle的版本和Oracle运行的平台)。 - latch...
8.2 并行处理的机制 189 8.3 读懂一个并行处理的执行计划 191 8.4 一个很常见的并行执行等待事件 192 8.5 并行执行的适用范围 194 8.5.1 并行查询 194 8.5.2 并行ddl操作 195 8.5.3 并行dml操作 203 8.6 并行执行的...
Oracle中的Latch和Lock.pdf
Oracle性能诊断之——Latch free
主要内容:收集性能数据、优化SQL语句和应用程序、调整共享池(Shared Pool)的性能、调整缓冲区高速缓存(Buffer Cache)的性能、调整重做有关的性能、共享(多线程)服务器(MTS)、调整磁盘I/O的性能、调整闩(latch)和...
Latch free等待事件 Latch和lock的异同
第1章 引起数据库性能问题的因素 第2章 锁和阻塞 第3章 Latch和等待
8.2 并行处理的机制 189 8.3 读懂一个并行处理的执行计划 191 8.4 一个很常见的并行执行等待事件 192 8.5 并行执行的适用范围 194 8.5.1 并行查询 194 8.5.2 并行ddl操作 195 8.5.3 并行dml操作 203 8.6 并行执行的...
Oracle Latch Contention
oracle动态性能表oracle动态性能表oracle动态性能表
oracle latch描述以及使用
主要内容:收集性能数据、优化SQL语句和应用程序、调整共享池(Shared Pool)的性能、调整缓冲区高速缓存(Buffer Cache)的性能、调整重做有关的性能、共享(多线程)服务器(MTS)、调整磁盘I/O的性能、调整闩(latch)和...
9.5.7 Oracle 10g/11g Latch机制的变化 467 第10章 性能诊断与SQL优化 471 10.1 使用AUTOTRACE功能辅助SQL优化 471 10.1.1 AUTOTRACE功能的启用 471 10.1.2 Oracle 10g AUTOTRACE功能的增强 473 10.1.3 ...
等待事件row cache lock,latch row cache objects处理过程
以下是对Oracle中Lock与Latch的相同点以及不同点进行了详细的分析介绍,需要的朋友参考下
8.8 Oracle 11g UNDO表空间备份增强 8.9 回滚机制的深入研究 8.10 Oracle 9i闪回查询的新特性 8.11 使用ERRORSTACK进行错误跟踪 8.12 Oracle 10g闪回查询特性的增强 8.13 ORA-01555成因...
8.8 Oracle 11g UNDO表空间备份增强 8.9 回滚机制的深入研究 8.10 Oracle 9i闪回查询的新特性 8.11 使用ERRORSTACK进行错误跟踪 8.12 Oracle 10g闪回查询特性的增强 8.13 ORA-01555成因...
8.8 Oracle 11g UNDO表空间备份增强 8.9 回滚机制的深入研究 8.10 Oracle 9i闪回查询的新特性 8.11 使用ERRORSTACK进行错误跟踪 8.12 Oracle 10g闪回查询特性的增强 8.13 ORA-01555成因...
确定系统慢的原因: select * from v$session_wait where event != 'client message' and event not like '%NET%' and wait_time = 0 and sid > 5;