当前位置: 首页 > news >正文

read by other session的优化记录

【背景】以下是一个ERP数据库的AWR报告,初看数据库挺繁忙的,DB Time/Elapsed的比值接近20,再深入往下看发现数据库的read by other session事件明显,以下是经过一系列的分析解决了read by other session等待事件的问题;

image

 

Top 5等待事件

image

 

【问题分析一】read by other session产生的原因:发生在一个数据块正在被读进buffer,而其它session此时也要请求这个数据块的时候。这个事件10G以前被归类在buffer busy wait的其他类目中。(说明有多个会话同时在对一个表进行读操作)

 

查找AWR报告中跟I/O有关的SQL语句

image

 

image

 

【问题分析二】以上的分析可以给出一个大概的范围,需要继续结合ASH报告或者直接查看当前的session等待情况

1、查找相应的SQL_ID

select  distinct  sql_id 

From  v$session

Where  event in('read by other session', 'db file sequential read');

 

2、查看相应的SQL语句和执行计划

select * from table(dbms_xplan.display_awr('SQL_ID'));

 

【问题分析三】当前ERP系统是SAP,SAP系统对于系统的性能监控和诊断提供了一系列强大的TC,通过运行SM66,刚好可以看到同时有很多并行的SESSION在运行

image

 

【问题原因】经过一系列的分析和判断,终于找到问题的根源,由于后台配置了一个有问题的JOB。

该JOB每30分钟执行一次

Catch82E1(07-23-14-57-11)[4]

 

但是历史记录显示,每次JOB运行的时间到超过10个小时,这个场景我们可以想象一下:

8点00分,运行job,然后这个job会进行select 表A的操作,且一直在循坏操作;

image

 

8点30分,这个job又启动了,也运行select表A的操作,且一直在循坏操作;

9点00分,再次启动job,进行select表A的操作,且一直在循坏操作;

 

这个场景下来肯定就会出现:一个数据块正在被读进buffer,而其它session此时也要请求这个数据块的时候。所以read by other session的等待事件就产生了。

 

【解决方法】找到问题的原因后,把当前JOB的情况发给业务部门进行调整,调整后每次运行在10分钟以内,相应的read by other session的等待事件也就没有了。

image

 

【总结】刚开始系统数据量小的时候,一些操作不加条件、没有索引运行起来都不会影响系统的,但是随着数据量的增加如果没有对系统进行定期检查的话,那么系统就是会越来越慢;

这也是很多系统运行到一定程度就感觉硬件撑不住的原因,其实是由于粗狂式的系统管理,导致系统的资源过度浪费导致的。

想想一本字典目录就是那么几页,如果没有用好这个目录的话,就像进行海量的数据查询不用索引操作;

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

本文作者:JOHN,某上市公司DBA,业余时间专注于数据库的技术管理,从管理的角度去运用技术。

技术博客:猎人笔记                                                数据库技术群:367875324 (请备注数据库类型)

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

相关文章:

  • sql Sever的存储过程转换为mysql的
  • 7月21日13家中国域名商(国际域名)解析量报告
  • NoSQL精粹读书笔记-第1章
  • iOS开发-App Icons的尺寸大小
  • js 时间戳转为日期格式
  • 540C: Ice Cave
  • JavaScript判断IE版本
  • EditPlus自动补全、模板配置
  • 引子——从Mac OS X的Lion说起
  • 悠然乱弹:“最好的模板引擎”Beetl 剖析及与Tiny模板引擎对比
  • c# 反射类字段
  • Oracle 学习之RMAN(十四)恢复实战--基于时间点恢复
  • HAProxy+Keepalived实现Web服务器负载均衡
  • Java删除ArrayList中的重复元素的2种方法
  • 【LeetCode】66 67- Plus One Add Binary
  • E-HPC支持多队列管理和自动伸缩
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • iOS 系统授权开发
  • JavaWeb(学习笔记二)
  • leetcode98. Validate Binary Search Tree
  • Node 版本管理
  • 闭包--闭包之tab栏切换(四)
  • 搞机器学习要哪些技能
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 手写双向链表LinkedList的几个常用功能
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 小程序测试方案初探
  • 阿里云API、SDK和CLI应用实践方案
  • 仓管云——企业云erp功能有哪些?
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • ​iOS实时查看App运行日志
  • ###项目技术发展史
  • #FPGA(基础知识)
  • #mysql 8.0 踩坑日记
  • #传输# #传输数据判断#
  • (2)STL算法之元素计数
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (三)docker:Dockerfile构建容器运行jar包
  • (十五)使用Nexus创建Maven私服
  • (算法二)滑动窗口
  • ***测试-HTTP方法
  • .NET 2.0中新增的一些TryGet,TryParse等方法
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .NET Core引入性能分析引导优化
  • .NET 反射 Reflect
  • ;号自动换行
  • [100天算法】-不同路径 III(day 73)
  • [Android 13]Input系列--获取触摸窗口
  • [Angular 基础] - 表单:响应式表单
  • [BUUCTF 2018]Online Tool(特详解)
  • [bzoj 3124][sdoi 2013 省选] 直径
  • [CISCN 2023 初赛]go_session
  • [Delphi]一个功能完备的国密SM4类(TSM4)[20230329更新]
  • [HarekazeCTF2019]encode_and_encode 不会编程的崽