ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 《深入解析Oracle》第九章,等待事件

《深入解析Oracle》第九章,等待事件

原创 Linux操作系统 作者:louloueva 时间:2009-04-20 00:28:52 0 删除 编辑

进入倒数第二章,从题目来说,是个人比较生疏的章节
不过看过后,发现之前自学的过程中,已经接触不少了

等待事件,算是对于数据库性能优化极其重要的参考部分
Oracle的每个版本中所包含的等待事件数量各不相同
通过V$EVENT_NAME视图,可以查看当前版本所支持的等待事件名称和部分相关信息
而V$SYSTEM_WAIT_CLASS视图,提供了各种等待事件的等待次数和时间
以前自学过的V$SESSION视图可以和V$SESSION_WAIT视图相结合
来查找各个SESSION中各自的等待信息
(版本到了10g后,V$SESSION视图将V$SESSION_WAIT视图包含进来了)
还有V$SESSION_EVENT和V$SYSTEM_EVENT视图
分别记录SESSION和整个系统的各个等待的相关信息(累积的)
通过V$SESSIONI、V$SESSION、V$SQLTEXT视图
可以查找到某些极其消耗资源的SESSION的SQL语句

接下来,有几个10g开始增加的新功能,之前已经做过一些功课了
保留短期历史SESSION等待信息的V$SESSION_WAIT_HISTORY视图
根据此视图,Oracle增加了ASH特性(Active Session History)
用来定时收集SESSION等待的相关信息
而后还繁衍出AWR特性(Automatic Workload Repository)
再之后引出了ADDM特性(Automatic Database Diagnostic Monitor)
利用这些特性,可以有效分析数据库运行状态,并给出部分调整建议
个人用过一些篇幅进行过学习和试验,不再累述

文章还具体介绍了部分重要等待事件
db file sequential read,数据文件顺序读
数据库在读取索引或通过索引读取数据时会发生此等待
一般情况,此等待的出现是较正常的
但某些情况,走索引反而会带来性能损耗(如读取的数据量过大)
db file scattered read,数据文件分裂读
也是较常见等待事件之一,进程读取数据到Buffer Cache的时候,会出现此事件
通常意味着在进行全表扫描(Full Table Scan和Fast Full Scan)
direct path read/write,直接路径读/写
指Oracle将数据直接写入PGA进程或从PGA进程获取数据直接写入文件,不经过SGA
容易发生在磁盘排序、并行操作等情况中
还有日志相关等待,日志切换log file switch,日志同步log file sync
单独写日志log file single write,并发写日志log file parallel write
日志缓冲空间(不足)log Buffer Space
还有Enqueue等待,其中涉及了TM事务锁,TX表级锁,MR介质恢复锁,ST空加事务锁
表级锁中还有以前曾经接触过的几种排他、共享锁
另外还有Latch Free闩锁释放等待事件
Latch是Oracle内部简单的串行锁机制,用于保护Oracle内部的共享内存结构
Latch请求分两类
willing-to-wait,不断发送请求直至得到Latch
immediate,获取不到便会跳过,继续执行后面操作
对于锁的信息,可以查询V$LOCK、V$LATCH等视图查询

本章介绍的知识,对于优化数据库性能有着很重要的意义
这需要建立在一定实践经验之上
等有事件,先查看查看公司的开发服务器的运行情况
用来练练手 ^_^

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/556359/viewspace-590968/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-01-02

  • 博文量
    134
  • 访问量
    116307