Oracle-一次提升10倍的跑批优化

问题背景:

        一早刚上班,应用开发就在群里就发了一个语句执行ORA-01555的报错,说他们的一条跑批语句昨天晚上跑了1个小时还没跑完,最后出现了错误ORA-01555: snapshot too old: rollback segment number,让我们帮忙看一下这条跑批语句

问题分析:

        应用跑批的程序是调用了一个存储过程,存储过程里面是将一条insert into  select * from tab@dblink的语句改写成每10W批量插入一次的形式,通过dblink将目标端数据库表TAB_B查询的全量数据批量插入到本地数据库表O_TAB_B里面,应用执行返回的ORA-01555报错是dblink指向的目标端select查询

        查看目标库表TAB_B的查询语句性能,由于查询语句没有where条件,所以肯定是一个全表的扫描操作,执行计划基本没有分析的必要,直接查看目标库的性能以及语句执行消耗,从语句的历史执行消耗来看,执行时间正常查询1600W行的数据大概在60秒左右,执行的效率还是不错的

        查看语句的等待事件,没有异常的等待事件,SQL*Net more data to client查询数据发送给客户端的等待次数也很低,说明本地和目标端之间的网络也没有存在瓶颈,语句在目标库的执行性能,看起来是正常的

        接下来分析本地数据库的数据插入执行情况,可以看到语句在本地数据库的执行效率很差,波动很大,平均10w一次的插入数据需要花费10秒-185秒的时间,应该是跑批语句的本地的数据插入插入过慢,导致dblink目标端的查询语句回滚段被覆盖了

        分析语句插入阶段的执行等待事件,可以看到语句在执行期间出现了很多的log buffer space日志缓冲区的申请等待,这里难道是数据库的log buffer设置过小?,继续往下分析

        拿了一份跑批语句执行期间的awr报告进行分析,可以看到问题期间的每秒redo生成量接近31M,log buffer的配置44M,这个配置相对日志的生成量有点小,但只要日志写磁盘的IO性能不是特别差的话,应该问题也不大,不至于导致这么多的log buffer space等待

        查看跑批时间段的等待事件,都是跟日志文件的操作等待有关,log buffer space写日志缓存等待,log file switch completion日志切换等待,log file sync日志同步写磁盘日志等待,同一时间出现这么多的日志等待事件,特别是log file sync的平均等待达到635ms,很有可能是日志的写IO能力出现瓶颈

        查看日志写的延时,跑批执行期间log file parallel write平均延时高达653ms,lgwr进程的后台日志也不断的出现日志写耗时警告,很明显,日志文件的IO性能出现了问题

        通过osw iostat进一步确认磁盘的等待情况,可以看到部分的磁盘写平均等待很高。在磁盘写入压力不大的情况下,延时可以达到几十ms,进一步检查发现,这些出现延时比较高的磁盘都属于归档磁盘组ARCHDG

        查看日志文件的配置,可以看到每个日志配置了两组路径,分别为DATADG以及ARCHDG,而写入日志文件慢,应该就是出现在写入ARCHDG磁盘

问题解决:

        跟存储进一步了解底层的磁盘配置情况,DATADG使用的是NVME盘,而ARCHDG使用的是SAS盘,并且阵列卡写策略是使用直写的,没有用到阵列卡的缓存,所以ARCHDG的磁盘IO写性能很差

        知道ARCHDG磁盘IO写性能很差之后,我们做了一个小的优化调整,将redo日志的路径进行了修改,只配置DATADG的路径,不往ARCHDG路径写,调整之后,立马就看到效果,平常数据库空闲log file parallel write延时都要11ms,调整之后只剩下0.29ms

        到了晚上跑批,跑批的insert语句速度也得到大幅度的提升,10w一次的数据插入只需要花费3秒-5秒的时间,log buffer space的等待事件也消失了,整个跑批时间提升了10倍以上。

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

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

相关文章

MATLAB | 绘图复刻(十四) | 右侧对齐桑基图,及工具函数SSankey更新

hey 真的好久不见了,本期既是一期绘图复刻教程,也是我写的工具函数的版本更新,本期复刻的图片来自《Nature》: Elmarakeby, H.A., Hwang, J., Arafeh, R. et al. Biologically informed deep neural network for prostate cancer…

Vue代理模式和Nginx反向代理(Vue代理部署不生效)

在使用axios时,经常会遇到跨域问题。为了解决跨域问题,可以在 vue.config.js 文件中配置代理: const { defineConfig } require(vue/cli-service) module.exports defineConfig({transpileDependencies: true,devServer: {port: 7070,prox…

naiveui 上传图片遇到的坑 Upload

我在开发图片上传功能, 需要手动触发上传 但是我调用它内部自定义submit方法, 结果接口一直在报错400 我反反复复的测试了好就, 确定了就是我前端的问题,因为之前一直在做后端的错误排查, 以为是编译问题(因为之前也出现过这个问题) 好 , 我把其中一个参数类型改为String类型, …

TitanIDE:v2.8.0正式发布,模板市场来袭!

TitanIDE v2.8.0版本正式发布,模板市场中内置40模版! 什么是TitanIDE TitanIDE,云端IDE,作为数字化时代研发体系不可或缺的一环,和企业建设好的云服务具有很高的互操作性。秉承“安全、高效、体验”的原则&#xff0…

【celery踩坑】celery因为版本不同,导致broker报错

一、背景 项目关键依赖: fastapi0.100.1 celery4.4.7 celery启动命令: celery worker -A xxx.celery -P eventlet -c 100 -l INFO --logfilecelery.log -D在docker启动项目时,即使celery的配置正常,celery配置的broker_url没有…

无人机在化工消防救援中的应用,消防无人机应用场景分析

火灾对社会环境具有较大影响,因此需要重视消防灭火救援工作,注重现代化技术的运用,将无人机应用到救援过程并保障其应用质量。无人机是一项重要技术,便于消防灭火救援操作,使救援过程灵活展开,排除不利影响…

JavaWeb后端开发(第一期):Maven基础、Maven的安装配置、如何创建maven项目模块、maven的生命周期

Java后端开发:2024年2月6日 -> LiuJinTao 文章目录 JavaWeb后端开发(第一期) : maven基础一、 maven介绍1.1 什么maven呢:1.2 maven的作用1.3 maven 模型1.4 maven 仓库 二、maven 安装2.1 配置本地仓库2.2 配置阿里…

数据库学习案例20240206-ORACLE NEW RAC agent and resource关系汇总。

1 集群架构图 整体集群架构图如下: 1 数据库启动顺序OHASD层面 操作系统进程init.ohasd run启动ohasd.bin init.ohasd run 集群自动启动是否被禁用 crsctl enable has/crsGIHOME所在文件系统是否被正常挂载。管道文件npohasd是否能够被访问, cd /var/t…

一文读懂智能拧紧系统的概念、工作原理、优势和应用场景

智能扭矩系统-智能拧紧系统-扭矩自动控制系统-SunTorque 随着科技的不断发展,智能制造已经成为工业领域的重要趋势。作为智能制造的重要组成部分,智能拧紧系统在提高生产效率、确保产品质量和降低生产成本方面发挥着越来越重要的作用。本文将介绍智能拧…

idea vim配置

"basemap "source $cnfpath/nvim/cnf/basemap.vim """"""""""""""""""""" " 自动设置 """""""""…

代码随想录算法训练营第25天 | 216.组合总和III ,17.电话号码的字母组合

回溯章节理论基础: https://programmercarl.com/%E5%9B%9E%E6%BA%AF%E7%AE%97%E6%B3%95%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html 216.组合总和III 题目链接:https://leetcode.cn/problems/combination-sum-iii/ 思路: 本题就是在[1,2,3,4,5,6,7,…

海康威视球机摄像头运动目标检测、跟踪与轨迹预测

一、总体方案设计 运动目标检测与跟踪方案设计涉及视频流的实时拍摄、目标检测、轨迹预测以及云台控制。以下是四个步骤的详细设计: 1.室内场景视频流拍摄 使用海康威视球机摄像头进行室内视频流的实时拍摄。确保摄像头能覆盖整个室内空间,以便捕捉所…

SpringBoot集成Flowable工作流

文章目录 一、了解Flowable1. 什么是Flowable2. Flowable基本流程3. Flowable主要几张表介绍 二、SpringBoot集成Flowable1. 在idea中安装Flowable插件2. SpringBoot集成Flowable3. SpringBoot集成Flowable前端页面 三、创建流程模版(以请假为例) 提示:以下是本篇文…

这些企业已经有了HCM系统,为什么还要再单独上考勤系统?

最近有几家制造业和零售业的朋友咨询我考勤管理系统选型的问题,都集中在WFM方面的考勤咨询。 奇怪的是这些企业基本上都有一定的HR数字化基础,也上了HR主系统,甚至也实施了考勤系统,那为什么还要再上一个考勤系统呢? …

node cool-admin 后端宝塔面板看代码日志

1.需求 我在处理回调问题的时候 就是找不到问题,因为不像本地的代码 控制台能够直接打印出来问题,你是放在线上了 所以那个日志不好打印 我看网上都说是 直接用一个loger.js 打印 日志 放到代码文件里 这种方法也许有用 但是对我这框架cool来说 试了没有…

LabVIEW高精度主动模拟肺系统的开发与应用

在医疗设备的研发与测试中,高精度主动模拟肺系统扮演了不可或缺的角色。这种系统能够精确模拟人体的呼吸过程,对于呼吸机性能的测试、医疗人员的培训以及临床研究具有极其重要的意义。通过利用先进的硬件控制技术和软件算法,主动模拟肺系统能…

Pandas文本数据处理技术指南—从查找到时间序列分析【第66篇—python:文本数据处理】

文章目录 Pandas文本数据处理技术指南引言 1. 查找文本数据2. 替换文本数据3. 拼接文本数据4. 正则表达式操作5. 虚拟变量6. 处理缺失值7. 分割文本数据8. 字符串处理方法9. 文本数据的合并与连接10. 文本数据的排序11. 文本数据的统计分析12. 文本数据的分组与聚合13. 文本数据…

Java之泛型系列--继承父类与实现多个接口(有示例)

原文网址&#xff1a;Java之泛型系列--继承父类与实现多个接口(有示例)_IT利刃出鞘的博客-CSDN博客 简介 本文介绍java如何用泛型表示继承父类并实现多个接口。 用泛型表示某个类是某个类的子类或者实现了接口的方法为&#xff1a;<T extends A & B & C> 用…

瑞芯微推理RKNN使用

参考资料 toolkit2 官网资料 野火实践指南 Ubuntu22.04实践 安装toolkit2 安装命令pip3 install -r xxx/packages/requirements_cp310-1.6.0.txt pip3 install xxx/packages/rknn_toolkit2-1.6.081f21f4d-cp310-cp310-linux_x86_64.whl注意加上 -i xxx 可能会造成下载tf-es…

react中hook封装一个table组件

目录 react中hook封装一个table组件依赖CommonTable / index.tsx使用组件效果 react中hook封装一个table组件 依赖 cnpm i react-resizable --save cnpm i ahooks cnpm i --save-dev types/react-resizableCommonTable / index.tsx import React, { useEffect, useMemo, use…