数据库性能问题分析优化


客户反应应用频繁卡住,只能通过重启应用才能恢复,一天发生若干次。

问题初步分析处理

从最近得到的三个awr报告看,等待事件基本在于“DB CPU”,“db file sequential read”,“log file sync”,“log file switch (checkpoint ncomplete)”,具体如下。
第一次:

第二次:

第三次:

根据这几个现象等待现象,初步断定大量查询导致IO或CPU瓶颈,大批量更新插入导致redo_log checkpoint来不及刷入磁盘。由于awr取数时间范围较大,需要更进一步确认。

进一步排查过程

检查出现性能问题时的等待事件,整个堵塞的等待时间基本上是“log file sync”和“enq: TX - row lock contention”。



“log file sync”发生有多种情况,如CPU资源紧张,lgwr进程获得不了响应的CPU时间片;时间段业务量太大,产生redo 过多,如批量DML redo 日志文件太小或者组数不够。
“enq: TX - row lock contention”基本上由于性能或执行效率低导致的tx锁。
检查pdb中堵塞的session_id,“log file sync”在pdb中没查到,在容器中查询发现:


基本上“LGWR”来不及导致了堵塞,tx锁慢的源头是job任务,如下:

通过查询sql_id得出job任务的sql语句:

这些语句平时执行比较快,跟上面“log file sync”堵塞有非常大的相关。进一步分析awr和ash报告,从堵塞时间来看,是7点51分开始的,获取ash报告7点50分后面10分钟的报告情况:

看大部分等待事件为“db file parallel read”,“db file sequential read”,“log file sync”,跟io相关,瓶颈在于file文件1,3,4一般这三个文件都是系统文件system、sysaux、和undo的文件,所以当时有系统任务在执行影响了数据库性能。
比较正常情况和异常情况下的awr报告,异常情况如下:

正常情况如下:

对比sql执行语句,最耗时间的sql时间翻了三倍,sql_id为75c73u54hy17g的sql语句执行次数翻了三倍,等待事件top10前面几个都一样

与上面ash情况一起分析,主要在于系统层面的io资源消耗,需要考虑到12c的执行sql自动收集统计信息的功能,检查优化器:

检查优化器参数,所以需要调整参数:
alter system set “_optimizer_ads_use_result_cache”=FALSE;
alter system set “_optimizer_dsdir_usage_control”=0;
alter system set “_optimizer_use_feedback”=FALSE;
alter system set optimizer_adaptive_plans=FALSE;
_optimizer_ads_use_result_cache:解决“Result Cache: RC Latch”
_optimizer_dsdir_usage_control:解决多表联接SQL在12c中的解析时间很长
_optimizer_use_feedback:解决基数反馈导致后续计划不佳,“db file sequential read”top事件
optimizer_adaptive_plans:解决sql执行sql自动收集统计信息的功能。

检查redo日志情况:

当前日志是1G,日志只有三个,建议在增加三个日志。
检查alert日志,当天有统计信息维护任务


初步优化完毕,后续问题发生频率减少,但还是偶发业务卡顿,而且在业务非高峰期也发生,通过awr看,发生等待事件时,网络延迟较高伴随着tx锁等待。

经过了解业务层和数据库间的有一层代理,并且业务层和数据库间超过5分钟就会断开,所以。
推荐解决方案:

  1. 因为业务和数据库都处在内网环境,对外不可见,可以修改为业务服务器直连数据库,减少中间环节。
  2. sqlnet.ora 增加如下配置:

SQLNET.INBOUND_CONNECT_TIMEOUT=300
SQLNET.EXPIRE_TIME=10

经过上面逐步优化完,业务恢复稳定,偶尔卡顿也消失。

优化措施汇总

通过上面分析具体问题汇总如下:
1、redo日志文件在业务繁忙来不及切换,checkpoint来不及。
2、sql执行时sql自动收集统计信息的功能开启着,影响性能消耗,系统消耗性能较大。
3、问题当天正在执行统计信息收集,进一步影响性能,周六周日每天6点开始,持续20个小时收集统计信息。

4、数据库层面针对有网络防火墙的优化。

建议解决如下:
1、调整优化器参数:
alter system set “_optimizer_ads_use_result_cache”=FALSE;
alter system set “_optimizer_dsdir_usage_control”=0;
alter system set “_optimizer_use_feedback”=FALSE;
alter system set optimizer_adaptive_plans=FALSE;

  1. 增加日志文件,由3个增加到6个

alter database add logfile group 4 (‘/odata/data/RON1122N3/datafile/redo_log4.log’) size 1024M;
alter database add logfile group 5 (‘/odata/data/RON1122N3/datafile/redo_log5.log’) size 1024M;
alter database add logfile group 6 (‘/odata/data/RON1122N3/datafile/redo_log6.log’) size 1024M;

  1. 修改统计信息收集时间,放在业务空闲时间

查询执行开始时间和周期:
SELECT w.window_name, w.repeat_interval, w.duration, w.enabled
FROM dba_autotask_window_clients c, dba_scheduler_windows w
WHERE c.window_name = w.window_name
AND c.optimizer_stats = ‘ENABLED’;
修改周六、周日统计信息收集开始时间及执行周几,如需修改22点开始,执行周期5个小时:
–SATURDAY
BEGIN
DBMS_SCHEDULER.SET_ATTRIBUTE (
name => ‘“SYS”.“SATURDAY_WINDOW”’,
attribute => ‘REPEAT_INTERVAL’,
VALUE => ‘FREQ=daily;BYDAY=SAT;BYHOUR=22;BYMINUTE=0;BYSECOND=0’);
END;
/

BEGIN
DBMS_SCHEDULER.SET_ATTRIBUTE(
name => ‘“SYS”.“SATURDAY_WINDOW”’,
attribute => ‘DURATION’,
value => numtodsinterval(300,‘minute’));
END;
/

–SUNDAY
BEGIN
DBMS_SCHEDULER.SET_ATTRIBUTE (
name => ‘“SYS”.“SUNDAY_WINDOW”’,
attribute => ‘REPEAT_INTERVAL’,
VALUE => ‘FREQ=daily;BYDAY=SUN;BYHOUR=22;BYMINUTE=0;BYSECOND=0’);
END;
/

BEGIN
DBMS_SCHEDULER.SET_ATTRIBUTE(
name => ‘“SYS”.“SUNDAY_WINDOW”’,
attribute => ‘DURATION’,
value => numtodsinterval(300,‘minute’));
END;
/

4、修改sqlnet.ora 增加如下配置,减少中间防火墙的影响:
SQLNET.INBOUND_CONNECT_TIMEOUT=300
SQLNET.EXPIRE_TIME=10

官方参考文档

1、Cardinality feedback produces poor subsequent plan (Doc ID 16837274.8)
2、Customer RecommendedHigh “Latch Free” Waits with Contention on ‘Result Cache: RC Latch’ when RESULT_CACHE_MODE = MANUAL on Oracle 12c (Doc ID 2002089.1)
3、High parse time in 12c for multi-table join SQL with SQL plan directives enabled (Doc ID 20807398.8)
4、“Connection timed out”, ORA-03113, and “Closed Connection” on Idle Connections (Doc ID 1060344.1)

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

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

相关文章

leetcode 26.删除有序数组中的重复项(python版)

需求 给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 , 返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nums 的唯一元素的数量为 k &#x…

浅谈扬州晶澳-年产3GW高性能太阳能光伏组件项目Acrel-3000WEB电能管理系统的设计及应用

摘要:在信息时代,电力信息系统的应用促迚了电力企业的収展,增强了电力系统运行的安全性与稳定性,对满足用户需求其有重要意义。随着国家电网改革政策的逐步推进和落实,Acrel-3000WEB电能管理系统运用互联网和大数据技术…

游戏开发丨基于Pygame的AI版贪吃蛇小游戏

文章目录 写在前面需求分析程序设计程序分析运行结果系列文章写在后面 写在前面 本期内容 基于pygame的AI版贪吃蛇小游戏 所需环境 pythonpycharm或anacondapygame 下载地址 https://download.csdn.net/download/m0_68111267/88789665 需求分析 本游戏使用Pygame模块开…

Spark入门01

1 Spark是什么 Spark是用于大规模数据处理的统一分析引擎。对任意类型的数据进行自定义计算。 可以计算:结构化、非结构化,半结构化的数据结构,支持使用Python,Java,Scala、Sql语言开发应用程序计算数据。 计算框架&a…

前端Vue select 下拉框详解以及监听事件

目录 简介 使用详解 演示示例 :key"option.value" :value"option.value" 区别 监听事件 简介 在 Vue 中&#xff0c;下拉框通常通过 <select> 元素与一系列的 <option> 元素来创建。Vue 的数据绑定和指令&#xff08;如 v-model 和 v-for…

ArcGIS雨涝风险模拟

所谓雨涝模拟分析&#xff0c; 就是模拟降雨量达到一定强度&#xff0c; 城市的哪些区域容易被淹没形成内涝。 雨涝模拟更重要的是提前预测&#xff0c; 可在预测结果的基础上进行实地勘察&#xff0c; 为项目规划、风险防控等工作提供指导作用。 雨涝模拟的原理和思想多种…

IT行业含金量较高的证书

在IT行业中&#xff0c;一些含金量较高的证书包括&#xff1a; 1. Cisco认证&#xff1a;如CCNA&#xff08;思科认证网络工程师&#xff09;、CCNP&#xff08;思科认证专业级网络工程师&#xff09;和CCIE&#xff08;思科认证专家级网络工程师&#xff09;等。这些认证证书…

基于springboot+vue的医院管理系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 研究背景…

Nginx负载均衡下的webshell连接

一、上传AntSword-Labs-master搭建负载均衡实验环境 搭建好docker环境&#xff0c;并且配置好docker-compose 我的Redhat的docker版本&#xff1a; 查看当前环境下的文件是否正确&#xff1a; 接着执行docker compose up -d 拉取环境 访问成功页面&#xff1a; 进入docker容器…

【RT-DETR有效改进】反向残差块网络EMO | 一种轻量级的CNN架构(轻量化网络,参数量下降约700W)

👑欢迎大家订阅本专栏,一起学习RT-DETR👑 一、本文介绍 本文给大家带来的改进机制是反向残差块网络EMO,其的构成块iRMB在之前我已经发过了,同时进行了二次创新,本文的网络就是由iRMB组成的网络EMO,所以我们二次创新之后的iEMA也可以用于这个网络中,再次形成二次…

【UEFI实战】Redfish的BIOS实现——生成EDK数据

生成Redfish文件 Redfish数据的表示形式&#xff0c;最常用的是JSON。将JSON表示的数据转换成C语言可以操作的结构体&#xff0c;是必不可少的步骤。当然如果手动转换的话&#xff0c;需要浪费大量的时间&#xff0c;因此DMTF组织开发了一个工具&#xff0c;用于将JSON数据快速…

MySQL的SQL MODE

目录 举例&#xff1a; --常见SQL mode --mysql8 sql_mode 官方文档 https://dev.mysql.com/doc/refman/8.0/en/sql-mode.html --查看全局的SQL MODE select global.sql_mode; --查看当前会话的SQL MODE select session.sql_mode; --运行时修改全局的SQL mode set gl…

Python笔记14-实战小游戏飞机大战(上)

文章目录 功能规划安装pygame绘制游戏窗口添加玩家飞机图像屏幕上绘制飞船代码重构驾驶飞船全屏模式射击 本示例源码地址 点击下载 功能规划 玩家控制一艘最初出现在屏幕底部中央的飞船。玩家可以使用箭头键左右移动飞船&#xff0c;还可使用空格键射击。游戏开始时&#xff…

敲黑板啦!CSGO游戏搬砖项目操作注意事项

CSGO游戏搬砖项目怎么赚钱的&#xff0c;利润在哪&#xff1f; 1.两个平台之间币种不一样&#xff0c;就存在一个汇率差&#xff0c;两平台装备价格也不一样&#xff0c;汇率差-价格差利润。 CSGO游戏搬砖项目具体有哪些操作步骤&#xff1f; 1、准备一台电脑&#xff0c;配置…

使用npm安装插件时报权限问题解决方法

使用npm安装插件时报权限问题解决方法 使用npm安装yarn时总报这个错误&#xff0c;显示权限问题&#xff0c;之前安装其它插件包的时候也有遇到过&#xff0c;总是潦草解决&#xff0c;今天仔细查了一下&#xff0c;是我没有管理端权限&#xff0c;应该是之前安装npm的时候没有…

IDEA 构建开发环境

本博客主要讲解了如何创建一个Maven构建Java项目。&#xff08;本文是创建一个用Maven构建项目的方式&#xff0c;所以需要对Maven有一定的了解&#xff09; IDEA 构建开发环境 一、创建一个空工程二、构建一个普通的Maven模块 一、创建一个空工程 创建一个空的工程 * 设置整…

VMware中CentOS 7解决网络问题

问题描述 在 VMware 中使用 CentOS 7 中使用 ping www.baidu.com 测试网络是否能正常连接。 出现了未知的名称和服务的问题&#xff1a; 解决方案一 在服务中检查 VMware NAT Service 是否开启 解决方案二 在控制面板中的网络适配器里检查 解决方案三 检查VMware中的网络适…

周报(20240128)

日期&#xff1a;2024.1.22 - 2024.1.28 本周工作&#xff1a; 1. 阅读论文 本周阅读了以下论文&#xff1a; 《BRAU-Net&#xff1a;用于医学图像分割的U形混合CNN-Transformer网络》 背景 精确的医学图像分割对于临床量化、疾病诊断、治疗计划和许多其他应用至关重要。基…

【Linux】CentOS 7 安装配置Python

目录 一、简介 二、下载与安装 1、更新软件包 2、安装编译所依赖的环境 3、下载压缩包 4、解压 5、配置编译参数 6、编译和安装 7、查看python版本 8、创建软连接 9、pip换源&#xff08;清华源为例&#xff09;、更新 一、简介 Linux系统一般都自带python&#xff…

Linux实验记录:使用LVM(逻辑卷管理器)

前言&#xff1a; 本文是一篇关于Linux系统初学者的实验记录。 参考书籍&#xff1a;《Linux就该这么学》 实验环境&#xff1a; VmwareWorkStation 17——虚拟机软件 RedHatEnterpriseLinux[RHEL]8——红帽操作系统 备注&#xff1a; 硬盘分好区或者部署为RAID磁盘阵列…