绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
lob字段的direct path read等待导致的性能问题分析过程
2021-04-13 16:21:58

在一次性能调优中,发现用户大量的direct path read等待,正常理解这应该是一个大表的全表扫,我们捕获了该SQL发现两层嵌套走索引,索引需要回表。
所以显然这里不是全表扫描,我们检查了表结构,以及select后的查询字段发现都有lob字段,其次通过ASH的physical read统计,都是lob字段,所以我们怀疑是大量的
Lob 读导致了direct path read ,我们从MOS找到一篇文章 "Direct path read" Wait Event During LOB Access (Doc ID 2287482.1),比较清楚地描述了这个问题
既然找到问题解决也就很简单

方案1:关闭直接路径读(这个是部分关闭),这个问题是当时原厂工程师的建议,我们的方案更强项与后者,cache lob
动态生效:(需要在集群每个节点都执行!)
alter system set events '10949 trace name context forever,level 1';
重启生效:(1个节点都执行!)
alter system set event='10949 trace name context forever, level 1' scope=spfile sid='*';

方案2:Cache相关的lob字段
ALTER TABLE <tabname> MODIFY LOB (<lobname>) ( CACHE| CACHE READS );
这个方案也是动态生效,不需要重启实例。

采用方案1后,direct path read极大缓解,其实其中还有一个read by other session等待严重的会话,这个是并发读(一般是全表扫导致),我们通过
一个普通索引解决了,这里是想说明其实direct path read对IO的压力会恶化read by other session,因为会话需要等待其他会话从磁盘向内存读数据,但是这个通过索引解决是
有效的方法。


分享好友

分享这个小栈给你的朋友们,一起进步吧。

Oracle运维新鲜事-技术与管理各占半边天
创建时间:2020-08-04 11:34:57
本技术栈旨在分享技术心得,运维趣事,故障处理经验,调优案例,故障处理涉及集群,DG,OGG,大家生产中遇到的问题基本都会囊括了,我会发布生产库遇到的故障,希望在交流中互助互益,共同提高,也希望大家讨论,如果您有生产中遇到的集群问题,也可以在这里提出来,一起讨论,现实中也帮助不少同学解决了生产库的故障。
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

栈主、嘉宾

查看更多
  • Abraham林老师
    栈主
  • 小雨滴
    嘉宾
  • hawkliu
    嘉宾
  • u_97a59a25246404
    嘉宾

小栈成员

查看更多
  • 栈栈
  • dapan
  • 小菜鸟___
  • hwayw
戳我,来吐槽~