如果等待事件占据大部分等待时间,有哪些方法可以用到?

全表扫描或者全索引扫描时,如果等待事件占据大部分等待时间,有哪些方法可以用到?

参与4

1同行回答

yangjianxvyangjianxv部门总经理成方金融科技有限公司
你是指从数据库的报告里看到的等待吧?需要具体看看等待是哪一种等待,以此来针对性的做调整。(需要有数据库的知识)。如果这个等待事件是个比较general的等待,那么可以看看与这个等待事件离的比较近的是什么事件,猜测等待是由这个具体的事件导致,从一个比较具体的事件入手分析和...显示全部

你是指从数据库的报告里看到的等待吧?

需要具体看看等待是哪一种等待,以此来针对性的做调整。(需要有数据库的知识)。如果这个等待事件是个比较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中消失了

收起
银行 · 2017-04-24
浏览1434

提问者

qditz
项目总监青岛弘腾数码有限公司
擅长领域: 服务器数据库灾备

问题来自

相关问题

相关文章

问题状态

  • 发布时间:2017-04-24
  • 关注会员:2 人
  • 问题浏览:3848
  • 最近回答:2017-04-24
  • X社区推广