你是指从数据库的报告里看到的等待吧?
需要具体看看等待是哪一种等待,以此来针对性的做调整。(需要有数据库的知识)。如果这个等待事件是个比较general的等待,那么可以看看与这个等待事件离的比较近的是什么事件,猜测等待是由这个具体的事件导致,从一个比较具体的事件入手分析和解决。
举个我遇到的例子。
在一个场景中,oracle的awr报告top10事件的前两名分别是:
buffer busy waits
enq:TX - index contention
首先buffer busy waits是个比较general的等待,是session等待某个buffer引起的,但具体是什么buffer并不清楚,比如log sync等待也会引起buffer busy wait。这是个连带指标,暂不管,需要看看他临近的问题事件是什么。
这里的临近事件就是enq:TX - index contention, index contention常由大量并发INSERT 造成的 index split 引起,也就是说不断更新索引的过程中,二叉树不断长大。需要分裂,分裂的时候,其他session就需要等着。(这里的分析需要些数据库知识)
之后,将索引分区,避免竞争,重新测试,Index contention、Bufferbusy wait都从top10中消失了
收起