第 9 章 等待事件
很长时间以来,通过什么样的手段来衡量数据库的状况,发现数据库的问题,优化数据库
的性能一直是人们广为争论的话题。从 Oracle 7.0.12 开始,Oracle 引入了等待事件,随即等待
事件成为了数据库性能优化的一个重要指导。
当一个进程连接到数据库之后,进程所经历的种种等待就开始被记录,并 且 通 过 一 系 列 的
动态性能视图进行展现。通过等待事件用户可以很快地发现数据库的性能瓶颈,从而进行针对
性优化和分析。本章将着重介绍等待事件在 Oracle 研究及优化过程中的作用。
9.1 等待事件的源起
等待事件的概念是在 Oracle 7.0.12 中引入的,大致有 100 个等待事件。在 Oracle 9.0 中这
个数目增加到了大约 150 个,在 Oracle 8i 中大约有 220 个事件,在 Oracle 9iR2 中大约有 400
个等待事件,在 Oracle 10gR2 中大约有 874 个等待事件,而在最近的 Oracle 11gR1 中,等待
事件的数目已经接近了 1000 个。
虽然不同的版本和组件安装可能会有不同数目的等待事件,但是这些等待事件都可以通
过查询 V$EVENT_NAME 视图获得:
SQL> select * from v$version where rownum <2;
BANNER
--------------------------------------------------------------------------
------
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
SQL> select count(*) from v$event_name;
COUNT(*)
----------
961
研究 Oracle 的等待事件,V$EVENT_NAME 视图是一个很好的开始,这个视图记录着当
前数据库支持的等待事件及其基本信息。
Oracle 的等待事件,主要可以分为两类,即空闲(idle)等待事件和非空闲(non-idle)等
待事件。空闲事件指 Oracle 正等待某种工作,在诊断和优化数据库的时候,我们不用过多注
意这部分事件。非空闲等待事件专门针对 Oracle 的活动,指数据库任务或应用运行过程中发
生的等待,这些等待事件是我们在调整数据库的时候应该关注与研究的。
在 Oracle 10g 之前,Oracle 的 Statspack 会创建一个视图 stats$idle_event 记录空闲等待事
评论