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…

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

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

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…

代码随想录算法训练营第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来说 试了没有…

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

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

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…

4. ⼤模型微调方法

到底有哪些微调⽅法呢? 第⼀类⽅法:借助OpenAI提供的在线微调⼯具进⾏微调;第⼆类⽅法:借助开源微调框架进⾏微调; 1. OpenAI在线微调⼯具 网址:https://platform.openai.com/docs/guides/fine-tuning/c…

EasyRecovery2024永久免费版电脑数据恢复软件下载

EasyRecovery数据恢复软件是一款非常好用且功能全面的工具,它能帮助用户恢复各种丢失或误删除的数据。以下是关于EasyRecovery的详细功能介绍以及下载步骤: EasyRecovery-mac最新版本下载:https://wm.makeding.com/iclk/?zoneid50201 EasyRecovery-win…

一台Mac同时安装vue2和vue3

背景:电脑需要运行vue2和vue3项目,就得同时有vue2和vue3环境,之前以配置好vue2了,现在增加vue3 1. 新建一个安装vue3的目录 进入vue3文件夹安装vue3 // 注意这里没有参数-g,因为-g全局安装的命令 npm install vue/cli…

Yearning审核平台本地安装配置并结合内网穿透实现远程访问

文章目录 前言1. Linux 部署Yearning2. 本地访问Yearning3. Linux 安装cpolar4. 配置Yearning公网访问地址5. 公网远程访问Yearning管理界面6. 固定Yearning公网地址 前言 Yearning 简单, 高效的MYSQL 审计平台 一款MYSQL SQL语句/查询审计工具,为DBA与开发人员使用…

人工智能|深度学习——使用多层级注意力机制和keras实现问题分类

代码下载 使用多层级注意力机制和keras实现问题分类资源-CSDN文库 1 准备工作 1.1 什么是词向量? ”词向量”(词嵌入)是将一类将词的语义映射到向量空间中去的自然语言处理技术。即将一个词用特定的向量来表示,向量之间的距离(例…

力扣热门100题 - 3.无重复字符的最长子串

力扣热门100题 - 3.无重复字符的最长子串 题目描述:示例:提示:解题思路 (滑动窗口 哈希表):代码: 题目链接:3. 无重复字符的最长子串 题目描述: 给定一个字符串 s &…