Oracle-数据库性能变慢问题分析

问题背景:

        应用运维报障说最近两天业务数据入库和表查询都变得很慢,需要排查一下数据库的性能问题

问题分析:

        登录到服务器上,通过TOP命令快速看了一下,服务器整体的CPU使用%usr不算特别高,但%wa IO等待很高,怀疑有可能是数据库存在大量的IO操作语句导致服务器IO负载升高

        查询数据库的负载dbtime时间,可以看到数据库的负载明显变高,平常只有几百的dbtime值,从2024年1月1日13点左右之后开始飙升,最高达到7000+

e7b1b94b0a141fa8b2aa6637cfe13412.png

        对比1月1日13点前后的等待事件情况,发现13点之后的IO等待事件db file sequential read以及direct path read等待事件明显多了几个数量级,等待事件的类型与看到的服务器IO等待负载升高匹配,可以确认数据库肯定存在大量的IO操作

select event,count(*)
from DBA_HIST_ACTIVE_SESS_HISTORY a
where  to_char(sample_time,'yyyymmdd hh24:mi:ss')>='20240101 13:00:00'
and to_char(sample_time,'yyyymmdd hh24:mi:ss')<='20240102 16:00:00'
group by event 
order by 2;

        正常时间段

 

7473518cc990a7de78e1af9c4d75fbbc.png

        性能缓慢,IO等待高时间段

 

6ace0addd9181d12ebbf33a985dd779b.png

        进一步查看IO等待事件db file sequential read以及direct path read每小时的增长趋势,可以看到在13点之后,IO等待事件出现了显著的增长

select to_char(sample_time,'yyyymmdd hh24'),event,count(*)
from DBA_HIST_ACTIVE_SESS_HISTORY a
where   event in('direct path read','db file sequential read')
group by to_char(sample_time,'yyyymmdd hh24'),event
order by 1;

 

5a1ab01ee35b63424ecd3aedcbb2335c.png

        分析IO等待事件引发的sql语句,可以看到TOP主要有4条语句sql:8aq5bt0k6jb4d、3s559a2uc2xk0、3nd18t4tmv0mz、25dy6q436ch3k

select sql_id,count(*)
from DBA_HIST_ACTIVE_SESS_HISTORY a
where  to_char(sample_time,'yyyymmdd hh24:mi:ss')>='20240101 13:00:00'
and to_char(sample_time,'yyyymmdd hh24:mi:ss')<='20240102 16:00:00'
and event in ('db file sequential read','direct path read')
having count(*)>50000
group by sql_id 
order by 2;

 

eff4af5e9e143e9f446c1ef76862be89.png

        分析第一条SQL:8aq5bt0k6jb4d

        查看语句的执行计划,可以看到语句的执行计划发生了改变,在1月1日13点生成了一个高消耗的执行计划,执行次数628次,平均消耗时间6583秒,逻辑读和物理读次数都很高平均100W+,而正常的执行计划执行时间都在10秒以内,,物理读次数在1000次以内

        从执行计划的生成时间与数据库负载变高时间一致以及语句的逻辑读和物理读消耗,基本可以确认数据库的性能缓慢与这个语句有关

 

521c997eda36646aa6181138bba296e1.png

a06c33d9fb2e95365b68ce649822d5ed.png

        分析语句的高消耗执行计划,语句里面唯一的大表TAB_MR,大小157628MB,作为了nested loop的驱动表,并且执行的路径是全表分区范围扫描

 

623defc51a01877aebbae01bb9c15675.png

 

089b795799582084352fe08e6e571531.png

        表TAB_MR根据时间条件t.syn_time查询数据

 

fafd80f8290ea8e413b7d833553897af.png

        跟正常的执行计划对比,可以看到正常的执行计划是使用到了分区本地索引IDX_TAB_MR_SYN_TIME,而不是全表分区范围扫描

 

6a4a3ef8f72f74c96d68d6e337e77a8e.png

        检查分区表以及索引的统计信息,都发现1月份之后的统计信息与实际表的数据差异很大,实际一天的分区有几十万的数据

--查看分区表的统计信息
select table_owner, table_name, partition_name, AVG_ROW_LEN ,num_rows, blocks*8/1024 size_m,last_analyzed
from dba_tab_partitions where table_name='SALES_LIST'
--查看索引的统计信息
select owner,index_name,PARTITION_NAME,SUBPARTITION_NAME,LEAF_BLOCKS,DISTINCT_KEYS,LAST_ANALYZED
from dba_ind_statistics
where table_owner='TEST' and table_name='SALES_LIST';

 

df2aac0a7b3e20ff3c94ef09ce96fbd6.png

        查看语句传入的绑定变量值,发现传入的都是查询最新1月份的数据,可以判断执行计划选错执行路径的原因为统计信息的不准确导致优化器估算出现错误,选择了全表扫描的路径

 

d4e01f8fe99c9a8cbb31eac7ec422aaf.png

        分析第二条SQL:3sruu5v9gtysg

        语句是一条正常的普通insert语句,执行计划没有可以分析的,查看语句的执行消耗变化情况,可以看到在13点之后,语句的IO_WAIT等待时间变得很高,可以判断语句应该是受到系统负载IO变慢所影响的

 

561d872d9eb87440b102a992e1a6141f.png

        分析第三条SQL:3sruu5v9gtysg

        跟第二条语句类似,在执行计划没有变化的情况下,语句的IO_WAIT等待时间变得很高,语句同样也是受到系统负载IO变慢所影响的

 

1356adb3a0096482cc1813db02e6106d.png

        分析第四条SQL:3sruu5v9gtysg

        查看语句的执行计划,可以看到语句的执行计划也发生了改变,在1月1日13点生成了一个高消耗的执行计划,执行次数7149次,平均消耗时间7.374秒,物理读和逻辑读比起正常的执行计划消耗都增长了很多,而正常的执行计划执行时间都在0.0005秒以内,平均只有10次的逻辑读

6f66a79f29d883956ea3fc5924844ce4.png

        查看语句的执行计划,跟第一条语句是同一张表语句TAB_MR,同样的问题,优化器选错了执行的路径进行全表单分区范围扫描

bfa756ca299e621157816ac40a074d95.png

        分析完这4条TOP SQL可以对问题做个总结了,数据库从2024年1月1日13点左右负载明显升高,主要的负载为IO操作,IO操作负载升高的原因为大表TAB_MR的2024年1月份之后的分区统计信息不准确,导致涉及1月份数据的查询SQL生成了错误的高消耗全表分区扫描执行计划,产生了大量的物理读以及逻辑读,最终引发了整个数据库的性能下降,业务数据入库和表查询都变慢

问题解决:

        对大表TAB_MR1月份的分区单独收集统计信息后,语句的执行计划恢复了正常,数据库的IO负载也降下来、

其他问题:

        最后还有一个问题就是关于统计信息收集的,数据库是有开启默认的自动统计信息收集的,单个分区的数据变化量也超过了10%,为什么表的统计信息到1月2号还没有更新

 

dd4123ab097393ad78a0f76c5b7514a1.png

 

61a12b328994b650c1c5e260cf6852df.png

        查看统计信息job的执行记录,可以看到2024年1月1日的统计信息收集在晚上22点有正常的开始执行,但是最后统计信息收集的job由于4个小时的执行窗口时间已到,job被迫暂停了(REASON="Stop job called because associated window was closed"),也就是任务有跑,但没收集完成

        注:周一到周五默认统计信息收集窗口4个小时,周六周日默认统计信息收集窗口20个小时

        通常统计信息没有在4个小时窗口执行完成的可能原因有1 数据库要收集的表数据量过大 2 数据库的性能出现问题,导致收集缓慢 3 统计信息收集的并行度不合理,导致收集速度过慢 4 Oracle的bug,结合统计信息收集的历史完成时间都在2小时以内以及收集时间段存在IO负载高的问题,判断统计信息收集还是受到数据库的性能下降所影响

 

7cceb443523ee3bbc69d375e51052897.png

 

 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/623874.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL加锁规则

项目编写涉及到数据持久化一般选择使用MySQL。由于时间原因&#xff0c;数据库使用我选择了无脑三板斧&#xff1a;1. 建立了索引加速查询、2. 关闭自动提交事务、3. 在需要确保原子性的数据库操作之间手动创建和提交事务。 这么一看&#xff0c;仿佛即使是实际开发也与你此前…

蓝桥杯单片机快速教程5——利用状态机思想编程

预习知识&#xff1a; &#xff08;1&#xff09;状态机理论 http://t.csdnimg.cn/lXwjw &#xff08;2&#xff09;基础视频 【蓝桥杯单片机保姆级教学】 https://www.bilibili.com/video/BV1h3411m7Aw/?p119&share_sourcecopy_web&vd_sourcec4fc67867c5218768e783d0…

什么是WhatsApp Business?WhatsApp和WhatsApp Business区别?

什么是WhatsApp Business&#xff1f; WhatsApp Business账号是Meta专为企业设计的WhatsApp账号。不同于消费者层次的应用&#xff0c;WhatsApp Business旨在为企业提供更好的服务支持&#xff0c;方便企业与消费者建立更好的双向沟通渠道。 WhatsApp和WhatsApp Business有什…

为什么有人说PMP是水证,它的含金量到底怎么样?

在我国大陆&#xff0c;有好多证书被商业化得太重了&#xff0c;甚至演变成了个人或一些公司摇钱的工具。所以有些证书受人吹捧它崛起的快&#xff0c;但是活不长&#xff0c;甚至“夭折”&#xff0c;比如以前微软系列的证书&#xff1b; 而PMP认证从国外引进大陆这么多年了&…

可行性研究报告范文模板(可直接套用)-word

1业务需求可行性分析 2技术可行性分析 2.1规范化原则 2.2高度的兼容性和可移植性 2.3人性化、适用性 2.4标准化统一设计原则 2.5先进安全可扩展性原则 3开发周期可行性分析 4人力资源可行性分析 5成本分析 6收益分析 7结论 软件开发全文档获取&#xff1a;软件项目…

[python]pyside6安装和在pycharm配置

安装命令&#xff1a; pip install PySide6 -i https://mirror.baidu.com/pypi/simple Pycharm配置Pyside6 打开Pycharm点击File -> Settings -> Tools -> External Tools&#xff0c;点击&#xff0b;。需要添加 Pyside6-Designer 、 Pyside6-UIC 和 Pyside6-rcc三…

突破界限:首个国产DeepSeek MoE的高效表现

前言 在人工智能技术的快速发展过程中&#xff0c;国产首个开源MoE&#xff08;Mixture of Experts&#xff09;大模型——DeepSeek MoE的推出&#xff0c;不仅标志着中国在全球AI领域的重大突破&#xff0c;而且在计算效率和模型性能上展现了显著的优势。这款160亿参数的模型…

ECharts 多季度连续显示到一个图中。

效果图 二.相关option 以下option可以复制到 echarts的编辑器 进行查看修改 const site test1; const site2 test2;const qtrlyOption function (data: any, titleText: string): any {//获取最大值 。最大最小值的目的是&#xff1a;使左右里边的所有bar使用同一个指标let …

[HTML]Web前端开发技术12(HTML5、CSS3、JavaScript )——喵喵画网页

希望你开心&#xff0c;希望你健康&#xff0c;希望你幸福&#xff0c;希望你点赞&#xff01; 最后的最后&#xff0c;关注喵&#xff0c;关注喵&#xff0c;关注喵&#xff0c;佬佬会看到更多有趣的博客哦&#xff01;&#xff01;&#xff01; 喵喵喵&#xff0c;你对我真的…

WebGIS招聘原来看重什么?整理了1300多份岗位得出来的干货!

之前给大家分享了一份boss直聘、猎聘和前程无忧上WebGIS相关的岗位汇总表&#xff1a; http://t.csdnimg.cn/35vn4 可以直接一键投递&#xff0c;需要的宝子记得后台找我。 今天给大家汇总了这些所有岗位的要求&#xff0c;包括学历、工作经验、城市、薪资以及技术要求等。 到…

DNS从入门到精通

DNS从入门到精通 Dns从入门到精通 DNS从入门到精通一、DNS原理二、企业高速缓存dns的搭建三、DNS相关名词解释四、权威DNS搭建编辑子配置文件&#xff08;主要写我们维护的域zone)开始解析 五、权威dns中的数据记录种类及应用编辑子配置文件&#xff08;主要写我们维护的域zone…

js中的class类

目录 class构造函数方法原型方法访问器方法静态方法 继承super minxin关于多态 class 在ES6中之前如果我们想实现类只能通过原型链和构造函数的形式&#xff0c;不仅难以理解步骤也十分繁琐 在ES6中推出了class关键字&#xff0c;它可以在js中定一个类&#xff0c;通过new来实…

【极光系列】SpringBoot集成Mybatis

【极光系列】SpringBoot集成Mybatis 一.gitee地址 浅夏的猫 shawsongyue 直接下载可用 https://gitee.com/shawsongyue/aurora.git 二.mysql安装教程 详细参考我的另外一遍博客&#xff1a; https://blog.csdn.net/weixin_40736233/article/details/135582926?spm1001.201…

从物联网到数字孪生:智慧社区的未来之路

一、物联网在智慧社区中的应用与挑战 随着科技的飞速发展&#xff0c;物联网技术已经深入到我们生活的方方面面&#xff0c;尤其在智慧社区的建设中发挥着举足轻重的作用。物联网通过连接各种设备和系统&#xff0c;为社区居民提供了更便捷、高效的生活方式&#xff0c;同时也…

Hologres + Flink 流式湖仓建设

Hologres Flink 流式湖仓建设 1 Flink Hologres2 实时维表 Lookup 1 Flink Hologres holo在实时数仓领域非常受欢迎&#xff0c;一般搭配flinkhologres来做实时数仓&#xff0c;中间分层用holo&#xff0c;上下游一般依赖于holo的binlog来下发数据 2 实时维表 Lookup Holo…

第8章-第2节-Java中IO流的简单介绍

1、什么是流 我们可以先想象水流是怎样的&#xff1f;溪水不断流动&#xff0c;最终融入大海&#xff1b;我们今天的学习IO其实如同水流一样&#xff0c;当我们读取文件信息或者写入信息时&#xff0c;如同水流一样&#xff0c;不断读取或者写入&#xff0c;直到业务流程结束。…

高级分布式系统-第13讲 分布式控制经典理论

模糊控制器 模糊控制是以模糊集理论、模糊语言变量和模糊逻辑推理为基础的一种智能控制方法&#xff0c;它是从行为上模仿人的模糊推理和决策过程的一种智能控制方法。 该方法首先将操作人员或专家经验编成模糊规则&#xff0c;然后将来自传感器的实时信号模糊化&#xff0c;…

CAN工具 - ValueCAN3 - 基础介绍

关注菲益科公众号—>对话窗口发送 “CANoe ”或“INCA”&#xff0c;即可获得canoe入门到精通电子书和INCA软件安装包&#xff08;不带授权码&#xff09;下载地址。 CAN/CANFD通讯广泛存在于整个车载网络中&#xff0c;几乎每一块软硬件的开发都需要用到CAN工具&#xff0c…

机器学习 | 多层感知机MLP

机器学习 | 多层感知机MLP 1. 实验目的 自行构造一个多层感知机&#xff0c;完成对某种类型的样本数据的分类&#xff08;如图像、文本等&#xff09;&#xff0c;也可以对人工自行构造的二维平面超过3类数据点&#xff08;或者其它标准数据集&#xff09;进行分类。 2. 实验…

Hadoop 3.2.4 集群搭建详细图文教程

一、集群简介 Hadoop 集群包括两个集群&#xff1a;HDFS 集群、YARN 集群。两个集群逻辑上分离、通常物理上在一起&#xff1b;两个集群都是标准的主从架构集群。逻辑上分离 两个集群互相之间没有依赖、互不影响 物理上在一起 某些角色进程往往部署在同一台物理服务器上 MapR…