首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

等候的性能诊断SQL

2012-09-12 
等待的性能诊断SQL等待事件(wait event)是oracle核心代码的一个命名部分,有两种类型的等待事件:空闲事件(i

等待的性能诊断SQL

等待事件(wait event)是oracle核心代码的一个命名部分,有两种类型的等待事件:空闲事件(idle event)与非空闲事件(non-idle event),空闲事件指oracle正在等待某种工作,常见的空闲等待事件:client message、null event、pipe get、pmon/smon timer、rdbms rpc message及sql*net等;非空闲等待事件:buffer busy waits、db file scattered read、db file sequential read、enqueue、free buffer waits、latch free、log file sync、log file paralle write等。
什么是瓶颈?一旦熟悉了系统的等待事件,就能够把握问题的关键,并能够用相应的方法去处理阻塞系统的瓶颈,一定不要随意的进行优化,否则一波不息一波又起,可以通过v$system_event获取系统总的等待情况,然后通过v$session_event查看系统中session的等待情况,最后通过v$session_wait定位瓶颈对象。v$session_wait是会话级的,它包含session的实时信息,最重要的是:它显示了等待事件与相应资源的更深入信息,可确定出产生瓶颈的类型及其对象。
v$session_wait的p1、p2、p3告诉我们等待事件的具体含义,如果wait event是db file scattered read,p1=file_id/p2=block_id/p3=blocks,然后通过dba_extents即可确定出热点对象;如果是latch free的话,p2为闩锁号,它指向v$latch。


--求等待事件及其对应的latch

select sql_textfrom v$sqltext_with_newlines st,v$session sewhere st.address=se.sql_address and st.hashvalue=se.sql_hash_valueand se.sid =&wait_sid order by piece;
?

?


通过等待事件找出系统中消耗资源较严重的sql,是dba进行系统诊断的手段之一。只是过程稍嫌烦琐,由于session是动态的、瞬息万变、不可捕获,当你想捕获时,该session可能已经释放,但这种捕获很有针对性;也可以通过对v$sql或v$sqlarea进行过滤,找出存在性能问题的sql,长时间地对v$sql进行监控,并对捕获的sql进行优化处理,可以在很大程度上解决系统的性能问题。

热点排行